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

taosdata / TDengine / #4747

21 Sep 2025 11:53PM UTC coverage: 58.002% (-1.1%) from 59.065%
#4747

push

travis-ci

web-flow
fix: refine python taos error log matching in checkAsan.sh (#33029)

* fix: refine python taos error log matching in checkAsan.sh

* fix: improve python taos error log matching in checkAsan.sh

133398 of 293157 branches covered (45.5%)

Branch coverage included in aggregate %.

201778 of 284713 relevant lines covered (70.87%)

5539418.83 hits per line

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

76.5
/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) {
37,710✔
78
  pEncoder->allocSize = NODES_MSG_DEFAULT_LEN;
37,710✔
79
  pEncoder->offset = 0;
37,710✔
80
  pEncoder->tlvCount = 0;
37,710✔
81
  pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize);
37,710!
82
  return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS;
37,827!
83
}
84

85
static void clearTlvEncoder(STlvEncoder* pEncoder) { taosMemoryFree(pEncoder->pBuf); }
37,797!
86

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

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
9,051,893✔
94
  int32_t tlvLen = sizeof(STlv) + len;
9,051,893✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
9,051,893✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
16,664✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
16,664!
98
    if (NULL == pNewBuf) {
16,671!
99
      return terrno;
×
100
    }
101
    pEncoder->pBuf = pNewBuf;
16,671✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
9,051,900✔
104
  pTlv->type = htons(type);
9,051,900✔
105
  pTlv->len = htonl(len);
9,051,900✔
106
  memcpy(pTlv->value, pValue, len);
9,051,900✔
107
  pEncoder->offset += tlvLen;
9,051,900✔
108
  ++(pEncoder->tlvCount);
9,051,900✔
109
  return TSDB_CODE_SUCCESS;
9,051,900✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
12,510,723✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
12,510,723✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
12,914!
115
    if (NULL == pNewBuf) {
12,927!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
12,927✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
12,927✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
12,510,736✔
122
  pEncoder->offset += len;
12,510,736✔
123
  return TSDB_CODE_SUCCESS;
12,510,736✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
1,087,346✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
1,087,346✔
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) {
3,509,870✔
140
  value = htons(value);
3,509,870✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
3,509,870✔
142
}
143

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
1,454,795✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
1,454,795✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
2,612,610✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
2,612,610✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
762,915✔
223
  if (NULL == pValue) {
762,915✔
224
    return TSDB_CODE_SUCCESS;
5,199✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
757,716✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
1,757,393✔
230
  int16_t len = strlen(pValue);
1,757,393✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
1,757,393✔
232
  if (TSDB_CODE_SUCCESS == code) {
1,760,464!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
1,760,667✔
234
  }
235
  return code;
1,759,619✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
5,741,402✔
243
  if (NULL == pObj) {
5,741,402✔
244
    return TSDB_CODE_SUCCESS;
622,388✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
5,119,014✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
9,592✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
9,592!
250
    if (NULL == pNewBuf) {
9,593!
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
9,593✔
254
  }
255

256
  int32_t start = pEncoder->offset;
5,119,015✔
257
  pEncoder->offset += sizeof(STlv);
5,119,015✔
258
  int32_t code = func(pObj, pEncoder);
5,119,015✔
259
  if (TSDB_CODE_SUCCESS == code) {
5,146,463!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
5,149,926✔
261
    pTlv->type = htons(type);
5,149,926✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
5,149,926✔
263
  }
264
  ++(pEncoder->tlvCount);
5,146,463✔
265
  return code;
5,146,463✔
266
}
267

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

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
57,275✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
57,275✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
112,511✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
55,241✔
291
  }
292
  return code;
57,270✔
293
}
294

295
static int32_t tlvGetNextTlv(STlvDecoder* pDecoder, STlv** pTlv) {
365,719,279✔
296
  if (pDecoder->offset == pDecoder->bufSize) {
365,719,279✔
297
    *pTlv = NULL;
83,661,650✔
298
    return TSDB_CODE_SUCCESS;
83,661,650✔
299
  }
300

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

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
52,958,978✔
312

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

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

335
static int32_t tlvDecodeI8(STlv* pTlv, int8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
38,106,409✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
187,261,097✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
187,261,097✔
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) {
183,833,210✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
183,833,210✔
351
  if (TSDB_CODE_SUCCESS == code) {
182,876,188!
352
    *pValue = ntohs(*pValue);
189,356,961✔
353
  }
354
  return code;
182,876,188✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
53,729,916✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
53,729,916✔
359
  if (TSDB_CODE_SUCCESS == code) {
53,692,108!
360
    *pValue = ntohl(*pValue);
53,707,211✔
361
  }
362
  return code;
53,692,108✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
97,966,376✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
97,966,376✔
367
  if (TSDB_CODE_SUCCESS == code) {
97,885,060!
368
    *pValue = ntohl(*pValue);
97,942,083✔
369
  }
370
  return code;
97,885,060✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
2,899,765✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
2,899,765✔
375
  if (TSDB_CODE_SUCCESS == code) {
2,898,477!
376
    *pValue = ntohll(*pValue);
2,898,781✔
377
  }
378
  return code;
2,898,477✔
379
}
380

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

394
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
15,997,057✔
395

396
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
75,579,702✔
397
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
75,579,702✔
398
}
399

400
static int32_t tlvDecodeU16(STlv* pTlv, uint16_t* pValue) {
39,704✔
401
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
39,704✔
402
  if (TSDB_CODE_SUCCESS == code) {
39,702!
403
    *pValue = ntohs(*pValue);
39,729✔
404
  }
405
  return code;
39,702✔
406
}
407

408
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
2,072,905✔
409
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,072,905✔
410
  if (TSDB_CODE_SUCCESS == code) {
2,072,888!
411
    *pValue = ntohs(*pValue);
2,073,178✔
412
  }
413
  return code;
2,072,888✔
414
}
415

416
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
2,430,835✔
417
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
2,430,835✔
418
  if (TSDB_CODE_SUCCESS == code) {
2,430,626!
419
    *pValue = ntohll(*pValue);
2,430,636✔
420
  }
421
  return code;
2,430,626✔
422
}
423

424
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
16,581,476✔
425
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
16,581,476✔
426
  if (TSDB_CODE_SUCCESS == code) {
16,576,334!
427
    *pValue = ntohll(*pValue);
16,580,533✔
428
  }
429
  return code;
16,576,334✔
430
}
431

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

441
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
1,132,588✔
442
  volatile int64_t temp = 0;
1,132,588✔
443
  int32_t code = tlvDecodeValueI64(pDecoder, (int64_t*)&temp);
1,132,588✔
444
  if (TSDB_CODE_SUCCESS == code) {
1,132,762!
445
    *pValue = *(double*)&temp;
1,132,788✔
446
  }
447
  return code;
1,132,762✔
448
}
449

450
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
187,047,966✔
451
  switch (len) {
187,047,966!
452
    case 1:
161,955,360✔
453
      *(int8_t*)pValue = value;
161,955,360✔
454
      break;
161,955,360✔
455
    case 2:
×
456
      *(int16_t*)pValue = value;
×
457
      break;
×
458
    case 4:
26,025,190✔
459
      *(int32_t*)pValue = value;
26,025,190✔
460
      break;
26,025,190✔
461
    default:
×
462
      return TSDB_CODE_FAILED;
×
463
  }
464
  return TSDB_CODE_SUCCESS;
187,980,550✔
465
}
466

467
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
29,389,540✔
468
  int8_t  value = 0;
29,389,540✔
469
  int32_t code = tlvDecodeI8(pTlv, &value);
29,389,540✔
470
  if (TSDB_CODE_SUCCESS == code) {
29,374,624!
471
    code = convertIntegerType(value, pValue, sizeof(bool));
29,375,193✔
472
  }
473
  return code;
29,388,842✔
474
}
475

476
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
133,501,191✔
477
  int8_t  value = 0;
133,501,191✔
478
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
133,501,191✔
479
  if (TSDB_CODE_SUCCESS == code) {
133,148,693!
480
    code = convertIntegerType(value, pValue, sizeof(bool));
133,157,493✔
481
  }
482
  return code;
133,106,739✔
483
}
484

485
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
11,877,895✔
486
  int32_t value = 0;
11,877,895✔
487
  int32_t code = tlvDecodeI32(pTlv, &value);
11,877,895✔
488
  if (TSDB_CODE_SUCCESS == code) {
11,876,413!
489
    code = convertIntegerType(value, pValue, len);
11,876,550✔
490
  }
491
  return code;
11,876,225✔
492
}
493

494
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
14,206,450✔
495
  int32_t value = 0;
14,206,450✔
496
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
14,206,450✔
497
  if (TSDB_CODE_SUCCESS == code) {
14,187,472!
498
    code = convertIntegerType(value, pValue, len);
14,187,978✔
499
  }
500
  return code;
14,182,215✔
501
}
502

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

511
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
92,026,746✔
512
  int16_t len = 0;
92,026,746✔
513
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
92,026,746✔
514
  if (TSDB_CODE_SUCCESS == code) {
93,347,116!
515
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
93,363,412✔
516
  }
517
  return code;
92,659,590✔
518
}
519

520
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
1,938,695✔
521
  *pValue = taosStrndup(pTlv->value, pTlv->len);
1,938,695!
522
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
1,963,117!
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) {
320,846✔
535
  memcpy(pValue, pTlv->value, pTlv->len);
320,846✔
536
  return TSDB_CODE_SUCCESS;
320,846✔
537
}
538

539
static int32_t tlvDecodeObjFromTlv(STlv* pTlv, FToObject func, void* pObj) {
136,117,997✔
540
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
136,117,997✔
541
  return func(&decoder, pObj);
136,117,997✔
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) {
38,529✔
554
  int32_t code = TSDB_CODE_SUCCESS;
38,529✔
555
  int32_t i = 0;
38,529✔
556
  STlv*   pTlv = NULL;
38,529✔
557
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
78,232!
558
  return code;
38,561✔
559
}
560

561
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
2,457,319✔
562
                                   int32_t* pNum) {
563
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
2,457,319✔
564
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
4,530,597✔
565
    code = func(pDecoder, (char*)pArray + i * itemSize);
2,072,763✔
566
  }
567
  return code;
2,457,834✔
568
}
569

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

575
static int32_t tlvDecodeDynObjFromTlv(STlv* pTlv, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
62,580,561✔
576
  int32_t code = makeFunc(pTlv->type, (SNode**)pObj);
62,580,561✔
577
  if (NULL == *pObj) {
62,540,547!
578
    return code;
×
579
  }
580
  return tlvDecodeObjFromTlv(pTlv, toFunc, *pObj);
62,540,547✔
581
}
582

583
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
62,675,108✔
584
  STlv*   pTlv = NULL;
62,675,108✔
585
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
62,675,108✔
586
  if (TSDB_CODE_SUCCESS == code) {
62,574,945!
587
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
62,578,767✔
588
  }
589
  return code;
61,728,400✔
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) {
639,811✔
595
  const SDataType* pNode = (const SDataType*)pObj;
639,811✔
596

597
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
639,811✔
598
  if (TSDB_CODE_SUCCESS == code) {
639,350!
599
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
639,391✔
600
  }
601
  if (TSDB_CODE_SUCCESS == code) {
639,141!
602
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
639,205✔
603
  }
604
  if (TSDB_CODE_SUCCESS == code) {
638,489!
605
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
638,606✔
606
  }
607

608
  return code;
638,955✔
609
}
610

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

614
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
703,431✔
615
  if (TSDB_CODE_SUCCESS == code) {
704,485!
616
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
704,546✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
704,464✔
619
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
704,350✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
703,920✔
622
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
703,868✔
623
  }
624

625
  return code;
704,003✔
626
}
627

628
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
34,801,212✔
629
  SDataType* pNode = (SDataType*)pObj;
34,801,212✔
630

631
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
34,801,212✔
632
  if (TSDB_CODE_SUCCESS == code) {
34,607,519!
633
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
34,610,788✔
634
  }
635
  if (TSDB_CODE_SUCCESS == code) {
34,296,139!
636
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
34,303,877✔
637
  }
638
  if (TSDB_CODE_SUCCESS == code) {
34,046,299!
639
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
34,066,060✔
640
  }
641

642
  return code;
34,060,456✔
643
}
644

645
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
7,431,958✔
646
  SDataType* pNode = (SDataType*)pObj;
7,431,958✔
647

648
  int32_t code = TSDB_CODE_SUCCESS;
7,431,958✔
649
  STlv*   pTlv = NULL;
7,431,958✔
650
  tlvForEach(pDecoder, pTlv, code) {
37,080,866!
651
    switch (pTlv->type) {
29,663,574!
652
      case DATA_TYPE_CODE_TYPE:
7,428,367✔
653
        code = tlvDecodeI8(pTlv, &pNode->type);
7,428,367✔
654
        break;
7,422,734✔
655
      case DATA_TYPE_CODE_PRECISION:
7,417,349✔
656
        code = tlvDecodeU8(pTlv, &pNode->precision);
7,417,349✔
657
        break;
7,412,904✔
658
      case DATA_TYPE_CODE_SCALE:
7,410,912✔
659
        code = tlvDecodeU8(pTlv, &pNode->scale);
7,410,912✔
660
        break;
7,403,815✔
661
      case DATA_TYPE_CODE_BYTES:
7,406,946✔
662
        code = tlvDecodeI32(pTlv, &pNode->bytes);
7,406,946✔
663
        break;
7,409,455✔
664
      default:
×
665
        break;
×
666
    }
667
  }
668

669
  return code;
7,414,985✔
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) {
704,527✔
675
  const SExprNode* pNode = (const SExprNode*)pObj;
704,527✔
676
  int32_t          code = tlvEncodeObj(pEncoder, EXPR_CODE_RES_TYPE, dataTypeToMsg, &pNode->resType);
704,527✔
677
  if (TSDB_CODE_SUCCESS == code) {
704,186!
678
    code = tlvEncodeI32(pEncoder, EXPR_CODE_BIND_TUPLE_FUNC_IDX, pNode->relatedTo);
704,192✔
679
  }
680
  if (TSDB_CODE_SUCCESS == code) {
704,559!
681
    code = tlvEncodeI32(pEncoder, EXPR_CODE_TUPLE_FUNC_IDX, pNode->bindExprID);
704,658✔
682
  }
683
  return code;
703,417✔
684
}
685

686
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
7,438,733✔
687
  SExprNode* pNode = (SExprNode*)pObj;
7,438,733✔
688

689
  int32_t code = TSDB_CODE_SUCCESS;
7,438,733✔
690
  STlv*   pTlv = NULL;
7,438,733✔
691
  tlvForEach(pDecoder, pTlv, code) {
29,655,012!
692
    switch (pTlv->type) {
22,248,048!
693
      case EXPR_CODE_RES_TYPE:
7,434,784✔
694
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
7,434,784✔
695
        break;
7,408,790✔
696
      case EXPR_CODE_BIND_TUPLE_FUNC_IDX:
7,408,300✔
697
        code = tlvDecodeI32(pTlv, &pNode->relatedTo);
7,408,300✔
698
        break;
7,402,417✔
699
      case EXPR_CODE_TUPLE_FUNC_IDX:
7,404,964✔
700
        code = tlvDecodeI32(pTlv, &pNode->bindExprID);
7,404,964✔
701
        break;
7,405,072✔
702
      default:
×
703
        break;
×
704
    }
705
  }
706

707
  return code;
7,395,105✔
708
}
709

710
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
711

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

715
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
235,032✔
716
  if (TSDB_CODE_SUCCESS == code) {
234,763!
717
    code = tlvEncodeValueI32(pEncoder, pNode->node.relatedTo);
234,769✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
234,665!
720
    code = tlvEncodeValueI32(pEncoder, pNode->node.bindExprID);
234,687✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
234,660!
723
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
234,699✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
234,768!
726
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
234,808✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
234,687!
729
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
234,739✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
234,713!
732
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
234,750✔
733
  }
734
  if (TSDB_CODE_SUCCESS == code) {
234,741!
735
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
234,785✔
736
  }
737
  if (TSDB_CODE_SUCCESS == code) {
235,016!
738
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
235,065✔
739
  }
740
  if (TSDB_CODE_SUCCESS == code) {
234,981!
741
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
235,039✔
742
  }
743
  if (TSDB_CODE_SUCCESS == code) {
234,972!
744
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
235,035✔
745
  }
746
  if (TSDB_CODE_SUCCESS == code) {
235,034!
747
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
235,107✔
748
  }
749
  if (TSDB_CODE_SUCCESS == code) {
234,882!
750
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
234,963✔
751
  }
752
  if (TSDB_CODE_SUCCESS == code) {
234,790!
753
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
234,882✔
754
  }
755
  if (TSDB_CODE_SUCCESS == code) {
234,835!
756
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
234,908✔
757
  }  
758
  if (TSDB_CODE_SUCCESS == code) {
234,773!
759
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
234,859✔
760
  }
761
  if (TSDB_CODE_SUCCESS == code) {
234,932!
762
    code = tlvEncodeValueBool(pEncoder, pNode->isPrimTs);
235,023✔
763
  }
764
  if (TSDB_CODE_SUCCESS == code) {
234,864!
765
    code = tlvEncodeValueBool(pEncoder, pNode->hasDep);
234,959✔
766
  }
767
  if (TSDB_CODE_SUCCESS == code) {
234,730!
768
    code = tlvEncodeValueBool(pEncoder, pNode->hasRef);
234,826✔
769
  }
770
  if (TSDB_CODE_SUCCESS == code) {
234,671!
771
    code = tlvEncodeValueCStr(pEncoder, pNode->refDbName);
234,776✔
772
  }
773
  if (TSDB_CODE_SUCCESS == code) {
234,976!
774
    code = tlvEncodeValueCStr(pEncoder, pNode->refTableName);
235,085✔
775
  }
776
  if (TSDB_CODE_SUCCESS == code) {
234,925!
777
    code = tlvEncodeValueCStr(pEncoder, pNode->refColName);
235,046✔
778
  }
779
  return code;
235,079✔
780
}
781

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

786
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
12,545,472✔
787
  SColumnNode* pNode = (SColumnNode*)pObj;
12,545,472✔
788

789
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
12,545,472✔
790
    if (TSDB_CODE_SUCCESS == code) {
12,409,580!
791
    code = tlvDecodeValueI32(pDecoder, &pNode->node.relatedTo);
12,409,899✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
12,401,752!
794
    code = tlvDecodeValueI32(pDecoder, &pNode->node.bindExprID);
12,411,231✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
12,388,694!
797
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
12,399,211✔
798
  }
799
  if (TSDB_CODE_SUCCESS == code) {
12,407,514!
800
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
12,417,669✔
801
  }
802
  if (TSDB_CODE_SUCCESS == code) {
12,397,159!
803
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
12,407,508✔
804
  }
805
  if (TSDB_CODE_SUCCESS == code) {
12,595,315!
806
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
12,606,814✔
807
  }
808
  if (TSDB_CODE_SUCCESS == code) {
12,568,338!
809
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
12,579,983✔
810
  }
811
  if (TSDB_CODE_SUCCESS == code) {
12,535,832!
812
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
12,546,996✔
813
  }
814
  if (TSDB_CODE_SUCCESS == code) {
12,549,368!
815
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
12,560,677✔
816
  }
817
  if (TSDB_CODE_SUCCESS == code) {
12,553,086!
818
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
12,564,541✔
819
  }
820
  if (TSDB_CODE_SUCCESS == code) {
12,563,312!
821
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
12,574,934✔
822
  }
823
  if (TSDB_CODE_SUCCESS == code) {
12,596,038!
824
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
12,608,271✔
825
  }
826
  if (TSDB_CODE_SUCCESS == code) {
12,595,442!
827
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
12,608,480✔
828
  }
829
  if (TSDB_CODE_SUCCESS == code) {
12,512,618!
830
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
12,526,299✔
831
  }  
832
  if (TSDB_CODE_SUCCESS == code) {
12,469,556!
833
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
12,483,644✔
834
  }
835
  if (TSDB_CODE_SUCCESS == code) {
12,596,121!
836
    code = tlvDecodeValueBool(pDecoder, &pNode->isPrimTs);
12,610,077✔
837
  }
838
  if (TSDB_CODE_SUCCESS == code) {
12,516,885!
839
    code = tlvDecodeValueBool(pDecoder, &pNode->hasDep);
12,531,457✔
840
  }
841
  if (TSDB_CODE_SUCCESS == code) {
12,442,134!
842
    code = tlvDecodeValueBool(pDecoder, &pNode->hasRef);
12,457,316✔
843
  }
844
  if (TSDB_CODE_SUCCESS == code) {
12,428,820!
845
    code = tlvDecodeValueCStr(pDecoder, pNode->refDbName);
12,444,476✔
846
  }
847
  if (TSDB_CODE_SUCCESS == code) {
12,544,691!
848
    code = tlvDecodeValueCStr(pDecoder, pNode->refTableName);
12,560,258✔
849
  }
850
  if (TSDB_CODE_SUCCESS == code) {
12,547,931!
851
    code = tlvDecodeValueCStr(pDecoder, pNode->refColName);
12,563,655✔
852
  }
853
  return code;
12,580,717✔
854
}
855

856
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
12,542,353✔
857
  SColumnNode* pNode = (SColumnNode*)pObj;
12,542,353✔
858

859
  int32_t code = TSDB_CODE_SUCCESS;
12,542,353✔
860
  STlv*   pTlv = NULL;
12,542,353✔
861
  tlvForEach(pDecoder, pTlv, code) {
25,121,471!
862
    switch (pTlv->type) {
12,545,265!
863
      case COLUMN_CODE_INLINE_ATTRS:
12,545,265✔
864
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
12,545,265✔
865
        break;
12,579,118✔
866
      default:
×
867
        break;
×
868
    }
869
  }
870

871
  return code;
12,561,393✔
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) {
638,830✔
885
  const SValueNode* pNode = (const SValueNode*)pObj;
638,830✔
886

887
  int32_t code = TSDB_CODE_SUCCESS;
638,830✔
888
  switch (pNode->node.resType.type) {
638,830!
889
    case TSDB_DATA_TYPE_NULL:
×
890
      break;
×
891
    case TSDB_DATA_TYPE_BOOL:
138✔
892
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
138✔
893
      break;
138✔
894
    case TSDB_DATA_TYPE_TINYINT:
635,143✔
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);
635,143✔
900
      break;
638,663✔
901
    case TSDB_DATA_TYPE_UTINYINT:
6✔
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);
6✔
906
      break;
6✔
907
    case TSDB_DATA_TYPE_FLOAT:
376✔
908
    case TSDB_DATA_TYPE_DOUBLE:
909
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
376✔
910
      break;
376✔
911
    case TSDB_DATA_TYPE_VARCHAR:
3,463✔
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));
3,463✔
916
      break;
3,464✔
917
    case TSDB_DATA_TYPE_JSON:
×
918
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
×
919
      break;
248✔
920
    case TSDB_DATA_TYPE_DECIMAL:
×
921
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, pNode->node.resType.bytes);
×
922
      break;
×
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
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, blobDataTLen(pNode->datum.p));
×
928
      break;
×
929
      // todo
930
    default:
×
931
      break;
×
932
  }
933

934
  return code;
642,599✔
935
}
936

937
static int32_t valueNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
642,999✔
938
  const SValueNode* pNode = (const SValueNode*)pObj;
642,999✔
939

940
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
642,999✔
941
  if (TSDB_CODE_SUCCESS == code) {
639,694!
942
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
639,700✔
943
  }
944
  if (TSDB_CODE_SUCCESS == code) {
644,254✔
945
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
644,225✔
946
  }
947
  if (TSDB_CODE_SUCCESS == code) {
639,422!
948
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
639,479✔
949
  }
950
  if (TSDB_CODE_SUCCESS == code) {
638,081!
951
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
638,195✔
952
  }
953
  if (TSDB_CODE_SUCCESS == code) {
636,321!
954
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
636,518✔
955
  }
956
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
636,129!
957
    code = datumToMsg(pNode, pEncoder);
636,570✔
958
  }
959

960
  return code;
642,123✔
961
}
962

963
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
2,896,496✔
964
  SValueNode* pNode = (SValueNode*)pObj;
2,896,496✔
965

966
  int32_t code = TSDB_CODE_SUCCESS;
2,896,496✔
967
  switch (pNode->node.resType.type) {
2,896,496!
968
    case TSDB_DATA_TYPE_NULL:
×
969
      break;
×
970
    case TSDB_DATA_TYPE_BOOL:
46,590✔
971
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
46,590✔
972
      *(bool*)&pNode->typeData = pNode->datum.b;
46,592✔
973
      break;
46,592✔
974
    case TSDB_DATA_TYPE_TINYINT:
1,021,273✔
975
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,021,273✔
976
      *(int8_t*)&pNode->typeData = pNode->datum.i;
1,021,235✔
977
      break;
1,021,235✔
978
    case TSDB_DATA_TYPE_SMALLINT:
45,981✔
979
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
45,981✔
980
      *(int16_t*)&pNode->typeData = pNode->datum.i;
45,983✔
981
      break;
45,983✔
982
    case TSDB_DATA_TYPE_INT:
58,595✔
983
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
58,595✔
984
      *(int32_t*)&pNode->typeData = pNode->datum.i;
58,586✔
985
      break;
58,586✔
986
    case TSDB_DATA_TYPE_BIGINT:
1,177,035✔
987
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,177,035✔
988
      *(int64_t*)&pNode->typeData = pNode->datum.i;
1,176,205✔
989
      break;
1,176,205✔
990
    case TSDB_DATA_TYPE_TIMESTAMP:
51,886✔
991
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
51,886✔
992
      *(int64_t*)&pNode->typeData = pNode->datum.i;
51,885✔
993
      break;
51,885✔
994
    case TSDB_DATA_TYPE_UTINYINT:
59✔
995
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
59✔
996
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
59✔
997
      break;
59✔
998
    case TSDB_DATA_TYPE_USMALLINT:
15✔
999
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
15✔
1000
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
15✔
1001
      break;
15✔
1002
    case TSDB_DATA_TYPE_UINT:
17✔
1003
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
17✔
1004
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
17✔
1005
      break;
17✔
1006
    case TSDB_DATA_TYPE_UBIGINT:
64✔
1007
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
64✔
1008
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
64✔
1009
      break;
64✔
1010
    case TSDB_DATA_TYPE_FLOAT:
213✔
1011
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
213✔
1012
      *(float*)&pNode->typeData = pNode->datum.d;
213✔
1013
      break;
213✔
1014
    case TSDB_DATA_TYPE_DOUBLE:
177,154✔
1015
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
177,154✔
1016
      *(double*)&pNode->typeData = pNode->datum.d;
177,172✔
1017
      break;
177,172✔
1018
    case TSDB_DATA_TYPE_NCHAR:
320,352✔
1019
    case TSDB_DATA_TYPE_VARCHAR:
1020
    case TSDB_DATA_TYPE_VARBINARY:
1021
    case TSDB_DATA_TYPE_GEOMETRY: {
1022
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
320,352!
1023
        code = TSDB_CODE_FAILED;
×
1024
        break;
×
1025
      }
1026
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
320,352!
1027
      if (NULL == pNode->datum.p) {
320,774!
1028
        code = terrno;
×
1029
        break;
×
1030
      }
1031
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
320,774✔
1032
      if (TSDB_CODE_SUCCESS == code) {
320,695!
1033
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
320,718✔
1034
      }
1035
      break;
320,695✔
1036
    }
1037
    case TSDB_DATA_TYPE_JSON: {
12✔
1038
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
12!
1039
        code = TSDB_CODE_FAILED;
×
1040
        break;
×
1041
      }
1042
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
12✔
1043
      break;
12✔
1044
    }
1045
    case TSDB_DATA_TYPE_DECIMAL:
×
1046
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
1047
      if (!pNode->datum.p) {
×
1048
        code = terrno;
×
1049
        break;
×
1050
      }
1051
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
×
1052
      break;
×
1053
    case TSDB_DATA_TYPE_DECIMAL64:
×
1054
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
×
1055
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
1056
      break;
×
1057
    case TSDB_DATA_TYPE_BLOB:
×
1058
      if (pTlv->len > pNode->node.resType.bytes + BLOBSTR_HEADER_SIZE) {
×
1059
        code = TSDB_CODE_FAILED;
×
1060
        break;
×
1061
      }
1062
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
×
1063
      if (NULL == pNode->datum.p) {
×
1064
        code = terrno;
×
1065
        break;
×
1066
      }
1067
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
×
1068
      if (TSDB_CODE_SUCCESS == code) {
×
1069
        blobDataSetLen(pNode->datum.p, pTlv->len - BLOBSTR_HEADER_SIZE);
×
1070
      }
1071
      break;
×
1072
      // todo
1073
    default:
×
1074
      break;
×
1075
  }
1076

1077
  return code;
2,895,983✔
1078
}
1079

1080
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
2,917,418✔
1081
  SValueNode* pNode = (SValueNode*)pObj;
2,917,418✔
1082

1083
  int32_t code = TSDB_CODE_SUCCESS;
2,917,418✔
1084
  STlv*   pTlv = NULL;
2,917,418✔
1085
  tlvForEach(pDecoder, pTlv, code) {
22,293,190!
1086
    switch (pTlv->type) {
19,377,602!
1087
      case VALUE_CODE_EXPR_BASE:
2,913,937✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,913,937✔
1089
        break;
2,894,967✔
1090
      case VALUE_CODE_LITERAL:
1,938,639✔
1091
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
1,938,639✔
1092
        break;
1,962,249✔
1093
      case VALUE_CODE_FLAG:
2,914,872✔
1094
        code = tlvDecodeI32(pTlv, &pNode->flag);
2,914,872✔
1095
        break;
2,909,689✔
1096
      case VALUE_CODE_TRANSLATE:
2,907,435✔
1097
        code = tlvDecodeBool(pTlv, &pNode->translate);
2,907,435✔
1098
        break;
2,905,778✔
1099
      case VALUE_CODE_NOT_RESERVED:
2,904,474✔
1100
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
2,904,474✔
1101
        break;
2,903,185✔
1102
      case VALUE_CODE_IS_NULL:
2,902,412✔
1103
        code = tlvDecodeBool(pTlv, &pNode->isNull);
2,902,412✔
1104
        break;
2,902,332✔
1105
      case VALUE_CODE_DATUM:
2,895,833✔
1106
        code = msgToDatum(pTlv, pNode);
2,895,833✔
1107
        break;
2,897,572✔
1108
      default:
×
1109
        break;
×
1110
    }
1111
  }
1112

1113
  return code;
2,902,267✔
1114
}
1115

1116
enum { OPERATOR_CODE_EXPR_BASE = 1, OPERATOR_CODE_OP_TYPE, OPERATOR_CODE_LEFT, OPERATOR_CODE_RIGHT };
1117

1118
static int32_t operatorNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
10,460✔
1119
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
10,460✔
1120

1121
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
10,460✔
1122
  if (TSDB_CODE_SUCCESS == code) {
10,461!
1123
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
10,461✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
10,459✔
1126
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
10,458✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
10,450✔
1129
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
10,449✔
1130
  }
1131

1132
  return code;
10,459✔
1133
}
1134

1135
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
1,413,700✔
1136
  SOperatorNode* pNode = (SOperatorNode*)pObj;
1,413,700✔
1137

1138
  int32_t code = TSDB_CODE_SUCCESS;
1,413,700✔
1139
  STlv*   pTlv = NULL;
1,413,700✔
1140
  tlvForEach(pDecoder, pTlv, code) {
6,887,226!
1141
    switch (pTlv->type) {
5,473,930!
1142
      case OPERATOR_CODE_EXPR_BASE:
1,413,653✔
1143
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
1,413,653✔
1144
        break;
1,412,189✔
1145
      case OPERATOR_CODE_OP_TYPE:
1,412,193✔
1146
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
1,412,193✔
1147
        break;
1,412,601✔
1148
      case OPERATOR_CODE_LEFT:
1,412,624✔
1149
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
1,412,624✔
1150
        break;
1,413,795✔
1151
      case OPERATOR_CODE_RIGHT:
1,235,460✔
1152
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
1,235,460✔
1153
        break;
1,234,941✔
1154
      default:
×
1155
        break;
×
1156
    }
1157
  }
1158

1159
  return code;
1,411,812✔
1160
}
1161

1162
enum { LOGIC_COND_CODE_EXPR_BASE = 1, LOGIC_COND_CODE_COND_TYPE, LOGIC_COND_CODE_PARAMETERS };
1163

1164
static int32_t logicConditionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,264✔
1165
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
2,264✔
1166

1167
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
2,264✔
1168
  if (TSDB_CODE_SUCCESS == code) {
2,266!
1169
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
2,266✔
1170
  }
1171
  if (TSDB_CODE_SUCCESS == code) {
2,266✔
1172
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
2,265✔
1173
  }
1174

1175
  return code;
2,259✔
1176
}
1177

1178
static int32_t msgToLogicConditionNode(STlvDecoder* pDecoder, void* pObj) {
266,257✔
1179
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
266,257✔
1180

1181
  int32_t code = TSDB_CODE_SUCCESS;
266,257✔
1182
  STlv*   pTlv = NULL;
266,257✔
1183
  tlvForEach(pDecoder, pTlv, code) {
1,065,008!
1184
    switch (pTlv->type) {
798,682!
1185
      case LOGIC_COND_CODE_EXPR_BASE:
266,253✔
1186
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
266,253✔
1187
        break;
266,200✔
1188
      case LOGIC_COND_CODE_COND_TYPE:
266,201✔
1189
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
266,201✔
1190
        break;
266,222✔
1191
      case LOGIC_COND_CODE_PARAMETERS:
266,228✔
1192
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
266,228✔
1193
        break;
266,329✔
1194
      default:
×
1195
        break;
×
1196
    }
1197
  }
1198

1199
  return code;
266,254✔
1200
}
1201

1202
enum {
1203
  FUNCTION_CODE_EXPR_BASE = 1,
1204
  FUNCTION_CODE_FUNCTION_NAME,
1205
  FUNCTION_CODE_FUNCTION_ID,
1206
  FUNCTION_CODE_FUNCTION_TYPE,
1207
  FUNCTION_CODE_PARAMETERS,
1208
  FUNCTION_CODE_UDF_BUF_SIZE,
1209
  FUNCTION_NODE_HAS_PK,
1210
  FUNCTION_NODE_PK_BYTES,
1211
  FUNCTION_CODE_IS_MERGE_FUNC,
1212
  FUNCTION_CODE_MERGE_FUNC_OF,
1213
  FUNCTION_CODE_TRIM_TYPE,
1214
  FUNCTION_SRC_FUNC_INPUT_TYPE,
1215
};
1216

1217
static int32_t functionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
51,631✔
1218
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
51,631✔
1219

1220
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
51,631✔
1221
  if (TSDB_CODE_SUCCESS == code) {
51,627!
1222
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
51,627✔
1223
  }
1224
  if (TSDB_CODE_SUCCESS == code) {
51,657!
1225
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
51,658✔
1226
  }
1227
  if (TSDB_CODE_SUCCESS == code) {
51,647!
1228
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
51,649✔
1229
  }
1230
  if (TSDB_CODE_SUCCESS == code) {
51,634✔
1231
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
51,630✔
1232
  }
1233
  if (TSDB_CODE_SUCCESS == code) {
51,633!
1234
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
51,634✔
1235
  }
1236
  if (TSDB_CODE_SUCCESS == code) {
51,640!
1237
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
51,643✔
1238
  }
1239
  if (TSDB_CODE_SUCCESS == code) {
51,637!
1240
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
51,639✔
1241
  }  
1242
  if (TSDB_CODE_SUCCESS == code) {
51,638!
1243
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
51,640✔
1244
  }
1245
  if (TSDB_CODE_SUCCESS == code) {
51,638!
1246
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
51,640✔
1247
  }
1248
  if (TSDB_CODE_SUCCESS == code) {
51,642!
1249
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
51,645✔
1250
  }
1251
  if (TSDB_CODE_SUCCESS == code) {
51,638!
1252
    code = tlvEncodeObj(pEncoder, FUNCTION_SRC_FUNC_INPUT_TYPE, dataTypeInlineToMsg, &pNode->srcFuncInputType);
51,642✔
1253
  }
1254

1255
  return code;
51,630✔
1256
}
1257

1258
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
2,845,293✔
1259
  SFunctionNode* pNode = (SFunctionNode*)pObj;
2,845,293✔
1260

1261
  int32_t code = TSDB_CODE_SUCCESS;
2,845,293✔
1262
  STlv*   pTlv = NULL;
2,845,293✔
1263
  tlvForEach(pDecoder, pTlv, code) {
36,432,298!
1264
    switch (pTlv->type) {
33,181,757!
1265
      case FUNCTION_CODE_EXPR_BASE:
2,844,656✔
1266
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,844,656✔
1267
        break;
2,838,851✔
1268
      case FUNCTION_CODE_FUNCTION_NAME:
2,838,749✔
1269
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
2,838,749✔
1270
        break;
2,839,070✔
1271
      case FUNCTION_CODE_FUNCTION_ID:
2,838,554✔
1272
        code = tlvDecodeI32(pTlv, &pNode->funcId);
2,838,554✔
1273
        break;
2,838,576✔
1274
      case FUNCTION_CODE_FUNCTION_TYPE:
2,838,334✔
1275
        code = tlvDecodeI32(pTlv, &pNode->funcType);
2,838,334✔
1276
        break;
2,837,705✔
1277
      case FUNCTION_CODE_PARAMETERS:
2,320,270✔
1278
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
2,320,270✔
1279
        break;
2,328,714✔
1280
      case FUNCTION_CODE_UDF_BUF_SIZE:
2,847,907✔
1281
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
2,847,907✔
1282
        break;
2,846,408✔
1283
      case FUNCTION_NODE_HAS_PK:
2,845,797✔
1284
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
2,845,797✔
1285
        break;
2,845,352✔
1286
      case FUNCTION_NODE_PK_BYTES:
2,844,454✔
1287
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
2,844,454✔
1288
        break;  
2,844,834✔
1289
      case FUNCTION_CODE_IS_MERGE_FUNC:
2,844,155✔
1290
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
2,844,155✔
1291
        break;
2,843,842✔
1292
      case FUNCTION_CODE_MERGE_FUNC_OF:
2,843,032✔
1293
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
2,843,032✔
1294
        break;
2,842,556✔
1295
      case FUNCTION_CODE_TRIM_TYPE:
2,842,362✔
1296
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
2,842,362✔
1297
        break;
2,842,807✔
1298
      case FUNCTION_SRC_FUNC_INPUT_TYPE:
2,843,224✔
1299
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->srcFuncInputType);
2,843,224✔
1300
      default:
2,838,290✔
1301
        break;
2,838,290✔
1302
    }
1303
  }
1304

1305
  return code;
3,240,856✔
1306
}
1307

1308
enum { ORDER_BY_EXPR_CODE_EXPR = 1, ORDER_BY_EXPR_CODE_ORDER, ORDER_BY_EXPR_CODE_NULL_ORDER };
1309

1310
static int32_t orderByExprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,365✔
1311
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
4,365✔
1312

1313
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
4,365✔
1314
  if (TSDB_CODE_SUCCESS == code) {
4,365!
1315
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
4,365✔
1316
  }
1317
  if (TSDB_CODE_SUCCESS == code) {
4,365!
1318
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
4,365✔
1319
  }
1320

1321
  return code;
4,365✔
1322
}
1323

1324
static int32_t msgToOrderByExprNode(STlvDecoder* pDecoder, void* pObj) {
247,373✔
1325
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
247,373✔
1326

1327
  int32_t code = TSDB_CODE_SUCCESS;
247,373✔
1328
  STlv*   pTlv = NULL;
247,373✔
1329
  tlvForEach(pDecoder, pTlv, code) {
989,371!
1330
    switch (pTlv->type) {
742,058!
1331
      case ORDER_BY_EXPR_CODE_EXPR:
247,376✔
1332
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
247,376✔
1333
        break;
247,351✔
1334
      case ORDER_BY_EXPR_CODE_ORDER:
247,351✔
1335
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
247,351✔
1336
        break;
247,333✔
1337
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
247,331✔
1338
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
247,331✔
1339
        break;
247,314✔
1340
      default:
×
1341
        break;
×
1342
    }
1343
  }
1344

1345
  return code;
247,291✔
1346
}
1347

1348
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1349

1350
static int32_t limitNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
12,100✔
1351
  const SLimitNode* pNode = (const SLimitNode*)pObj;
12,100✔
1352

1353
  int32_t code = tlvEncodeObj(pEncoder, LIMIT_CODE_LIMIT, nodeToMsg, pNode->limit);
12,100✔
1354
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
12,103!
1355
    code = tlvEncodeObj(pEncoder, LIMIT_CODE_OFFSET, nodeToMsg, pNode->offset);
397✔
1356
  }
1357

1358
  return code;
12,102✔
1359
}
1360

1361
static int32_t msgToLimitNode(STlvDecoder* pDecoder, void* pObj) {
165,650✔
1362
  SLimitNode* pNode = (SLimitNode*)pObj;
165,650✔
1363

1364
  int32_t code = TSDB_CODE_SUCCESS;
165,650✔
1365
  STlv*   pTlv = NULL;
165,650✔
1366
  tlvForEach(pDecoder, pTlv, code) {
400,613!
1367
    switch (pTlv->type) {
235,124!
1368
      case LIMIT_CODE_LIMIT:
165,648✔
1369
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->limit);
165,648✔
1370
        break;
165,497✔
1371
      case LIMIT_CODE_OFFSET:
69,476✔
1372
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->offset);
69,476✔
1373
        break;
69,466✔
1374
      default:
×
1375
        break;
×
1376
    }
1377
  }
1378

1379
  return code;
165,418✔
1380
}
1381

1382
enum { NAME_CODE_TYPE = 1, NAME_CODE_ACCT_ID, NAME_CODE_DB_NAME, NAME_CODE_TABLE_NAME };
1383

1384
static int32_t nameToMsg(const void* pObj, STlvEncoder* pEncoder) {
34,574✔
1385
  const SName* pNode = (const SName*)pObj;
34,574✔
1386

1387
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
34,574✔
1388
  if (TSDB_CODE_SUCCESS == code) {
34,582!
1389
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
34,586✔
1390
  }
1391
  if (TSDB_CODE_SUCCESS == code) {
34,589!
1392
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
34,594✔
1393
  }
1394
  if (TSDB_CODE_SUCCESS == code) {
34,598!
1395
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
34,604✔
1396
  }
1397

1398
  return code;
34,599✔
1399
}
1400

1401
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
1,211,575✔
1402
  SName* pNode = (SName*)pObj;
1,211,575✔
1403

1404
  int32_t code = TSDB_CODE_SUCCESS;
1,211,575✔
1405
  STlv*   pTlv = NULL;
1,211,575✔
1406
  tlvForEach(pDecoder, pTlv, code) {
6,057,864!
1407
    switch (pTlv->type) {
4,846,470!
1408
      case NAME_CODE_TYPE:
1,211,731✔
1409
        code = tlvDecodeU8(pTlv, &pNode->type);
1,211,731✔
1410
        break;
1,211,669✔
1411
      case NAME_CODE_ACCT_ID:
1,211,680✔
1412
        code = tlvDecodeI32(pTlv, &pNode->acctId);
1,211,680✔
1413
        break;
1,211,647✔
1414
      case NAME_CODE_DB_NAME:
1,211,629✔
1415
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
1,211,629✔
1416
        break;
1,211,468✔
1417
      case NAME_CODE_TABLE_NAME:
1,211,430✔
1418
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
1,211,430✔
1419
        break;
1,211,505✔
1420
      default:
×
1421
        break;
×
1422
    }
1423
  }
1424

1425
  return code;
1,211,694✔
1426
}
1427

1428
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1429

1430
static int32_t timeWindowToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,850✔
1431
  const STimeWindow* pNode = (const STimeWindow*)pObj;
4,850✔
1432

1433
  int32_t code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_START_KEY, pNode->skey);
4,850✔
1434
  if (TSDB_CODE_SUCCESS == code) {
4,852!
1435
    code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_END_KEY, pNode->ekey);
4,852✔
1436
  }
1437

1438
  return code;
4,852✔
1439
}
1440

1441
static int32_t msgToTimeWindow(STlvDecoder* pDecoder, void* pObj) {
42,263✔
1442
  STimeWindow* pNode = (STimeWindow*)pObj;
42,263✔
1443

1444
  int32_t code = TSDB_CODE_SUCCESS;
42,263✔
1445
  STlv*   pTlv = NULL;
42,263✔
1446
  tlvForEach(pDecoder, pTlv, code) {
126,792!
1447
    switch (pTlv->type) {
84,529!
1448
      case TIME_WINDOW_CODE_START_KEY:
42,263✔
1449
        code = tlvDecodeI64(pTlv, &pNode->skey);
42,263✔
1450
        break;
42,266✔
1451
      case TIME_WINDOW_CODE_END_KEY:
42,266✔
1452
        code = tlvDecodeI64(pTlv, &pNode->ekey);
42,266✔
1453
        break;
42,263✔
1454
      default:
×
1455
        break;
×
1456
    }
1457
  }
1458

1459
  return code;
42,265✔
1460
}
1461

1462
enum { NODE_LIST_CODE_DATA_TYPE = 1, NODE_LIST_CODE_NODE_LIST };
1463

1464
static int32_t nodeListNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
889✔
1465
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
889✔
1466

1467
  int32_t code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_DATA_TYPE, dataTypeInlineToMsg, &pNode->node.resType);
889✔
1468
  if (TSDB_CODE_SUCCESS == code) {
890!
1469
    code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_NODE_LIST, nodeListToMsg, pNode->pNodeList);
890✔
1470
  }
1471

1472
  return code;
889✔
1473
}
1474

1475
static int32_t msgToNodeListNode(STlvDecoder* pDecoder, void* pObj) {
42,342✔
1476
  SNodeListNode* pNode = (SNodeListNode*)pObj;
42,342✔
1477

1478
  int32_t code = TSDB_CODE_SUCCESS;
42,342✔
1479
  STlv*   pTlv = NULL;
42,342✔
1480
  tlvForEach(pDecoder, pTlv, code) {
127,022!
1481
    switch (pTlv->type) {
84,669!
1482
      case NODE_LIST_CODE_DATA_TYPE:
42,343✔
1483
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
42,343✔
1484
        break;
42,322✔
1485
      case NODE_LIST_CODE_NODE_LIST:
42,326✔
1486
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
42,326✔
1487
        break;
42,358✔
1488
      default:
×
1489
        break;
×
1490
    }
1491
  }
1492

1493
  return code;
42,351✔
1494
}
1495

1496
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1497

1498
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
192,647✔
1499
  const STargetNode* pNode = (const STargetNode*)pObj;
192,647✔
1500

1501
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
192,647✔
1502
  if (TSDB_CODE_SUCCESS == code) {
192,706!
1503
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
192,717✔
1504
  }
1505

1506
  return code;
192,648✔
1507
}
1508

1509
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
192,659✔
1510
  const STargetNode* pNode = (const STargetNode*)pObj;
192,659✔
1511

1512
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
192,659✔
1513
  if (TSDB_CODE_SUCCESS == code) {
192,640!
1514
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
192,646✔
1515
  }
1516

1517
  return code;
192,618✔
1518
}
1519

1520
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
10,664,193✔
1521
  STargetNode* pNode = (STargetNode*)pObj;
10,664,193✔
1522

1523
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
10,664,193✔
1524
  if (TSDB_CODE_SUCCESS == code) {
10,694,561!
1525
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
10,695,283✔
1526
  }
1527

1528
  return code;
10,688,897✔
1529
}
1530

1531
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
10,678,308✔
1532
  STargetNode* pNode = (STargetNode*)pObj;
10,678,308✔
1533

1534
  int32_t code = TSDB_CODE_SUCCESS;
10,678,308✔
1535
  STlv*   pTlv = NULL;
10,678,308✔
1536
  tlvForEach(pDecoder, pTlv, code) {
32,009,868!
1537
    switch (pTlv->type) {
21,346,581!
1538
      case TARGET_CODE_INLINE_ATTRS:
10,666,965✔
1539
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
10,666,965✔
1540
        break;
10,688,249✔
1541
      case TARGET_CODE_EXPR:
10,679,616✔
1542
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
10,679,616✔
1543
        break;
10,643,311✔
1544
      default:
×
1545
        break;
×
1546
    }
1547
  }
1548

1549
  return code;
10,606,881✔
1550
}
1551

1552
enum { TIME_RANGE_CODE_START = 1,
1553
       TIME_RANGE_CODE_END };
1554

1555
static int32_t timeRangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1556
  const STimeRangeNode* pNode = (const STimeRangeNode*)pObj;
×
1557

1558
  int32_t code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_START, nodeToMsg, pNode->pStart);
×
1559
  if (TSDB_CODE_SUCCESS == code) {
×
1560
    code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_END, nodeToMsg, pNode->pEnd);
×
1561
  }
1562

1563
  return code;
×
1564
}
1565

1566
static int32_t msgToTimeRangeNode(STlvDecoder* pDecoder, void* pObj) {
×
1567
  STimeRangeNode* pNode = (STimeRangeNode*)pObj;
×
1568

1569
  int32_t code = TSDB_CODE_SUCCESS;
×
1570
  STlv*   pTlv = NULL;
×
1571
  tlvForEach(pDecoder, pTlv, code) {
×
1572
    switch (pTlv->type) {
×
1573
      case TIME_RANGE_CODE_START:
×
1574
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStart);
×
1575
        break;
×
1576
      case TIME_RANGE_CODE_END:
×
1577
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEnd);
×
1578
        break;
×
1579
      default:
×
1580
        break;
×
1581
    }
1582
  }
1583

1584
  return code;
×
1585
}
1586

1587
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1588

1589
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
121,576✔
1590
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
121,576✔
1591

1592
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
121,576✔
1593
  if (TSDB_CODE_SUCCESS == code) {
121,601!
1594
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
121,607✔
1595
  }
1596
  if (TSDB_CODE_SUCCESS == code) {
121,590!
1597
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
121,597✔
1598
  }
1599
  if (TSDB_CODE_SUCCESS == code) {
121,580!
1600
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
121,589✔
1601
  }
1602

1603
  return code;
121,587✔
1604
}
1605

1606
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
121,607✔
1607
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
121,607✔
1608

1609
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
121,607✔
1610
  if (TSDB_CODE_SUCCESS == code) {
121,594!
1611
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
121,596✔
1612
  }
1613

1614
  return code;
121,523✔
1615
}
1616

1617
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
4,921,465✔
1618
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
4,921,465✔
1619

1620
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
4,921,465✔
1621
  if (TSDB_CODE_SUCCESS == code) {
4,923,546!
1622
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
4,923,614✔
1623
  }
1624
  if (TSDB_CODE_SUCCESS == code) {
4,921,044!
1625
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
4,921,144✔
1626
  }
1627
  if (TSDB_CODE_SUCCESS == code) {
4,918,664!
1628
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
4,918,806✔
1629
  }
1630

1631
  return code;
4,917,910✔
1632
}
1633

1634
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
4,922,552✔
1635
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
4,922,552✔
1636

1637
  int32_t code = TSDB_CODE_SUCCESS;
4,922,552✔
1638
  STlv*   pTlv = NULL;
4,922,552✔
1639
  tlvForEach(pDecoder, pTlv, code) {
14,762,691!
1640
    switch (pTlv->type) {
9,839,884!
1641
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
4,921,951✔
1642
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
4,921,951✔
1643
        break;
4,917,883✔
1644
      case DATA_BLOCK_DESC_CODE_SLOTS:
4,917,933✔
1645
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
4,917,933✔
1646
        break;
4,922,256✔
1647
      default:
×
1648
        break;
×
1649
    }
1650
  }
1651

1652
  return code;
4,919,842✔
1653
}
1654

1655
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1656

1657
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
353,677✔
1658
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
353,677✔
1659

1660
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
353,677✔
1661
  if (TSDB_CODE_SUCCESS == code) {
353,940!
1662
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
353,952✔
1663
  }
1664
  if (TSDB_CODE_SUCCESS == code) {
353,771!
1665
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
353,776✔
1666
  }
1667
  if (TSDB_CODE_SUCCESS == code) {
353,606!
1668
    code = tlvEncodeValueBool(pEncoder, pNode->output);
353,621✔
1669
  }
1670
  if (TSDB_CODE_SUCCESS == code) {
353,374!
1671
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
353,415✔
1672
  }
1673

1674
  return code;
353,399✔
1675
}
1676

1677
static int32_t slotDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
353,709✔
1678
  return tlvEncodeObj(pEncoder, SLOT_DESC_CODE_INLINE_ATTRS, slotDescNodeInlineToMsg, pObj);
353,709✔
1679
}
1680

1681
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
19,299,513✔
1682
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
19,299,513✔
1683

1684
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
19,299,513✔
1685
  if (TSDB_CODE_SUCCESS == code) {
19,415,507!
1686
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
19,417,099✔
1687
  }
1688
  if (TSDB_CODE_SUCCESS == code) {
18,907,875!
1689
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
18,910,865✔
1690
  }
1691
  if (TSDB_CODE_SUCCESS == code) {
18,889,025!
1692
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
18,892,676✔
1693
  }
1694
  if (TSDB_CODE_SUCCESS == code) {
18,817,766!
1695
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
18,822,653✔
1696
  }
1697

1698
  return code;
18,820,110✔
1699
}
1700

1701
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
19,353,296✔
1702
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
19,353,296✔
1703

1704
  int32_t code = TSDB_CODE_SUCCESS;
19,353,296✔
1705
  STlv*   pTlv = NULL;
19,353,296✔
1706
  tlvForEach(pDecoder, pTlv, code) {
38,176,324!
1707
    switch (pTlv->type) {
19,325,739!
1708
      case SLOT_DESC_CODE_INLINE_ATTRS:
19,325,739✔
1709
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
19,325,739✔
1710
        break;
18,823,028✔
1711
      default:
×
1712
        break;
×
1713
    }
1714
  }
1715

1716
  return code;
18,813,631✔
1717
}
1718

1719
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1720

1721
static int32_t epInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
55,137✔
1722
  const SEp* pNode = (const SEp*)pObj;
55,137✔
1723

1724
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
55,137✔
1725
  if (TSDB_CODE_SUCCESS == code) {
55,233!
1726
    code = tlvEncodeValueU16(pEncoder, pNode->port);
55,233✔
1727
  }
1728

1729
  return code;
55,231✔
1730
}
1731

1732
static int32_t epToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,044✔
1733
  const SEp* pNode = (const SEp*)pObj;
1,044✔
1734

1735
  int32_t code = tlvEncodeCStr(pEncoder, EP_CODE_FQDN, pNode->fqdn);
1,044✔
1736
  if (TSDB_CODE_SUCCESS == code) {
1,044!
1737
    code = tlvEncodeU16(pEncoder, EP_CODE_port, pNode->port);
1,044✔
1738
  }
1739

1740
  return code;
1,044✔
1741
}
1742

1743
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
2,072,659✔
1744
  SEp* pNode = (SEp*)pObj;
2,072,659✔
1745

1746
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
2,072,659✔
1747
  if (TSDB_CODE_SUCCESS == code) {
2,073,078!
1748
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
2,073,089✔
1749
  }
1750

1751
  return code;
2,073,197✔
1752
}
1753

1754
static int32_t msgToEp(STlvDecoder* pDecoder, void* pObj) {
39,701✔
1755
  SEp* pNode = (SEp*)pObj;
39,701✔
1756

1757
  int32_t code = TSDB_CODE_SUCCESS;
39,701✔
1758
  STlv*   pTlv = NULL;
39,701✔
1759
  tlvForEach(pDecoder, pTlv, code) {
119,137!
1760
    switch (pTlv->type) {
79,409!
1761
      case EP_CODE_FQDN:
39,705✔
1762
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
39,705✔
1763
        break;
39,707✔
1764
      case EP_CODE_port:
39,704✔
1765
        code = tlvDecodeU16(pTlv, &pNode->port);
39,704✔
1766
        break;
39,729✔
1767
      default:
×
1768
        break;
×
1769
    }
1770
  }
1771

1772
  return code;
39,722✔
1773
}
1774

1775
enum { EP_SET_CODE_IN_USE = 1, EP_SET_CODE_NUM_OF_EPS, EP_SET_CODE_EPS };
1776

1777
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
57,279✔
1778
  const SEpSet* pNode = (const SEpSet*)pObj;
57,279✔
1779

1780
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
57,279✔
1781
  if (TSDB_CODE_SUCCESS == code) {
57,286!
1782
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
57,288✔
1783
  }
1784

1785
  return code;
57,277✔
1786
}
1787

1788
static int32_t epSetToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,043✔
1789
  const SEpSet* pNode = (const SEpSet*)pObj;
1,043✔
1790

1791
  int32_t code = tlvEncodeI8(pEncoder, EP_SET_CODE_IN_USE, pNode->inUse);
1,043✔
1792
  if (TSDB_CODE_SUCCESS == code) {
1,043!
1793
    code = tlvEncodeI8(pEncoder, EP_SET_CODE_NUM_OF_EPS, pNode->numOfEps);
1,043✔
1794
  }
1795
  if (TSDB_CODE_SUCCESS == code) {
1,042!
1796
    code = tlvEncodeObjArray(pEncoder, EP_SET_CODE_EPS, epToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
1,042✔
1797
  }
1798

1799
  return code;
1,044✔
1800
}
1801

1802
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
2,457,437✔
1803
  SEpSet* pNode = (SEpSet*)pObj;
2,457,437✔
1804

1805
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
2,457,437✔
1806
  if (TSDB_CODE_SUCCESS == code) {
2,457,421✔
1807
    int32_t numOfEps = 0;
2,457,414✔
1808
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
2,457,414✔
1809
    pNode->numOfEps = numOfEps;
2,457,821✔
1810
  }
1811

1812
  return code;
2,457,828✔
1813
}
1814

1815
static int32_t msgToEpSet(STlvDecoder* pDecoder, void* pObj) {
38,531✔
1816
  SEpSet* pNode = (SEpSet*)pObj;
38,531✔
1817

1818
  int32_t code = TSDB_CODE_SUCCESS;
38,531✔
1819
  STlv*   pTlv = NULL;
38,531✔
1820
  tlvForEach(pDecoder, pTlv, code) {
154,163!
1821
    switch (pTlv->type) {
115,609!
1822
      case EP_SET_CODE_IN_USE:
38,539✔
1823
        code = tlvDecodeI8(pTlv, &pNode->inUse);
38,539✔
1824
        break;
38,538✔
1825
      case EP_SET_CODE_NUM_OF_EPS:
38,536✔
1826
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
38,536✔
1827
        break;
38,533✔
1828
      case EP_SET_CODE_EPS:
38,534✔
1829
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
38,534✔
1830
        break;
38,561✔
1831
      default:
×
1832
        break;
×
1833
    }
1834
  }
1835

1836
  return code;
38,549✔
1837
}
1838

1839
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1840

1841
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
57,244✔
1842
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
57,244✔
1843

1844
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
57,244✔
1845
  if (TSDB_CODE_SUCCESS == code) {
57,289!
1846
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
57,289✔
1847
  }
1848

1849
  return code;
57,277✔
1850
}
1851

1852
static int32_t queryNodeAddrToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1853
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
×
1854

1855
  int32_t code = tlvEncodeI32(pEncoder, QUERY_NODE_ADDR_CODE_NODE_ID, pNode->nodeId);
×
1856
  if (TSDB_CODE_SUCCESS == code) {
×
1857
    code = tlvEncodeObj(pEncoder, QUERY_NODE_ADDR_CODE_EP_SET, epSetToMsg, &pNode->epSet);
×
1858
  }
1859

1860
  return code;
×
1861
}
1862

1863
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
2,457,425✔
1864
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
2,457,425✔
1865

1866
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
2,457,425✔
1867
  if (TSDB_CODE_SUCCESS == code) {
2,457,523!
1868
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
2,457,537✔
1869
  }
1870

1871
  return code;
2,457,822✔
1872
}
1873

1874
static int32_t msgToQueryNodeAddr(STlvDecoder* pDecoder, void* pObj) {
×
1875
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
×
1876

1877
  int32_t code = TSDB_CODE_SUCCESS;
×
1878
  STlv*   pTlv = NULL;
×
1879
  tlvForEach(pDecoder, pTlv, code) {
×
1880
    switch (pTlv->type) {
×
1881
      case QUERY_NODE_ADDR_CODE_NODE_ID:
×
1882
        code = tlvDecodeI32(pTlv, &pNode->nodeId);
×
1883
        break;
×
1884
      case QUERY_NODE_ADDR_CODE_EP_SET:
×
1885
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
×
1886
        break;
×
1887
    }
1888
  }
1889

1890
  return code;
×
1891
}
1892

1893
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1894

1895
static int32_t downstreamSourceNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
19,447✔
1896
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
19,447✔
1897

1898
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
19,447✔
1899
  if (TSDB_CODE_SUCCESS == code) {
19,447!
1900
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
19,447✔
1901
  }
1902
  if (TSDB_CODE_SUCCESS == code) {
19,447!
1903
    code = tlvEncodeValueU64(pEncoder, pNode->sId);
19,447✔
1904
  }
1905
  if (TSDB_CODE_SUCCESS == code) {
19,447!
1906
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
19,447✔
1907
  }
1908
  if (TSDB_CODE_SUCCESS == code) {
19,447!
1909
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
19,447✔
1910
  }
1911
  if (TSDB_CODE_SUCCESS == code) {
19,447!
1912
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
19,447✔
1913
  }
1914

1915
  return code;
19,447✔
1916
}
1917

1918
static int32_t downstreamSourceNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
19,447✔
1919
  return tlvEncodeObj(pEncoder, DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS, downstreamSourceNodeInlineToMsg, pObj);
19,447✔
1920
}
1921

1922
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
852,765✔
1923
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
852,765✔
1924

1925
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
852,765✔
1926
  if (TSDB_CODE_SUCCESS == code) {
852,912!
1927
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
852,912✔
1928
  }
1929
  if (TSDB_CODE_SUCCESS == code) {
852,895✔
1930
    code = tlvDecodeValueU64(pDecoder, &pNode->sId);
852,885✔
1931
  }
1932
  if (TSDB_CODE_SUCCESS == code) {
852,865✔
1933
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
852,855✔
1934
  }
1935
  if (TSDB_CODE_SUCCESS == code) {
852,826✔
1936
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
852,818✔
1937
  }
1938
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
852,788✔
1939
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
852,783✔
1940
  }
1941

1942
  return code;
852,789✔
1943
}
1944

1945
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
852,766✔
1946
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
852,766✔
1947

1948
  int32_t code = TSDB_CODE_SUCCESS;
852,766✔
1949
  STlv*   pTlv = NULL;
852,766✔
1950
  tlvForEach(pDecoder, pTlv, code) {
1,705,555!
1951
    switch (pTlv->type) {
852,769!
1952
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
852,769✔
1953
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
852,769✔
1954
        break;
852,789✔
1955
      default:
×
1956
        break;
×
1957
    }
1958
  }
1959

1960
  return code;
852,779✔
1961
}
1962

1963
enum { WHEN_THEN_CODE_EXPR_BASE = 1, WHEN_THEN_CODE_WHEN, WHEN_THEN_CODE_THEN };
1964

1965
static int32_t whenThenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4✔
1966
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
4✔
1967

1968
  int32_t code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
4✔
1969
  if (TSDB_CODE_SUCCESS == code) {
4!
1970
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_WHEN, nodeToMsg, pNode->pWhen);
4✔
1971
  }
1972
  if (TSDB_CODE_SUCCESS == code) {
4!
1973
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_THEN, nodeToMsg, pNode->pThen);
4✔
1974
  }
1975

1976
  return code;
4✔
1977
}
1978

1979
static int32_t msgToWhenThenNode(STlvDecoder* pDecoder, void* pObj) {
5,263✔
1980
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
5,263✔
1981

1982
  int32_t code = TSDB_CODE_SUCCESS;
5,263✔
1983
  STlv*   pTlv = NULL;
5,263✔
1984
  tlvForEach(pDecoder, pTlv, code) {
21,046!
1985
    switch (pTlv->type) {
15,784!
1986
      case WHEN_THEN_CODE_EXPR_BASE:
5,263✔
1987
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,263✔
1988
        break;
5,258✔
1989
      case WHEN_THEN_CODE_WHEN:
5,258✔
1990
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
5,258✔
1991
        break;
5,261✔
1992
      case WHEN_THEN_CODE_THEN:
5,263✔
1993
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
5,263✔
1994
        break;
5,264✔
1995
      default:
×
1996
        break;
×
1997
    }
1998
  }
1999

2000
  return code;
5,261✔
2001
}
2002

2003
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
2004

2005
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4✔
2006
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
4✔
2007

2008
  int32_t code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
4✔
2009
  if (TSDB_CODE_SUCCESS == code) {
4!
2010
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_CASE, nodeToMsg, pNode->pCase);
4✔
2011
  }
2012
  if (TSDB_CODE_SUCCESS == code) {
4!
2013
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_ELSE, nodeToMsg, pNode->pElse);
4✔
2014
  }
2015
  if (TSDB_CODE_SUCCESS == code) {
4!
2016
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_WHEN_THEN_LIST, nodeListToMsg, pNode->pWhenThenList);
4✔
2017
  }
2018

2019
  return code;
4✔
2020
}
2021

2022
static int32_t msgToCaseWhenNode(STlvDecoder* pDecoder, void* pObj) {
4,299✔
2023
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
4,299✔
2024

2025
  int32_t code = TSDB_CODE_SUCCESS;
4,299✔
2026
  STlv*   pTlv = NULL;
4,299✔
2027
  tlvForEach(pDecoder, pTlv, code) {
16,985!
2028
    switch (pTlv->type) {
12,685!
2029
      case CASE_WHEN_CODE_EXPR_BASE:
4,299✔
2030
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
4,299✔
2031
        break;
4,293✔
2032
      case CASE_WHEN_CODE_CASE:
419✔
2033
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
419✔
2034
        break;
419✔
2035
      case CASE_WHEN_CODE_ELSE:
3,670✔
2036
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
3,670✔
2037
        break;
3,674✔
2038
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
4,297✔
2039
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
4,297✔
2040
        break;
4,300✔
2041
      default:
×
2042
        break;
×
2043
    }
2044
  }
2045

2046
  return code;
4,301✔
2047
}
2048

2049
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
2050

2051
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
2052
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
×
2053

2054
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
×
2055
  if (TSDB_CODE_SUCCESS == code) {
×
2056
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
×
2057
  }
2058

2059
  return code;
×
2060
}
2061

2062
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
829✔
2063
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
829✔
2064

2065
  int32_t code = TSDB_CODE_SUCCESS;
829✔
2066
  STlv*   pTlv = NULL;
829✔
2067
  tlvForEach(pDecoder, pTlv, code) {
2,487!
2068
    switch (pTlv->type) {
1,658!
2069
      case WINDOW_OFFSET_CODE_START_OFFSET:
829✔
2070
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartOffset);
829✔
2071
        break;
829✔
2072
      case WINDOW_OFFSET_CODE_END_OFFSET:
829✔
2073
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndOffset);
829✔
2074
        break;
829✔
2075
      default:
×
2076
        break;
×
2077
    }
2078
  }
2079

2080
  return code;
829✔
2081
}
2082

2083

2084
enum {
2085
  PHY_NODE_CODE_OUTPUT_DESC = 1,
2086
  PHY_NODE_CODE_CONDITIONS,
2087
  PHY_NODE_CODE_CHILDREN,
2088
  PHY_NODE_CODE_LIMIT,
2089
  PHY_NODE_CODE_SLIMIT,
2090
  PHY_NODE_CODE_INPUT_TS_ORDER,
2091
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
2092
  PHY_NODE_CODE_DYNAMIC_OP,
2093
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
2094
};
2095

2096
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
85,530✔
2097
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
85,530✔
2098

2099
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
85,530✔
2100
  if (TSDB_CODE_SUCCESS == code) {
85,499!
2101
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
85,502✔
2102
  }
2103
  if (TSDB_CODE_SUCCESS == code) {
85,486!
2104
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
85,489✔
2105
  }
2106
  if (TSDB_CODE_SUCCESS == code) {
85,526!
2107
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
85,533✔
2108
  }
2109
  if (TSDB_CODE_SUCCESS == code) {
85,527!
2110
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
85,534✔
2111
  }
2112
  if (TSDB_CODE_SUCCESS == code) {
85,525!
2113
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
85,534✔
2114
  }
2115
  if (TSDB_CODE_SUCCESS == code) {
85,552!
2116
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
85,566✔
2117
  }
2118
  if (TSDB_CODE_SUCCESS == code) {
85,531!
2119
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
85,545✔
2120
  }
2121
  if (TSDB_CODE_SUCCESS == code) { 
85,526!
2122
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
85,535✔
2123
  }
2124

2125
  return code;
85,535✔
2126
}
2127

2128
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
3,317,346✔
2129
  SPhysiNode* pNode = (SPhysiNode*)pObj;
3,317,346✔
2130

2131
  int32_t code = TSDB_CODE_SUCCESS;
3,317,346✔
2132
  STlv*   pTlv = NULL;
3,317,346✔
2133
  tlvForEach(pDecoder, pTlv, code) {
21,970,602!
2134
    switch (pTlv->type) {
18,654,447!
2135
      case PHY_NODE_CODE_OUTPUT_DESC:
3,317,349✔
2136
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
3,317,349✔
2137
        break;
3,317,639✔
2138
      case PHY_NODE_CODE_CONDITIONS:
376,163✔
2139
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
376,163✔
2140
        break;
375,933✔
2141
      case PHY_NODE_CODE_CHILDREN:
1,528,620✔
2142
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
1,528,620✔
2143
        break;
1,528,695✔
2144
      case PHY_NODE_CODE_LIMIT:
158,159✔
2145
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
158,159✔
2146
        break;
157,968✔
2147
      case PHY_NODE_CODE_SLIMIT:
7,090✔
2148
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
7,090✔
2149
        break;
7,087✔
2150
      case PHY_NODE_CODE_INPUT_TS_ORDER:
3,317,383✔
2151
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
3,317,383✔
2152
        break;
3,316,874✔
2153
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
3,316,881✔
2154
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
3,316,881✔
2155
        break;
3,316,588✔
2156
      case PHY_NODE_CODE_DYNAMIC_OP:
3,316,566✔
2157
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
3,316,566✔
2158
        break;
3,316,355✔
2159
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
3,316,236✔
2160
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
3,316,236✔
2161
        break;
3,316,117✔
2162
      default:
×
2163
        break;
×
2164
    }
2165
  }
2166

2167
  return code;
3,312,424✔
2168
}
2169

2170
enum {
2171
  PHY_SCAN_CODE_BASE_NODE = 1,
2172
  PHY_SCAN_CODE_SCAN_COLS,
2173
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2174
  PHY_SCAN_CODE_BASE_UID,
2175
  PHY_SCAN_CODE_BASE_SUID,
2176
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2177
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2178
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN,
2179
  PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN
2180
};
2181

2182
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
34,570✔
2183
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
34,570✔
2184

2185
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
34,570✔
2186
  if (TSDB_CODE_SUCCESS == code) {
34,567!
2187
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
34,568✔
2188
  }
2189
  if (TSDB_CODE_SUCCESS == code) {
34,574!
2190
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
34,575✔
2191
  }
2192
  if (TSDB_CODE_SUCCESS == code) {
34,584!
2193
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
34,587✔
2194
  }
2195
  if (TSDB_CODE_SUCCESS == code) {
34,600!
2196
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
34,604✔
2197
  }
2198
  if (TSDB_CODE_SUCCESS == code) {
34,584!
2199
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
34,588✔
2200
  }
2201
  if (TSDB_CODE_SUCCESS == code) {
34,579✔
2202
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
34,578✔
2203
  }
2204
  if (TSDB_CODE_SUCCESS == code) {
34,598✔
2205
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
34,597✔
2206
  }
2207
  if (TSDB_CODE_SUCCESS == code) {
34,586!
2208
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN, pNode->virtualStableScan);
34,586✔
2209
  }
2210

2211
  return code;
34,581✔
2212
}
2213

2214
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
1,212,455✔
2215
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
1,212,455✔
2216

2217
  int32_t code = TSDB_CODE_SUCCESS;
1,212,455✔
2218
  STlv*   pTlv = NULL;
1,212,455✔
2219
  tlvForEach(pDecoder, pTlv, code) {
11,267,354!
2220
    switch (pTlv->type) {
10,031,584!
2221
      case PHY_SCAN_CODE_BASE_NODE:
1,212,607✔
2222
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,212,607✔
2223
        break;
1,211,971✔
2224
      case PHY_SCAN_CODE_SCAN_COLS:
1,178,679✔
2225
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
1,178,679✔
2226
        break;
1,179,430✔
2227
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
392,132✔
2228
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
392,132✔
2229
        break;
392,134✔
2230
      case PHY_SCAN_CODE_BASE_UID:
1,212,813✔
2231
        code = tlvDecodeU64(pTlv, &pNode->uid);
1,212,813✔
2232
        break;
1,212,509✔
2233
      case PHY_SCAN_CODE_BASE_SUID:
1,212,386✔
2234
        code = tlvDecodeU64(pTlv, &pNode->suid);
1,212,386✔
2235
        break;
1,212,157✔
2236
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
1,212,052✔
2237
        code = tlvDecodeI8(pTlv, &pNode->tableType);
1,212,052✔
2238
        break;
1,211,912✔
2239
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
1,211,858✔
2240
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
1,211,858✔
2241
        break;
1,211,472✔
2242
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
1,211,506✔
2243
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
1,211,506✔
2244
        break;
1,211,607✔
2245
      case PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN:
1,211,668✔
2246
        code = tlvDecodeBool(pTlv, &pNode->virtualStableScan);
1,211,668✔
2247
      default:
1,211,707✔
2248
        break;
1,211,707✔
2249
    }
2250
  }
2251

2252
  return code;
1,233,797✔
2253
}
2254

2255
enum {
2256
  PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN = 1,
2257
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS,
2258
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT,
2259
  PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS,
2260
  PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS,
2261
  PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS,
2262
  PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE,
2263
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED,
2264
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE,
2265
};
2266

2267
static int32_t physiVirtualTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,362✔
2268
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode *)pObj;
2,362✔
2269

2270
  int32_t code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
2,362✔
2271

2272
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2273
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS, nodeListToMsg, pNode->pGroupTags);
2,362✔
2274
  }
2275

2276
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2277
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT, pNode->groupSort);
2,362✔
2278
  }
2279

2280
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2281
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS, pNode->scanAllCols);
2,362✔
2282
  }
2283

2284
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2285
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
2,362✔
2286
  }
2287

2288
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2289
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
2,362✔
2290
  }
2291

2292
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2293
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
2,362✔
2294
  }
2295

2296
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2297
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED, pNode->igExpired);
2,362✔
2298
  }
2299

2300
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2301
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE, pNode->igCheckUpdate);
2,362✔
2302
  }
2303

2304
  return code;
2,362✔
2305
}
2306

2307
static int32_t msgToPhysiVirtualTableScanNode(STlvDecoder* pDecoder, void* pObj) {
2,450✔
2308
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
2,450✔
2309

2310
  int32_t code = TSDB_CODE_SUCCESS;
2,450✔
2311
  STlv*   pTlv = NULL;
2,450✔
2312
  tlvForEach(pDecoder, pTlv, code) {
17,147!
2313
    switch (pTlv->type) {
14,697!
2314
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN:
2,450✔
2315
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
2,450✔
2316
        break;
2,450✔
2317
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS:
×
2318
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
×
2319
        break;
×
2320
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT:
2,450✔
2321
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
2,450✔
2322
        break;
2,450✔
2323
      case PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS:
2,450✔
2324
        code = tlvDecodeBool(pTlv, &pNode->scanAllCols);
2,450✔
2325
        break;
2,450✔
2326
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS:
2,447✔
2327
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
2,447✔
2328
        break;
2,447✔
2329
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS:
×
2330
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2331
        break;
×
2332
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE:
×
2333
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2334
        break;
×
2335
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED:
2,450✔
2336
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
2,450✔
2337
        break;
2,450✔
2338
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE:
2,450✔
2339
        code = tlvDecodeI8(pTlv, &pNode->igCheckUpdate);
2,450✔
2340
        break;
2,450✔
2341
      default:
×
2342
        break;
×
2343
    }
2344
  }
2345

2346
  return code;
2,450✔
2347
}
2348

2349
enum {
2350
  PHY_TAG_SCAN_CODE_SCAN = 1,
2351
  PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
2352
};
2353

2354
static int32_t physiTagScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
297✔
2355
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
297✔
2356

2357
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
297✔
2358

2359
  if (TSDB_CODE_SUCCESS == code) {
298!
2360
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
298✔
2361
  }
2362
  return code;
298✔
2363
}
2364

2365
static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
33,484✔
2366
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
33,484✔
2367

2368
  int32_t code = TSDB_CODE_SUCCESS;
33,484✔
2369
  STlv*   pTlv = NULL;
33,484✔
2370
  tlvForEach(pDecoder, pTlv, code) {
100,423!
2371
    switch (pTlv->type) {
66,948!
2372
      case PHY_TAG_SCAN_CODE_SCAN:
33,481✔
2373
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
33,481✔
2374
        break;
33,469✔
2375
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
33,467✔
2376
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
33,467✔
2377
        break;
33,470✔
2378
      default:
×
2379
        break;
×
2380
    }
2381
  }
2382

2383
  return code;
33,467✔
2384
}
2385

2386
enum {
2387
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2388
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2389
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2390
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2391
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2392
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2393
};
2394

2395
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
2396
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
×
2397

2398
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
×
2399
  if (TSDB_CODE_SUCCESS == code) {
×
2400
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
×
2401
  }
2402
  if (TSDB_CODE_SUCCESS == code) {
×
2403
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
×
2404
  }
2405
  if (TSDB_CODE_SUCCESS == code) {
×
2406
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
×
2407
  }
2408
  if (TSDB_CODE_SUCCESS == code) {
×
2409
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
×
2410
  }
2411
  if (TSDB_CODE_SUCCESS == code) {
×
2412
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
×
2413
  }
2414

2415
  return code;
×
2416
}
2417

2418
static int32_t msgToPhysiLastRowScanNode(STlvDecoder* pDecoder, void* pObj) {
4,113✔
2419
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
4,113✔
2420

2421
  int32_t code = TSDB_CODE_SUCCESS;
4,113✔
2422
  STlv*   pTlv = NULL;
4,113✔
2423
  tlvForEach(pDecoder, pTlv, code) {
20,968✔
2424
    switch (pTlv->type) {
16,855!
2425
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
4,112✔
2426
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
4,112✔
2427
        break;
4,110✔
2428
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
282✔
2429
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
282✔
2430
        break;
282✔
2431
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
4,111✔
2432
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
4,111✔
2433
        break;
4,113✔
2434
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
4,112✔
2435
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
4,112✔
2436
        break;
4,111✔
2437
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
4,111✔
2438
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
4,111✔
2439
        break;
4,112✔
2440
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
127✔
2441
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
127✔
2442
        break;
127✔
2443

2444
      default:
×
2445
        break;
×
2446
    }
2447
  }
2448

2449
  return code;
4,112✔
2450
}
2451

2452
enum {
2453
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2454
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2455
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2456
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2457
  PHY_TABLE_SCAN_CODE_TAGS,
2458
  PHY_TABLE_SCAN_CODE_SUBTABLE,
2459
  PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR,
2460
};
2461

2462
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
30,874✔
2463
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
30,874✔
2464

2465
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
30,874✔
2466
  if (TSDB_CODE_SUCCESS == code) {
30,885!
2467
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
30,886✔
2468
  }
2469
  if (TSDB_CODE_SUCCESS == code) {
30,886✔
2470
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
30,873✔
2471
  }
2472
  if (TSDB_CODE_SUCCESS == code) {
30,894✔
2473
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
30,887✔
2474
  }
2475
  if (TSDB_CODE_SUCCESS == code) {
30,896✔
2476
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
30,889✔
2477
  }
2478
  if (TSDB_CODE_SUCCESS == code) {
30,898!
2479
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
30,900✔
2480
  }
2481
  if (TSDB_CODE_SUCCESS == code) {
30,894✔
2482
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
30,884✔
2483
  }
2484
  if (TSDB_CODE_SUCCESS == code) {
30,901✔
2485
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
30,893✔
2486
  }
2487
  if (TSDB_CODE_SUCCESS == code) {
30,903✔
2488
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
30,896✔
2489
  }
2490
  if (TSDB_CODE_SUCCESS == code) {
30,891✔
2491
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
30,885✔
2492
  }
2493
  if (TSDB_CODE_SUCCESS == code) {
30,899✔
2494
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
30,882✔
2495
  }
2496
  if (TSDB_CODE_SUCCESS == code) {
30,909✔
2497
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
30,895✔
2498
  }
2499
  if (TSDB_CODE_SUCCESS == code) {
30,907✔
2500
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
30,895✔
2501
  }
2502
  if (TSDB_CODE_SUCCESS == code) {
30,912✔
2503
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
30,900✔
2504
  }
2505
  if (TSDB_CODE_SUCCESS == code) {
30,910✔
2506
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
30,888✔
2507
  }
2508
  if (TSDB_CODE_SUCCESS == code) {
30,917✔
2509
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
30,899✔
2510
  }
2511
  if (TSDB_CODE_SUCCESS == code) {
30,920✔
2512
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
30,903✔
2513
  }
2514
  if (TSDB_CODE_SUCCESS == code) {
30,922✔
2515
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
30,904✔
2516
  }
2517
  if (TSDB_CODE_SUCCESS == code) {
30,922✔
2518
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
30,890✔
2519
  }
2520
  if (TSDB_CODE_SUCCESS == code) {
30,930✔
2521
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
30,899✔
2522
  }
2523
  if (TSDB_CODE_SUCCESS == code) {
30,929✔
2524
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
30,898✔
2525
  }
2526
  return code;
30,896✔
2527
}
2528

2529
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
30,884✔
2530
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
30,884✔
2531

2532
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
30,884✔
2533
  if (TSDB_CODE_SUCCESS == code) {
30,887!
2534
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
30,889✔
2535
  }
2536
  if (TSDB_CODE_SUCCESS == code) {
30,892✔
2537
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
30,879✔
2538
  }
2539
  if (TSDB_CODE_SUCCESS == code) {
30,898✔
2540
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
30,893✔
2541
  }
2542
  if (TSDB_CODE_SUCCESS == code) {
30,895✔
2543
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
30,894✔
2544
  }
2545
  if (TSDB_CODE_SUCCESS == code) {
30,892✔
2546
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
30,891✔
2547
  }
2548
  if (TSDB_CODE_SUCCESS == code) {
30,894✔
2549
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
30,893✔
2550
  }
2551

2552
  return code;
30,891✔
2553
}
2554

2555
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
1,132,838✔
2556
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,132,838✔
2557

2558
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
1,132,838✔
2559
  if (TSDB_CODE_SUCCESS == code) {
1,132,945!
2560
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
1,133,000✔
2561
  }
2562
  if (TSDB_CODE_SUCCESS == code) {
1,132,718✔
2563
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
1,132,582✔
2564
  }
2565
  if (TSDB_CODE_SUCCESS == code) {
1,132,845✔
2566
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
1,132,765✔
2567
  }
2568
  if (TSDB_CODE_SUCCESS == code) {
1,132,799✔
2569
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
1,132,744✔
2570
  }
2571
  if (TSDB_CODE_SUCCESS == code) {
1,132,855!
2572
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
1,132,870✔
2573
  }
2574
  if (TSDB_CODE_SUCCESS == code) {
1,133,009✔
2575
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
1,132,784✔
2576
  }
2577
  if (TSDB_CODE_SUCCESS == code) {
1,133,205✔
2578
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
1,132,988✔
2579
  }
2580
  if (TSDB_CODE_SUCCESS == code) {
1,133,198✔
2581
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
1,132,994✔
2582
  }
2583
  if (TSDB_CODE_SUCCESS == code) {
1,132,988✔
2584
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
1,132,804✔
2585
  }
2586
  if (TSDB_CODE_SUCCESS == code) {
1,132,942✔
2587
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
1,132,541✔
2588
  }
2589
  if (TSDB_CODE_SUCCESS == code) {
1,133,158✔
2590
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
1,132,790✔
2591
  }
2592
  if (TSDB_CODE_SUCCESS == code) {
1,132,899✔
2593
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
1,132,564✔
2594
  }
2595
  if (TSDB_CODE_SUCCESS == code) {
1,132,756✔
2596
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
1,132,445✔
2597
  }
2598
  if (TSDB_CODE_SUCCESS == code) {
1,132,909✔
2599
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
1,132,411✔
2600
  }
2601
  if (TSDB_CODE_SUCCESS == code) {
1,132,946✔
2602
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
1,132,561✔
2603
  }
2604
  if (TSDB_CODE_SUCCESS == code) {
1,133,051✔
2605
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
1,132,667✔
2606
  }
2607
  if (TSDB_CODE_SUCCESS == code) {
1,132,938✔
2608
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
1,132,619✔
2609
  }
2610
  if (TSDB_CODE_SUCCESS == code) {
1,132,963✔
2611
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
1,132,464✔
2612
  }
2613
  if (TSDB_CODE_SUCCESS == code) {
1,132,957✔
2614
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
1,132,473✔
2615
  }
2616
  if (TSDB_CODE_SUCCESS == code) {
1,133,022✔
2617
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
1,132,541✔
2618
  }
2619
  return code;
1,132,572✔
2620
}
2621

2622
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
1,134,142✔
2623
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,134,142✔
2624

2625
  int32_t code = TSDB_CODE_SUCCESS;
1,134,142✔
2626
  STlv*   pTlv = NULL;
1,134,142✔
2627
  tlvForEach(pDecoder, pTlv, code) {
3,641,342!
2628
    switch (pTlv->type) {
2,508,377!
2629
      case PHY_TABLE_SCAN_CODE_SCAN:
1,134,204✔
2630
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
1,134,204✔
2631
        break;
1,132,933✔
2632
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
1,133,051✔
2633
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
1,133,051✔
2634
        break;
1,132,576✔
2635
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2636
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2637
        break;
×
2638
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
241,122✔
2639
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
241,122✔
2640
        break;
241,691✔
2641
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2642
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2643
        break;
×
2644
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2645
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2646
        break;
×
2647
      case PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR:
×
2648
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
2649
        break;
×
2650
      default:
×
2651
        break;
×
2652
    }
2653
  }
2654

2655
  return code;
1,132,736✔
2656
}
2657

2658
enum {
2659
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2660
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2661
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2662
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2663
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2664
};
2665

2666
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,030✔
2667
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
1,030✔
2668

2669
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,030✔
2670
  if (TSDB_CODE_SUCCESS == code) {
1,033!
2671
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
1,033✔
2672
  }
2673
  if (TSDB_CODE_SUCCESS == code) {
1,034!
2674
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
1,034✔
2675
  }
2676
  if (TSDB_CODE_SUCCESS == code) {
1,034!
2677
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
1,034✔
2678
  }
2679
  if (TSDB_CODE_SUCCESS == code) {
1,034!
2680
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
1,034✔
2681
  }
2682

2683
  return code;
1,034✔
2684
}
2685

2686
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
38,366✔
2687
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
38,366✔
2688

2689
  int32_t code = TSDB_CODE_SUCCESS;
38,366✔
2690
  STlv*   pTlv = NULL;
38,366✔
2691
  tlvForEach(pDecoder, pTlv, code) {
230,181!
2692
    switch (pTlv->type) {
191,819!
2693
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
38,370✔
2694
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
38,370✔
2695
        break;
38,347✔
2696
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
38,349✔
2697
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
38,349✔
2698
        break;
38,375✔
2699
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
38,375✔
2700
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
38,375✔
2701
        break;
38,366✔
2702
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
38,363✔
2703
        code = tlvDecodeI32(pTlv, &pNode->accountId);
38,363✔
2704
        break;
38,363✔
2705
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
38,362✔
2706
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
38,362✔
2707
        break;
38,364✔
2708
      default:
×
2709
        break;
×
2710
    }
2711
  }
2712

2713
  return code;
38,360✔
2714
}
2715

2716
enum {
2717
  PHY_PROJECT_CODE_BASE_NODE = 1,
2718
  PHY_PROJECT_CODE_PROJECTIONS,
2719
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2720
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2721
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2722
};
2723

2724
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,438✔
2725
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
9,438✔
2726

2727
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,438✔
2728
  if (TSDB_CODE_SUCCESS == code) {
9,444!
2729
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
9,444✔
2730
  }
2731
  if (TSDB_CODE_SUCCESS == code) {
9,445!
2732
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
9,445✔
2733
  }
2734
  if (TSDB_CODE_SUCCESS == code) {
9,444!
2735
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
9,444✔
2736
  }
2737
  if (TSDB_CODE_SUCCESS == code) {
9,444!
2738
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
9,444✔
2739
  }
2740

2741
  return code;
9,444✔
2742
}
2743

2744
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
493,106✔
2745
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
493,106✔
2746

2747
  int32_t code = TSDB_CODE_SUCCESS;
493,106✔
2748
  STlv*   pTlv = NULL;
493,106✔
2749
  tlvForEach(pDecoder, pTlv, code) {
2,957,785!
2750
    switch (pTlv->type) {
2,464,846!
2751
      case PHY_PROJECT_CODE_BASE_NODE:
493,104✔
2752
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
493,104✔
2753
        break;
492,868✔
2754
      case PHY_PROJECT_CODE_PROJECTIONS:
492,847✔
2755
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
492,847✔
2756
        break;
493,069✔
2757
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
493,045✔
2758
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
493,045✔
2759
        break;
492,996✔
2760
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
492,970✔
2761
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
492,970✔
2762
        break;
492,907✔
2763
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
492,880✔
2764
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
492,880✔
2765
        break;
492,839✔
2766
      default:
×
2767
        break;
×
2768
    }
2769
  }
2770

2771
  return code;
492,587✔
2772
}
2773

2774
enum {
2775
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2776
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2777
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2778
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2779
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2780
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2781
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2782
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2783
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2784
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2785
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2786
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2787
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2788
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2789
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2790
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2791
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2792
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2793
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2794
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2795
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2796
};
2797

2798
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,582✔
2799
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
2,582✔
2800

2801
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
2,582✔
2802
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2803
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
2,582✔
2804
  }
2805
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2806
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
2,582✔
2807
  }
2808
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2809
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
2,582✔
2810
  }
2811
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2812
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
2,582✔
2813
  }
2814
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2815
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
2,582✔
2816
  }  
2817
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2818
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
2,582✔
2819
  }
2820
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2821
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
2,582✔
2822
  }  
2823
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2824
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
2,582✔
2825
  }  
2826
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2827
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
2,582✔
2828
  }  
2829
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2830
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
2,582✔
2831
  }
2832
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2833
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
2,582✔
2834
  }
2835
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2836
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
2,582✔
2837
  }
2838
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2839
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
2,582✔
2840
  }
2841
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2842
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
2,582✔
2843
  }
2844
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2845
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
2,582✔
2846
  }
2847
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2848
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
2,582✔
2849
  }
2850
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2851
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
2,582✔
2852
  }
2853
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2854
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
2,582✔
2855
  }
2856
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2857
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
2,582✔
2858
  }
2859
  if (TSDB_CODE_SUCCESS == code) {
2,582!
2860
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
2,582✔
2861
  }
2862
  
2863
  return code;
2,582✔
2864
}
2865

2866
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
90,546✔
2867
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
90,546✔
2868

2869
  int32_t code = TSDB_CODE_SUCCESS;
90,546✔
2870
  STlv*   pTlv = NULL;
90,546✔
2871
  tlvForEach(pDecoder, pTlv, code) {
1,315,497!
2872
    switch (pTlv->type) {
1,224,970!
2873
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
90,546✔
2874
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
90,546✔
2875
        break;
90,533✔
2876
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
90,532✔
2877
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
90,532✔
2878
        break;
90,531✔
2879
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
90,529✔
2880
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
90,529✔
2881
        break;
90,530✔
2882
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
829✔
2883
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
829✔
2884
        break;
829✔
2885
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
406✔
2886
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
406✔
2887
        break;
406✔
2888
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
90,532✔
2889
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
90,532✔
2890
        break;
90,530✔
2891
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
1,122✔
2892
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
1,122✔
2893
        break;
1,122✔
2894
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
1,109✔
2895
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
1,109✔
2896
        break;
1,109✔
2897
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
90,531✔
2898
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
90,531✔
2899
        break;
90,525✔
2900
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
90,526✔
2901
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
90,526✔
2902
        break;
90,524✔
2903
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
558✔
2904
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
558✔
2905
        break;
558✔
2906
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
558✔
2907
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
558✔
2908
        break;
558✔
2909
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
21,533✔
2910
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
21,533✔
2911
        break;
21,533✔
2912
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
21,920✔
2913
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
21,920✔
2914
        break;
21,920✔
2915
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
90,523✔
2916
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
90,523✔
2917
        break;
90,544✔
2918
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
90,544✔
2919
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
90,544✔
2920
        break;
90,540✔
2921
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
90,539✔
2922
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
90,539✔
2923
        break;
90,537✔
2924
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
90,538✔
2925
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
90,538✔
2926
        break;
90,536✔
2927
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
90,533✔
2928
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
90,533✔
2929
        break;
90,527✔
2930
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
90,531✔
2931
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
90,531✔
2932
        break;
90,531✔
2933
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
90,531✔
2934
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
90,531✔
2935
        break;
90,528✔
2936
      default:
×
2937
        break;
×
2938
    }
2939
  }
2940

2941
  return code;
90,502✔
2942
}
2943

2944
enum {
2945
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2946
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2947
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2948
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2949
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2950
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2951
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2952
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2953
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2954
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2955
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2956
  PHY_HASH_JOIN_CODE_TARGETS,
2957
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2958
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2959
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2960
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2961
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2962
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2963
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2964
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2965

2966
};
2967

2968
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
2969
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
×
2970

2971
  int32_t code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
2972
  if (TSDB_CODE_SUCCESS == code) {
×
2973
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_TYPE, pNode->joinType);
×
2974
  }
2975
  if (TSDB_CODE_SUCCESS == code) {
×
2976
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_STYPE, pNode->subType);
×
2977
  }
2978
  if (TSDB_CODE_SUCCESS == code) {
×
2979
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN, nodeListToMsg, pNode->pOnLeft);
×
2980
  }
2981
  if (TSDB_CODE_SUCCESS == code) {
×
2982
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN, nodeListToMsg, pNode->pOnRight);
×
2983
  }  
2984
  if (TSDB_CODE_SUCCESS == code) {
×
2985
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
×
2986
  }
2987
  if (TSDB_CODE_SUCCESS == code) {
×
2988
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
×
2989
  }
2990
  if (TSDB_CODE_SUCCESS == code) {
×
2991
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID, pNode->leftPrimSlotId);
×
2992
  }
2993
  if (TSDB_CODE_SUCCESS == code) {
×
2994
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID, pNode->rightPrimSlotId);
×
2995
  }
2996
  if (TSDB_CODE_SUCCESS == code) {
×
2997
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET, pNode->timeRangeTarget);
×
2998
  }
2999
  if (TSDB_CODE_SUCCESS == code) {
×
3000
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
×
3001
  }
3002
  if (TSDB_CODE_SUCCESS == code) {
×
3003
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
×
3004
  }
3005
  if (TSDB_CODE_SUCCESS == code) {
×
3006
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
×
3007
  }
3008
  if (TSDB_CODE_SUCCESS == code) {
×
3009
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
×
3010
  }
3011
  if (TSDB_CODE_SUCCESS == code) {
×
3012
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
×
3013
  }
3014
  if (TSDB_CODE_SUCCESS == code) {
×
3015
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
×
3016
  }
3017
  if (TSDB_CODE_SUCCESS == code) {
×
3018
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_ON_COND, nodeToMsg, pNode->pLeftOnCond);
×
3019
  }
3020
  if (TSDB_CODE_SUCCESS == code) {
×
3021
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_ON_COND, nodeToMsg, pNode->pRightOnCond);
×
3022
  }
3023
  if (TSDB_CODE_SUCCESS == code) {
×
3024
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY, pNode->timeRange.skey);
×
3025
  }
3026
  if (TSDB_CODE_SUCCESS == code) {
×
3027
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY, pNode->timeRange.ekey);
×
3028
  }
3029

3030
  return code;
×
3031
}
3032

3033

3034
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
6,279✔
3035
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
6,279✔
3036

3037
  int32_t code = TSDB_CODE_SUCCESS;
6,279✔
3038
  STlv*   pTlv = NULL;
6,279✔
3039
  tlvForEach(pDecoder, pTlv, code) {
100,464!
3040
    switch (pTlv->type) {
94,185!
3041
      case PHY_HASH_JOIN_CODE_BASE_NODE:
6,279✔
3042
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,279✔
3043
        break;
6,279✔
3044
      case PHY_HASH_JOIN_CODE_JOIN_TYPE:
6,279✔
3045
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
6,279✔
3046
        break;
6,279✔
3047
      case PHY_HASH_JOIN_CODE_JOIN_STYPE:
6,279✔
3048
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
6,279✔
3049
        break;
6,279✔
3050
      case PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN:
6,279✔
3051
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnLeft);
6,279✔
3052
        break;
6,279✔
3053
      case PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN:
6,279✔
3054
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnRight);
6,279✔
3055
        break;
6,279✔
3056
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR:
×
3057
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
×
3058
        break;
×
3059
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR:
×
3060
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
×
3061
        break;
×
3062
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID:
6,279✔
3063
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
6,279✔
3064
        break;
6,279✔
3065
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID:
6,279✔
3066
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
6,279✔
3067
        break;
6,279✔
3068
      case PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET:
6,279✔
3069
        code = tlvDecodeI32(pTlv, &pNode->timeRangeTarget);
6,279✔
3070
        break;
6,279✔
3071
      case PHY_HASH_JOIN_CODE_ON_CONDITIONS:
×
3072
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
×
3073
        break;
×
3074
      case PHY_HASH_JOIN_CODE_TARGETS:
6,279✔
3075
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
6,279✔
3076
        break;
6,279✔
3077
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0:
6,279✔
3078
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
6,279✔
3079
        break;
6,279✔
3080
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1:
6,279✔
3081
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
6,279✔
3082
        break;
6,279✔
3083
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0:
6,279✔
3084
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
6,279✔
3085
        break;
6,279✔
3086
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1:
6,279✔
3087
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
6,279✔
3088
        break;
6,279✔
3089
      case PHY_HASH_JOIN_CODE_LEFT_ON_COND:
×
3090
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeftOnCond);
×
3091
        break;
×
3092
      case PHY_HASH_JOIN_CODE_RIGHT_ON_COND:
×
3093
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRightOnCond);
×
3094
        break;
×
3095
      case PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY:
6,279✔
3096
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
6,279✔
3097
        break;
6,279✔
3098
      case PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY:
6,279✔
3099
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
6,279✔
3100
        break;
6,279✔
3101
      default:
×
3102
        break;
×
3103
    }
3104
  }
3105

3106
  return code;
6,279✔
3107
}
3108

3109

3110
enum {
3111
  PHY_AGG_CODE_BASE_NODE = 1,
3112
  PHY_AGG_CODE_EXPR,
3113
  PHY_AGG_CODE_GROUP_KEYS,
3114
  PHY_AGG_CODE_AGG_FUNCS,
3115
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
3116
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
3117
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
3118
};
3119

3120
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
13,102✔
3121
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
13,102✔
3122

3123
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
13,102✔
3124
  if (TSDB_CODE_SUCCESS == code) {
13,122!
3125
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
13,122✔
3126
  }
3127
  if (TSDB_CODE_SUCCESS == code) {
13,123!
3128
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
13,123✔
3129
  }
3130
  if (TSDB_CODE_SUCCESS == code) {
13,123!
3131
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
13,123✔
3132
  }
3133
  if (TSDB_CODE_SUCCESS == code) {
13,123✔
3134
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
13,122✔
3135
  }
3136
  if (TSDB_CODE_SUCCESS == code) {
13,125✔
3137
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
13,124✔
3138
  }
3139
  if (TSDB_CODE_SUCCESS == code) {
13,124✔
3140
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
13,123✔
3141
  }
3142

3143
  return code;
13,122✔
3144
}
3145

3146
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
655,510✔
3147
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
655,510✔
3148

3149
  int32_t code = TSDB_CODE_SUCCESS;
655,510✔
3150
  STlv*   pTlv = NULL;
655,510✔
3151
  tlvForEach(pDecoder, pTlv, code) {
4,193,779!
3152
    switch (pTlv->type) {
3,538,697!
3153
      case PHY_AGG_CODE_BASE_NODE:
655,510✔
3154
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
655,510✔
3155
        break;
654,938✔
3156
      case PHY_AGG_CODE_EXPR:
244,993✔
3157
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
244,993✔
3158
        break;
245,183✔
3159
      case PHY_AGG_CODE_GROUP_KEYS:
234,538✔
3160
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
234,538✔
3161
        break;
234,591✔
3162
      case PHY_AGG_CODE_AGG_FUNCS:
438,203✔
3163
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
438,203✔
3164
        break;
438,392✔
3165
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
655,320✔
3166
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
655,320✔
3167
        break;
655,212✔
3168
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
655,124✔
3169
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
655,124✔
3170
        break;
655,035✔
3171
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
655,009✔
3172
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
655,009✔
3173
        break;
654,918✔
3174
      default:
×
3175
        break;
×
3176
    }
3177
  }
3178

3179
  return code;
654,535✔
3180
}
3181

3182
enum {
3183
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
3184
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
3185
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
3186
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
3187
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
3188
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA,
3189
  PHY_EXCHANGE_CODE_DYN_TBNAME
3190
};
3191

3192
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
17,742✔
3193
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
17,742✔
3194

3195
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
17,742✔
3196
  if (TSDB_CODE_SUCCESS == code) {
17,742!
3197
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
17,742✔
3198
  }
3199
  if (TSDB_CODE_SUCCESS == code) {
17,742!
3200
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
17,742✔
3201
  }
3202
  if (TSDB_CODE_SUCCESS == code) {
17,742!
3203
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
17,742✔
3204
  }
3205
  if (TSDB_CODE_SUCCESS == code) {
17,742!
3206
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
17,742✔
3207
  }
3208
  if (TSDB_CODE_SUCCESS == code) {
17,742!
3209
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
17,742✔
3210
  }
3211
  if (TSDB_CODE_SUCCESS == code) {
17,742!
3212
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_DYN_TBNAME, pNode->dynTbname);
17,742✔
3213
  }
3214

3215
  return code;
17,742✔
3216
}
3217

3218
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
578,446✔
3219
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
578,446✔
3220

3221
  int32_t code = TSDB_CODE_SUCCESS;
578,446✔
3222
  STlv*   pTlv = NULL;
578,446✔
3223
  tlvForEach(pDecoder, pTlv, code) {
4,627,187!
3224
    switch (pTlv->type) {
4,048,780!
3225
      case PHY_EXCHANGE_CODE_BASE_NODE:
578,443✔
3226
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
578,443✔
3227
        break;
578,360✔
3228
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
578,367✔
3229
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
578,367✔
3230
        break;
578,351✔
3231
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
578,353✔
3232
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
578,353✔
3233
        break;
578,347✔
3234
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
578,358✔
3235
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
578,358✔
3236
        break;
578,362✔
3237
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
578,366✔
3238
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
578,366✔
3239
        break;
578,468✔
3240
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
578,460✔
3241
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
578,460✔
3242
        break;
578,440✔
3243
      case PHY_EXCHANGE_CODE_DYN_TBNAME:
578,433✔
3244
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
578,433✔
3245
        break;
578,413✔
3246
      default:
×
3247
        break;
×
3248
    }
3249
  }
3250

3251
  return code;
578,305✔
3252
}
3253

3254
enum {
3255
  PHY_MERGE_CODE_BASE_NODE = 1,
3256
  PHY_MERGE_CODE_MERGE_KEYS,
3257
  PHY_MERGE_CODE_TARGETS,
3258
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3259
  PHY_MERGE_CODE_SRC_GROUP_ID,
3260
  PHY_MERGE_CODE_GROUP_SORT,
3261
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3262
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3263
  PHY_MERGE_CODE_TYPE,
3264
};
3265

3266
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,964✔
3267
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
1,964✔
3268

3269
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,964✔
3270
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3271
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
1,964✔
3272
  }
3273
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3274
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
1,964✔
3275
  }
3276
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3277
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
1,964✔
3278
  }
3279
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3280
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
1,964✔
3281
  }
3282
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3283
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
1,964✔
3284
  }
3285
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3286
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
1,964✔
3287
  }
3288
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3289
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
1,964✔
3290
  }
3291
  if (TSDB_CODE_SUCCESS == code) {
1,964!
3292
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
1,964✔
3293
  }
3294

3295
  return code;
1,964✔
3296
}
3297

3298
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
54,203✔
3299
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
54,203✔
3300

3301
  int32_t code = TSDB_CODE_SUCCESS;
54,203✔
3302
  STlv*   pTlv = NULL;
54,203✔
3303
  tlvForEach(pDecoder, pTlv, code) {
541,206✔
3304
    switch (pTlv->type) {
487,004!
3305
      case PHY_MERGE_CODE_BASE_NODE:
54,203✔
3306
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
54,203✔
3307
        break;
54,196✔
3308
      case PHY_MERGE_CODE_MERGE_KEYS:
53,394✔
3309
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
53,394✔
3310
        break;
53,402✔
3311
      case PHY_MERGE_CODE_TARGETS:
54,204✔
3312
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
54,204✔
3313
        break;
54,204✔
3314
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
54,205✔
3315
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
54,205✔
3316
        break;
54,203✔
3317
      case PHY_MERGE_CODE_SRC_GROUP_ID:
54,201✔
3318
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
54,201✔
3319
        break;
54,200✔
3320
      case PHY_MERGE_CODE_GROUP_SORT:
54,200✔
3321
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
54,200✔
3322
        break;
54,200✔
3323
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
54,200✔
3324
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
54,200✔
3325
        break;
54,200✔
3326
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
54,200✔
3327
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
54,200✔
3328
        break;
54,200✔
3329
      case PHY_MERGE_CODE_TYPE:
54,197✔
3330
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
54,197✔
3331
        break;
54,198✔
3332
      default:
×
3333
        break;
×
3334
    }
3335
  }
3336

3337
  return code;
54,201✔
3338
}
3339

3340
enum {
3341
  PHY_SORT_CODE_BASE_NODE = 1,
3342
  PHY_SORT_CODE_EXPR,
3343
  PHY_SORT_CODE_SORT_KEYS,
3344
  PHY_SORT_CODE_TARGETS,
3345
  PHY_SORT_CODE_CALC_GROUPID,
3346
  PHY_SORT_CODE_EXCLUDE_PK_COL
3347
};
3348

3349
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,969✔
3350
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
1,969✔
3351

3352
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,969✔
3353
  if (TSDB_CODE_SUCCESS == code) {
1,983!
3354
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
1,983✔
3355
  }
3356
  if (TSDB_CODE_SUCCESS == code) {
1,983!
3357
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
1,983✔
3358
  }
3359
  if (TSDB_CODE_SUCCESS == code) {
1,983!
3360
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
1,983✔
3361
  }
3362
  if (TSDB_CODE_SUCCESS == code) {
1,983!
3363
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
1,983✔
3364
  }
3365
  if (TSDB_CODE_SUCCESS == code) {
1,983!
3366
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
1,983✔
3367
  }
3368

3369
  return code;
1,983✔
3370
}
3371

3372
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
148,299✔
3373
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
148,299✔
3374

3375
  int32_t code = TSDB_CODE_SUCCESS;
148,299✔
3376
  STlv*   pTlv = NULL;
148,299✔
3377
  tlvForEach(pDecoder, pTlv, code) {
890,081!
3378
    switch (pTlv->type) {
741,507!
3379
      case PHY_SORT_CODE_BASE_NODE:
148,298✔
3380
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
148,298✔
3381
        break;
148,262✔
3382
      case PHY_SORT_CODE_EXPR:
402✔
3383
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
402✔
3384
        break;
402✔
3385
      case PHY_SORT_CODE_SORT_KEYS:
148,262✔
3386
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
148,262✔
3387
        break;
148,291✔
3388
      case PHY_SORT_CODE_TARGETS:
148,287✔
3389
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
148,287✔
3390
        break;
148,285✔
3391
      case PHY_SORT_CODE_CALC_GROUPID:
148,283✔
3392
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
148,283✔
3393
        break;
148,277✔
3394
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
148,275✔
3395
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
148,275✔
3396
      default:
148,265✔
3397
        break;
148,265✔
3398
    }
3399
  }
3400

3401
  return code;
148,492✔
3402
}
3403

3404
enum {
3405
  PHY_WINDOW_CODE_BASE_NODE = 1,
3406
  PHY_WINDOW_CODE_EXPR,
3407
  PHY_WINDOW_CODE_FUNCS,
3408
  PHY_WINDOW_CODE_TS_PK,
3409
  PHY_WINDOW_CODE_TS_END,
3410
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3411
  PHY_WINDOW_CODE_WATERMARK,
3412
  PHY_WINDOW_CODE_DELETE_MARK,
3413
  PHY_WINDOW_CODE_IG_EXPIRED,
3414
  PHY_WINDOW_CODE_INDEF_ROWS_FUNC,
3415
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3416
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3417
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3418
};
3419

3420
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,686✔
3421
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
3,686✔
3422

3423
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
3,686✔
3424
  if (TSDB_CODE_SUCCESS == code) {
3,686!
3425
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
3,686✔
3426
  }
3427
  if (TSDB_CODE_SUCCESS == code) {
3,686✔
3428
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
3,684✔
3429
  }
3430
  if (TSDB_CODE_SUCCESS == code) {
3,685✔
3431
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
3,683✔
3432
  }
3433
  if (TSDB_CODE_SUCCESS == code) {
3,683✔
3434
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
3,681✔
3435
  }
3436
  if (TSDB_CODE_SUCCESS == code) {
3,683✔
3437
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
3,681✔
3438
  }
3439
  if (TSDB_CODE_SUCCESS == code) {
3,684✔
3440
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
3,682✔
3441
  }
3442
  if (TSDB_CODE_SUCCESS == code) {
3,683✔
3443
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
3,681✔
3444
  }
3445
  if (TSDB_CODE_SUCCESS == code) {
3,687✔
3446
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
3,685✔
3447
  }
3448
  if (TSDB_CODE_SUCCESS == code) {
3,686✔
3449
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
3,684✔
3450
  }
3451
  if (TSDB_CODE_SUCCESS == code) {
3,685✔
3452
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_INDEF_ROWS_FUNC, pNode->indefRowsFunc);
3,684✔
3453
  }
3454

3455
  return code;
3,684✔
3456
}
3457

3458
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
23,537✔
3459
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
23,537✔
3460

3461
  int32_t code = TSDB_CODE_SUCCESS;
23,537✔
3462
  STlv*   pTlv = NULL;
23,537✔
3463
  tlvForEach(pDecoder, pTlv, code) {
240,661!
3464
    switch (pTlv->type) {
217,121!
3465
      case PHY_WINDOW_CODE_BASE_NODE:
23,530✔
3466
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
23,530✔
3467
        break;
23,518✔
3468
      case PHY_WINDOW_CODE_EXPR:
4,088✔
3469
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
4,088✔
3470
        break;
4,093✔
3471
      case PHY_WINDOW_CODE_FUNCS:
23,519✔
3472
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
23,519✔
3473
        break;
23,536✔
3474
      case PHY_WINDOW_CODE_TS_PK:
23,536✔
3475
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
23,536✔
3476
        break;
23,540✔
3477
      case PHY_WINDOW_CODE_TS_END:
1,295✔
3478
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
1,295✔
3479
        break;
1,295✔
3480
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
23,537✔
3481
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
23,537✔
3482
        break;
23,533✔
3483
      case PHY_WINDOW_CODE_WATERMARK:
23,532✔
3484
        code = tlvDecodeI64(pTlv, &pNode->watermark);
23,532✔
3485
        break;
23,528✔
3486
      case PHY_WINDOW_CODE_DELETE_MARK:
23,527✔
3487
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
23,527✔
3488
        break;
23,526✔
3489
      case PHY_WINDOW_CODE_IG_EXPIRED:
23,521✔
3490
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
23,521✔
3491
        break;
23,521✔
3492
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
23,521✔
3493
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
23,521✔
3494
        break;
23,518✔
3495
      case PHY_WINDOW_CODE_INDEF_ROWS_FUNC:
23,515✔
3496
        code = tlvDecodeI8(pTlv, &pNode->indefRowsFunc);
23,515✔
3497
        break;
23,516✔
3498
      default:
×
3499
        break;
×
3500
    }
3501
  }
3502

3503
  return code;
23,522✔
3504
}
3505

3506
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS, PHY_INTERVAL_CODE_TIME_RANGE };
3507

3508
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,522✔
3509
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
3,522✔
3510

3511
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
3,522✔
3512
  if (TSDB_CODE_SUCCESS == code) {
3,520!
3513
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
3,520✔
3514
  }
3515
  if (TSDB_CODE_SUCCESS == code) {
3,521✔
3516
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
3,520✔
3517
  }
3518
  if (TSDB_CODE_SUCCESS == code) {
3,522✔
3519
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
3,521✔
3520
  }
3521
  if (TSDB_CODE_SUCCESS == code) {
3,524✔
3522
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
3,523✔
3523
  }
3524

3525
  return code;
3,519✔
3526
}
3527

3528
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,524✔
3529
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
3,524✔
3530

3531
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
3,524✔
3532
  if (TSDB_CODE_SUCCESS == code) {
3,522!
3533
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
3,523✔
3534
  }
3535
  if (TSDB_CODE_SUCCESS == code) {
3,518!
3536
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
3,519✔
3537
  }
3538

3539
  return code;
3,521✔
3540
}
3541

3542
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
19,137✔
3543
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
19,137✔
3544

3545
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
19,137✔
3546
  if (TSDB_CODE_SUCCESS == code) {
19,144!
3547
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
19,144✔
3548
  }
3549
  if (TSDB_CODE_SUCCESS == code) {
19,137!
3550
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
19,137✔
3551
  }
3552
  if (TSDB_CODE_SUCCESS == code) {
19,139!
3553
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
19,139✔
3554
  }
3555
  if (TSDB_CODE_SUCCESS == code) {
19,140!
3556
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
19,140✔
3557
  }
3558

3559
  return code;
19,134✔
3560
}
3561

3562
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
19,166✔
3563
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
19,166✔
3564

3565
  int32_t code = TSDB_CODE_SUCCESS;
19,166✔
3566
  STlv*   pTlv = NULL;
19,166✔
3567
  tlvForEach(pDecoder, pTlv, code) {
76,577!
3568
    switch (pTlv->type) {
57,431!
3569
      case PHY_INTERVAL_CODE_WINDOW:
19,169✔
3570
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
19,169✔
3571
        break;
19,140✔
3572
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
19,140✔
3573
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
19,140✔
3574
        break;
19,134✔
3575
      case PHY_INTERVAL_CODE_TIME_RANGE:
19,134✔
3576
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
19,134✔
3577
      default:
19,137✔
3578
        break;
19,137✔
3579
    }
3580
  }
3581

3582
  return code;
19,140✔
3583
}
3584

3585
enum {
3586
  PHY_FILL_CODE_BASE_NODE = 1,
3587
  PHY_FILL_CODE_MODE,
3588
  PHY_FILL_CODE_FILL_EXPRS,
3589
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3590
  PHY_FILL_CODE_WSTART,
3591
  PHY_FILL_CODE_VALUES,
3592
  PHY_FILL_CODE_TIME_RANGE,
3593
  PHY_FILL_CODE_INPUT_TS_ORDER,
3594
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3595
  PHY_FILL_CODE_TIME_RANGE_EXPR,
3596
};
3597

3598
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4✔
3599
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
4✔
3600

3601
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
4✔
3602
  if (TSDB_CODE_SUCCESS == code) {
4!
3603
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
4✔
3604
  }
3605
  if (TSDB_CODE_SUCCESS == code) {
4!
3606
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
4✔
3607
  }
3608
  if (TSDB_CODE_SUCCESS == code) {
4!
3609
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
4✔
3610
  }
3611
  if (TSDB_CODE_SUCCESS == code) {
4!
3612
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
4✔
3613
  }
3614
  if (TSDB_CODE_SUCCESS == code) {
4!
3615
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
4✔
3616
  }
3617
  if (TSDB_CODE_SUCCESS == code) {
4!
3618
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
4✔
3619
  }
3620
  if (TSDB_CODE_SUCCESS == code) {
4!
3621
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
4✔
3622
  }
3623
  if (TSDB_CODE_SUCCESS == code) {
4!
3624
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
4✔
3625
  }
3626
  return code;
4✔
3627
}
3628

3629
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
3,208✔
3630
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
3,208✔
3631

3632
  int32_t code = TSDB_CODE_SUCCESS;
3,208✔
3633
  STlv*   pTlv = NULL;
3,208✔
3634
  tlvForEach(pDecoder, pTlv, code) {
22,436!
3635
    switch (pTlv->type) {
19,231!
3636
      case PHY_FILL_CODE_BASE_NODE:
3,209✔
3637
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,209✔
3638
        break;
3,207✔
3639
      case PHY_FILL_CODE_MODE:
3,208✔
3640
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
3,208✔
3641
        break;
3,207✔
3642
      case PHY_FILL_CODE_FILL_EXPRS:
3,208✔
3643
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
3,208✔
3644
        break;
3,208✔
3645
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
2,954✔
3646
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
2,954✔
3647
        break;
2,955✔
3648
      case PHY_FILL_CODE_WSTART:
3,209✔
3649
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
3,209✔
3650
        break;
3,209✔
3651
      case PHY_FILL_CODE_VALUES:
233✔
3652
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
233✔
3653
        break;
233✔
3654
      case PHY_FILL_CODE_TIME_RANGE:
3,209✔
3655
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
3,209✔
3656
        break;
3,208✔
3657
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
1✔
3658
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
1✔
3659
        break;
1✔
3660
      case PHY_FILL_CODE_TIME_RANGE_EXPR:
×
3661
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
3662
        break;
×
3663
      default:
×
3664
        break;
×
3665
    }
3666
  }
3667

3668
  return code;
3,207✔
3669
}
3670

3671
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3672

3673
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
48✔
3674
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
48✔
3675

3676
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
48✔
3677
  if (TSDB_CODE_SUCCESS == code) {
48!
3678
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
48✔
3679
  }
3680

3681
  return code;
48✔
3682
}
3683

3684
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
1,295✔
3685
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
1,295✔
3686

3687
  int32_t code = TSDB_CODE_SUCCESS;
1,295✔
3688
  STlv*   pTlv = NULL;
1,295✔
3689
  tlvForEach(pDecoder, pTlv, code) {
3,885!
3690
    switch (pTlv->type) {
2,590!
3691
      case PHY_SESSION_CODE_WINDOW:
1,295✔
3692
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,295✔
3693
        break;
1,295✔
3694
      case PHY_SESSION_CODE_GAP:
1,295✔
3695
        code = tlvDecodeI64(pTlv, &pNode->gap);
1,295✔
3696
        break;
1,295✔
3697
      default:
×
3698
        break;
×
3699
    }
3700
  }
3701

3702
  return code;
1,295✔
3703
}
3704

3705
enum { PHY_EXT_CODE_WINDOW = 1, PHY_EXT_CODE_SKEY, PHY_EXT_CODE_EKEY };
3706

3707
static int32_t physiExternalWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3708
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
×
3709
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3710
  if (TSDB_CODE_SUCCESS == code) {
×
3711
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_SKEY, pNode->timeRange.skey);
×
3712
  }
3713
  if (TSDB_CODE_SUCCESS == code) {
×
3714
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_EKEY, pNode->timeRange.ekey);
×
3715
  }
3716

3717
  return code;
×
3718
}
3719

3720
static int32_t msgToPhysiExternalWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3721
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
×
3722

3723
  int32_t code = TSDB_CODE_SUCCESS;
×
3724
  STlv*   pTlv = NULL;
×
3725
  tlvForEach(pDecoder, pTlv, code) {
×
3726
    switch (pTlv->type) {
×
3727
      case PHY_EXT_CODE_WINDOW:
×
3728
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3729
        break;
×
3730
      case PHY_EXT_CODE_SKEY:
×
3731
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
×
3732
        break;
×
3733
      case PHY_EXT_CODE_EKEY:
×
3734
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
×
3735
        break;
×
3736
      default:
×
3737
        break;
×
3738
    }
3739
  }
3740
  return code;
×
3741
}
3742

3743
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY, PHY_STATE_CODE_TRUE_FOR_LIMIT };
3744

3745
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
29✔
3746
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
29✔
3747

3748
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
29✔
3749
  if (TSDB_CODE_SUCCESS == code) {
29!
3750
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
29✔
3751
  }
3752
  if (TSDB_CODE_SUCCESS == code) {
29!
3753
    code = tlvEncodeI64(pEncoder, PHY_STATE_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
29✔
3754
  }
3755

3756
  return code;
29✔
3757
}
3758

3759
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
2,829✔
3760
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
2,829✔
3761

3762
  int32_t code = TSDB_CODE_SUCCESS;
2,829✔
3763
  STlv*   pTlv = NULL;
2,829✔
3764
  tlvForEach(pDecoder, pTlv, code) {
11,316!
3765
    switch (pTlv->type) {
8,487!
3766
      case PHY_STATE_CODE_WINDOW:
2,829✔
3767
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
2,829✔
3768
        break;
2,829✔
3769
      case PHY_STATE_CODE_KEY:
2,829✔
3770
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
2,829✔
3771
        break;
2,829✔
3772
      case PHY_STATE_CODE_TRUE_FOR_LIMIT:
2,829✔
3773
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
2,829✔
3774
        break;
2,829✔
3775
      default:
×
3776
        break;
×
3777
    }
3778
  }
3779

3780
  return code;
2,829✔
3781
}
3782

3783
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND, PHY_EVENT_CODE_TRUE_FOR_LIMIT };
3784

3785
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
45✔
3786
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
45✔
3787

3788
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
45✔
3789
  if (TSDB_CODE_SUCCESS == code) {
45!
3790
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
45✔
3791
  }
3792
  if (TSDB_CODE_SUCCESS == code) {
45!
3793
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
45✔
3794
  }
3795
  if (TSDB_CODE_SUCCESS == code) {
45!
3796
    code = tlvEncodeI64(pEncoder, PHY_EVENT_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
45✔
3797
  }
3798

3799
  return code;
45✔
3800
}
3801

3802
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
122✔
3803
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
122✔
3804

3805
  int32_t code = TSDB_CODE_SUCCESS;
122✔
3806
  STlv*   pTlv = NULL;
122✔
3807
  tlvForEach(pDecoder, pTlv, code) {
610!
3808
    switch (pTlv->type) {
488!
3809
      case PHY_EVENT_CODE_WINDOW:
122✔
3810
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
122✔
3811
        break;
122✔
3812
      case PHY_EVENT_CODE_START_COND:
122✔
3813
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
122✔
3814
        break;
122✔
3815
      case PHY_EVENT_CODE_END_COND:
122✔
3816
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
122✔
3817
        break;
122✔
3818
      case PHY_EVENT_CODE_TRUE_FOR_LIMIT:
122✔
3819
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
122✔
3820
        break;
122✔
3821
      default:
×
3822
        break;
×
3823
    }
3824
  }
3825

3826
  return code;
122✔
3827
}
3828

3829
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3830

3831
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
38✔
3832
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
38✔
3833

3834
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
38✔
3835
  if (TSDB_CODE_SUCCESS == code) {
38!
3836
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
38✔
3837
  }
3838
  if (TSDB_CODE_SUCCESS == code) {
38!
3839
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
38✔
3840
  }
3841

3842
  return code;
38✔
3843
}
3844

3845
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
127✔
3846
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
127✔
3847

3848
  int32_t code = TSDB_CODE_SUCCESS;
127✔
3849
  STlv*   pTlv = NULL;
127✔
3850
  tlvForEach(pDecoder, pTlv, code) {
508!
3851
    switch (pTlv->type) {
381!
3852
      case PHY_COUNT_CODE_WINDOW:
127✔
3853
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
127✔
3854
        break;
127✔
3855
      case PHY_COUNT_CODE_WINDOW_COUNT:
127✔
3856
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
127✔
3857
        break;
127✔
3858
      case PHY_COUNT_CODE_WINDOW_SLIDING:
127✔
3859
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
127✔
3860
        break;
127✔
3861
      default:
×
3862
        break;
×
3863
    }
3864
  }
3865

3866
  return code;
127✔
3867
}
3868

3869
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3870

3871
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3872
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3873

3874
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3875
  if (TSDB_CODE_SUCCESS == code) {
×
3876
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3877
  }
3878
  if (TSDB_CODE_SUCCESS == code) {
×
3879
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3880
  }
3881

3882
  return code;
×
3883
}
3884

3885
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3886
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3887

3888
  int32_t code = TSDB_CODE_SUCCESS;
×
3889
  STlv*   pTlv = NULL;
×
3890
  tlvForEach(pDecoder, pTlv, code) {
×
3891
    switch (pTlv->type) {
×
3892
      case PHY_ANOMALY_CODE_WINDOW:
×
3893
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3894
        break;
×
3895
      case PHY_ANOMALY_CODE_KEY:
×
3896
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAnomalyKey);
×
3897
        break;
×
3898
      case PHY_ANOMALY_CODE_WINDOW_OPTION:
×
3899
        code = tlvDecodeCStr(pTlv, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
×
3900
        break;
×
3901
      default:
×
3902
        break;
×
3903
    }
3904
  }
3905

3906
  return code;
×
3907
}
3908

3909
enum {
3910
  PHY_PARTITION_CODE_BASE_NODE = 1,
3911
  PHY_PARTITION_CODE_EXPR,
3912
  PHY_PARTITION_CODE_KEYS,
3913
  PHY_PARTITION_CODE_TARGETS,
3914
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3915
  PHY_PARTITION_CODE_TS_SLOTID
3916
};
3917

3918
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
128✔
3919
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
128✔
3920

3921
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
128✔
3922
  if (TSDB_CODE_SUCCESS == code) {
128!
3923
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
128✔
3924
  }
3925
  if (TSDB_CODE_SUCCESS == code) {
128!
3926
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
128✔
3927
  }
3928
  if (TSDB_CODE_SUCCESS == code) {
128!
3929
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
128✔
3930
  }
3931
  if (TSDB_CODE_SUCCESS == code) {
128!
3932
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
128✔
3933
  }
3934
  if (TSDB_CODE_SUCCESS == code) {
128!
3935
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
128✔
3936
  }
3937

3938
  return code;
128✔
3939
}
3940

3941
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
9,573✔
3942
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
9,573✔
3943

3944
  int32_t code = TSDB_CODE_SUCCESS;
9,573✔
3945
  STlv*   pTlv = NULL;
9,573✔
3946
  tlvForEach(pDecoder, pTlv, code) {
57,518!
3947
    switch (pTlv->type) {
47,944!
3948
      case PHY_PARTITION_CODE_BASE_NODE:
9,575✔
3949
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,575✔
3950
        break;
9,572✔
3951
      case PHY_PARTITION_CODE_EXPR:
72✔
3952
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
72✔
3953
        break;
72✔
3954
      case PHY_PARTITION_CODE_KEYS:
9,573✔
3955
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
9,573✔
3956
        break;
9,572✔
3957
      case PHY_PARTITION_CODE_TARGETS:
9,573✔
3958
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
9,573✔
3959
        break;
9,578✔
3960
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
9,576✔
3961
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
9,576✔
3962
        break;
9,576✔
3963
      case PHY_PARTITION_CODE_TS_SLOTID:
9,575✔
3964
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
9,575✔
3965
        break;
9,575✔
3966
      default:
×
3967
        break;
×
3968
    }
3969
  }
3970

3971
  return code;
9,578✔
3972
}
3973

3974
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
3975

3976
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
18✔
3977
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
18✔
3978

3979
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
18✔
3980
  if (TSDB_CODE_SUCCESS == code) {
18!
3981
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
18✔
3982
  }
3983
  if (TSDB_CODE_SUCCESS == code) {
18!
3984
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
18✔
3985
  }
3986

3987
  return code;
18✔
3988
}
3989

3990
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
17,439✔
3991
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
17,439✔
3992

3993
  int32_t code = TSDB_CODE_SUCCESS;
17,439✔
3994
  STlv*   pTlv = NULL;
17,439✔
3995
  tlvForEach(pDecoder, pTlv, code) {
52,442!
3996
    switch (pTlv->type) {
34,998!
3997
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
17,438✔
3998
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
17,438✔
3999
        break;
17,439✔
4000
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
123✔
4001
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
123✔
4002
        break;
123✔
4003
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
17,437✔
4004
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
17,437✔
4005
        break;
17,441✔
4006
      default:
×
4007
        break;
×
4008
    }
4009
  }
4010

4011
  return code;
17,443✔
4012
}
4013

4014
enum {
4015
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
4016
  PHY_INERP_FUNC_CODE_EXPR,
4017
  PHY_INERP_FUNC_CODE_FUNCS,
4018
  PHY_INERP_FUNC_CODE_TIME_RANGE,
4019
  PHY_INERP_FUNC_CODE_INTERVAL,
4020
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
4021
  PHY_INERP_FUNC_CODE_FILL_MODE,
4022
  PHY_INERP_FUNC_CODE_FILL_VALUES,
4023
  PHY_INERP_FUNC_CODE_TIME_SERIES,
4024
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL,
4025
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT,
4026
};
4027

4028
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
319✔
4029
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
319✔
4030

4031
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
319✔
4032
  if (TSDB_CODE_SUCCESS == code) {
319!
4033
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
319✔
4034
  }
4035
  if (TSDB_CODE_SUCCESS == code) {
319!
4036
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
319✔
4037
  }
4038
  if (TSDB_CODE_SUCCESS == code) {
319!
4039
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
319✔
4040
  }
4041
  if (TSDB_CODE_SUCCESS == code) {
319!
4042
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
319✔
4043
  }
4044
  if (TSDB_CODE_SUCCESS == code) {
319!
4045
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
319✔
4046
  }
4047
  if (TSDB_CODE_SUCCESS == code) {
319!
4048
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
319✔
4049
  }
4050
  if (TSDB_CODE_SUCCESS == code) {
319!
4051
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
319✔
4052
  }
4053
  if (TSDB_CODE_SUCCESS == code) {
319!
4054
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
319✔
4055
  }
4056
  if (TSDB_CODE_SUCCESS == code) {
319!
4057
    code = tlvEncodeI64(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL, pNode->rangeInterval);
319✔
4058
  }
4059
  if (TSDB_CODE_SUCCESS == code) {
319!
4060
    code = tlvEncodeI8(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT, pNode->rangeIntervalUnit);
319✔
4061
  }
4062

4063
  return code;
319✔
4064
}
4065

4066
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
12,909✔
4067
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
12,909✔
4068

4069
  int32_t code = TSDB_CODE_SUCCESS;
12,909✔
4070
  STlv*   pTlv = NULL;
12,909✔
4071
  tlvForEach(pDecoder, pTlv, code) {
135,192!
4072
    switch (pTlv->type) {
122,284!
4073
      case PHY_INERP_FUNC_CODE_BASE_NODE:
12,909✔
4074
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
12,909✔
4075
        break;
12,909✔
4076
      case PHY_INERP_FUNC_CODE_EXPR:
149✔
4077
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
149✔
4078
        break;
149✔
4079
      case PHY_INERP_FUNC_CODE_FUNCS:
12,909✔
4080
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
12,909✔
4081
        break;
12,909✔
4082
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
12,909✔
4083
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
12,909✔
4084
        break;
12,907✔
4085
      case PHY_INERP_FUNC_CODE_INTERVAL:
12,907✔
4086
        code = tlvDecodeI64(pTlv, &pNode->interval);
12,907✔
4087
        break;
12,906✔
4088
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
12,906✔
4089
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
12,906✔
4090
        break;
12,907✔
4091
      case PHY_INERP_FUNC_CODE_FILL_MODE:
12,907✔
4092
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
12,907✔
4093
        break;
12,907✔
4094
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
5,966✔
4095
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
5,966✔
4096
        break;
5,966✔
4097
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
12,907✔
4098
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
12,907✔
4099
        break;
12,908✔
4100
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL:
12,908✔
4101
        code = tlvDecodeI64(pTlv, &pNode->rangeInterval);
12,908✔
4102
        break;
12,908✔
4103
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT:
12,907✔
4104
        code = tlvDecodeI8(pTlv, &pNode->rangeIntervalUnit);
12,907✔
4105
        break;
12,907✔
4106
      default:
×
4107
        break;
×
4108
    }
4109
  }
4110

4111
  return code;
12,902✔
4112
}
4113

4114
enum {
4115
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
4116
  PHY_FORECAST_FUNC_CODE_EXPR,
4117
  PHY_FORECAST_FUNC_CODE_FUNCS,
4118
};
4119

4120
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4121
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
4122

4123
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
4124
  if (TSDB_CODE_SUCCESS == code) {
×
4125
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
4126
  }
4127
  if (TSDB_CODE_SUCCESS == code) {
×
4128
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
4129
  }
4130

4131
  return code;
×
4132
}
4133

4134
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
4135
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
4136

4137
  int32_t code = TSDB_CODE_SUCCESS;
×
4138
  STlv*   pTlv = NULL;
×
4139
  tlvForEach(pDecoder, pTlv, code) {
×
4140
    switch (pTlv->type) {
×
4141
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
×
4142
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
×
4143
        break;
×
4144
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
4145
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
4146
        break;
×
4147
      case PHY_FORECAST_FUNC_CODE_FUNCS:
×
4148
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
×
4149
        break;
×
4150
      default:
×
4151
        break;
×
4152
    }
4153
  }
4154

4155
  return code;
×
4156
}
4157

4158
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
4159

4160
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
37,791✔
4161
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
37,791✔
4162
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
37,791✔
4163
}
4164

4165
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
1,603,818✔
4166
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
1,603,818✔
4167

4168
  int32_t code = TSDB_CODE_SUCCESS;
1,603,818✔
4169
  STlv*   pTlv = NULL;
1,603,818✔
4170
  tlvForEach(pDecoder, pTlv, code) {
3,207,964!
4171
    switch (pTlv->type) {
1,603,910!
4172
      case PHY_DATA_SINK_CODE_INPUT_DESC:
1,603,910✔
4173
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
1,603,910✔
4174
        break;
1,604,146✔
4175
      default:
×
4176
        break;
×
4177
    }
4178
  }
4179

4180
  return code;
1,603,995✔
4181
}
4182

4183
enum { PHY_DISPATCH_CODE_SINK = 1 };
4184

4185
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
36,783✔
4186
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
36,783✔
4187
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
36,783✔
4188
}
4189

4190
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
1,596,682✔
4191
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
1,596,682✔
4192

4193
  int32_t code = TSDB_CODE_SUCCESS;
1,596,682✔
4194
  STlv*   pTlv = NULL;
1,596,682✔
4195
  tlvForEach(pDecoder, pTlv, code) {
3,193,280!
4196
    switch (pTlv->type) {
1,596,991!
4197
      case PHY_DISPATCH_CODE_SINK:
1,596,991✔
4198
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,596,991✔
4199
        break;
1,596,598✔
4200
      default:
×
4201
        break;
×
4202
    }
4203
  }
4204

4205
  return code;
1,595,521✔
4206
}
4207

4208
enum {
4209
  PHY_QUERY_INSERT_CODE_SINK = 1,
4210
  PHY_QUERY_INSERT_CODE_COLS,
4211
  PHY_QUERY_INSERT_CODE_TABLE_ID,
4212
  PHY_QUERY_INSERT_CODE_STABLE_ID,
4213
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
4214
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
4215
  PHY_QUERY_INSERT_CODE_VG_ID,
4216
  PHY_QUERY_INSERT_CODE_EP_SET,
4217
  PHY_QUERY_INSERT_CODE_EXPLAIN
4218
};
4219

4220
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
10✔
4221
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
10✔
4222

4223
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
10✔
4224
  if (TSDB_CODE_SUCCESS == code) {
10!
4225
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
10✔
4226
  }
4227
  if (TSDB_CODE_SUCCESS == code) {
10!
4228
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
10✔
4229
  }
4230
  if (TSDB_CODE_SUCCESS == code) {
10!
4231
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
10✔
4232
  }
4233
  if (TSDB_CODE_SUCCESS == code) {
10!
4234
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
10✔
4235
  }
4236
  if (TSDB_CODE_SUCCESS == code) {
10!
4237
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
10✔
4238
  }
4239
  if (TSDB_CODE_SUCCESS == code) {
10!
4240
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
10✔
4241
  }
4242
  if (TSDB_CODE_SUCCESS == code) {
10!
4243
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
10✔
4244
  }
4245
  if (TSDB_CODE_SUCCESS == code) {
10!
4246
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
10✔
4247
  }
4248

4249
  return code;
10✔
4250
}
4251

4252
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
179✔
4253
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
179✔
4254

4255
  int32_t code = TSDB_CODE_SUCCESS;
179✔
4256
  STlv*   pTlv = NULL;
179✔
4257
  tlvForEach(pDecoder, pTlv, code) {
1,790!
4258
    switch (pTlv->type) {
1,611!
4259
      case PHY_QUERY_INSERT_CODE_SINK:
179✔
4260
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
179✔
4261
        break;
179✔
4262
      case PHY_QUERY_INSERT_CODE_COLS:
179✔
4263
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
179✔
4264
        break;
179✔
4265
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
179✔
4266
        code = tlvDecodeU64(pTlv, &pNode->tableId);
179✔
4267
        break;
179✔
4268
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
179✔
4269
        code = tlvDecodeU64(pTlv, &pNode->stableId);
179✔
4270
        break;
179✔
4271
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
179✔
4272
        code = tlvDecodeI8(pTlv, &pNode->tableType);
179✔
4273
        break;
179✔
4274
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
179✔
4275
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
179✔
4276
        break;
179✔
4277
      case PHY_QUERY_INSERT_CODE_VG_ID:
179✔
4278
        code = tlvDecodeI32(pTlv, &pNode->vgId);
179✔
4279
        break;
179✔
4280
      case PHY_QUERY_INSERT_CODE_EP_SET:
179✔
4281
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
179✔
4282
        break;
179✔
4283
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
179✔
4284
        code = tlvDecodeBool(pTlv, &pNode->explain);
179✔
4285
        break;
179✔
4286
      default:
×
4287
        break;
×
4288
    }
4289
  }
4290

4291
  return code;
179✔
4292
}
4293

4294
enum {
4295
  PHY_DELETER_CODE_SINK = 1,
4296
  PHY_DELETER_CODE_TABLE_ID,
4297
  PHY_DELETER_CODE_TABLE_TYPE,
4298
  PHY_DELETER_CODE_TABLE_FNAME,
4299
  PHY_DELETER_CODE_TS_COL_NAME,
4300
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4301
  PHY_DELETER_CODE_AFFECTED_ROWS,
4302
  PHY_DELETER_CODE_START_TS,
4303
  PHY_DELETER_CODE_END_TS
4304
};
4305

4306
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,009✔
4307
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
1,009✔
4308

4309
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,009✔
4310
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4311
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
1,009✔
4312
  }
4313
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4314
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
1,009✔
4315
  }
4316
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4317
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
1,009✔
4318
  }
4319
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4320
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
1,009✔
4321
  }
4322
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4323
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
1,009✔
4324
  }
4325
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4326
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
1,009✔
4327
  }
4328
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4329
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
1,009✔
4330
  }
4331
  if (TSDB_CODE_SUCCESS == code) {
1,009!
4332
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
1,009✔
4333
  }
4334

4335
  return code;
1,009✔
4336
}
4337

4338
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
7,013✔
4339
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
7,013✔
4340

4341
  int32_t code = TSDB_CODE_SUCCESS;
7,013✔
4342
  STlv*   pTlv = NULL;
7,013✔
4343
  tlvForEach(pDecoder, pTlv, code) {
70,130!
4344
    switch (pTlv->type) {
63,117!
4345
      case PHY_DELETER_CODE_SINK:
7,013✔
4346
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
7,013✔
4347
        break;
7,013✔
4348
      case PHY_DELETER_CODE_TABLE_ID:
7,013✔
4349
        code = tlvDecodeU64(pTlv, &pNode->tableId);
7,013✔
4350
        break;
7,013✔
4351
      case PHY_DELETER_CODE_TABLE_TYPE:
7,013✔
4352
        code = tlvDecodeI8(pTlv, &pNode->tableType);
7,013✔
4353
        break;
7,013✔
4354
      case PHY_DELETER_CODE_TABLE_FNAME:
7,013✔
4355
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
7,013✔
4356
        break;
7,013✔
4357
      case PHY_DELETER_CODE_TS_COL_NAME:
7,013✔
4358
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
7,013✔
4359
        break;
7,013✔
4360
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
7,013✔
4361
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
7,013✔
4362
        break;
7,013✔
4363
      case PHY_DELETER_CODE_AFFECTED_ROWS:
7,013✔
4364
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
7,013✔
4365
        break;
7,013✔
4366
      case PHY_DELETER_CODE_START_TS:
7,013✔
4367
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
7,013✔
4368
        break;
7,013✔
4369
      case PHY_DELETER_CODE_END_TS:
7,013✔
4370
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
7,013✔
4371
        break;
7,013✔
4372
      default:
×
4373
        break;
×
4374
    }
4375
  }
4376

4377
  return code;
7,013✔
4378
}
4379

4380
enum {
4381
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4382
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4383
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4384
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4385
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4386
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4387
};
4388

4389
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4390
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
4391

4392
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
4393
  if (TSDB_CODE_SUCCESS == code) {
×
4394
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
×
4395
  }
4396
  if (TSDB_CODE_SUCCESS == code) {
×
4397
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
×
4398
  }
4399
  if (TSDB_CODE_SUCCESS == code) {
×
4400
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
×
4401
  }
4402
  if (TSDB_CODE_SUCCESS == code) {
×
4403
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
×
4404
  }
4405
  if (TSDB_CODE_SUCCESS == code) {
×
4406
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
×
4407
  }
4408

4409
  return code;
×
4410
}
4411

4412
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
6,279✔
4413
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
6,279✔
4414

4415
  int32_t code = TSDB_CODE_SUCCESS;
6,279✔
4416
  STlv*   pTlv = NULL;
6,279✔
4417
  tlvForEach(pDecoder, pTlv, code) {
37,674!
4418
    switch (pTlv->type) {
31,395!
4419
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
6,279✔
4420
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,279✔
4421
        break;
6,279✔
4422
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4423
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4424
        break;
×
4425
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
6,279✔
4426
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
6,279✔
4427
        break;    
6,279✔
4428
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
6,279✔
4429
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
6,279✔
4430
        break;    
6,279✔
4431
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
6,279✔
4432
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
6,279✔
4433
        break;    
6,279✔
4434
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
6,279✔
4435
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
6,279✔
4436
        break;    
6,279✔
4437
      default:
×
4438
        break;
×
4439
    }
4440
  }
4441

4442
  return code;
6,279✔
4443
}
4444

4445

4446
enum {
4447
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4448
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4449
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4450
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4451
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4452
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4453
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4454
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4455
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4456
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS,
4457
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID,
4458
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME,
4459
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME,
4460
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID,
4461
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET,
4462
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS,
4463
  PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME
4464
};
4465

4466
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4467
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
×
4468

4469
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
4470
  if (TSDB_CODE_SUCCESS == code) {
×
4471
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
×
4472
  }
4473
  if (TSDB_CODE_SUCCESS == code) {
×
4474
    switch (pNode->qType) {
×
4475
      case DYN_QTYPE_STB_HASH: {
×
4476
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
×
4477
        if (TSDB_CODE_SUCCESS == code) {
×
4478
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
×
4479
        }
4480
        if (TSDB_CODE_SUCCESS == code) {
×
4481
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
×
4482
        }
4483
        if (TSDB_CODE_SUCCESS == code) {
×
4484
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
×
4485
        }
4486
        if (TSDB_CODE_SUCCESS == code) {
×
4487
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
×
4488
        }
4489
        if (TSDB_CODE_SUCCESS == code) {
×
4490
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
×
4491
        }
4492
        if (TSDB_CODE_SUCCESS == code) {
×
4493
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
×
4494
        }
4495
        break;
×
4496
      }
4497
      case DYN_QTYPE_VTB_SCAN: {
×
4498
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS, pNode->vtbScan.scanAllCols);
×
4499
        if (TSDB_CODE_SUCCESS == code) {
×
4500
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID, pNode->vtbScan.suid);
×
4501
        }
4502
        if (TSDB_CODE_SUCCESS == code) {
×
4503
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME, pNode->vtbScan.dbName);
×
4504
        }
4505
        if (TSDB_CODE_SUCCESS == code) {
×
4506
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME, pNode->vtbScan.stbName);
×
4507
        }
4508
        if (TSDB_CODE_SUCCESS == code) {
×
4509
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID, pNode->vtbScan.accountId);
×
4510
        }
4511
        if (TSDB_CODE_SUCCESS == code) {
×
4512
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET, epSetToMsg, &pNode->vtbScan.mgmtEpSet);
×
4513
        }
4514
        if (TSDB_CODE_SUCCESS == code) {
×
4515
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS, nodeListToMsg, pNode->vtbScan.pScanCols);
×
4516
        }
4517
        break;
×
4518
      }
4519
      default:
×
4520
        return TSDB_CODE_INVALID_PARA;
×
4521
    }
4522
  }
4523
  if (TSDB_CODE_SUCCESS == code) {
×
4524
    code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME, pNode->dynTbname);
×
4525
  }
4526
  return code;
×
4527
}
4528

4529
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
6,285✔
4530
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
6,285✔
4531

4532
  int32_t code = TSDB_CODE_SUCCESS;
6,285✔
4533
  STlv*   pTlv = NULL;
6,285✔
4534
  tlvForEach(pDecoder, pTlv, code) {
69,135!
4535
    switch (pTlv->type) {
62,850!
4536
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
6,285✔
4537
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,285✔
4538
        break;
6,285✔
4539
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
6,285✔
4540
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
6,285✔
4541
        break;
6,285✔
4542
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
6,279✔
4543
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
6,279✔
4544
        break;
6,279✔
4545
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
6,279✔
4546
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
6,279✔
4547
        break;
6,279✔
4548
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
6,279✔
4549
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
6,279✔
4550
        break;
6,279✔
4551
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
6,279✔
4552
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
6,279✔
4553
        break;
6,279✔
4554
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
6,279✔
4555
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
6,279✔
4556
        break;      
6,279✔
4557
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
6,279✔
4558
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
6,279✔
4559
        break;
6,279✔
4560
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
6,279✔
4561
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
6,279✔
4562
        break;
6,279✔
4563
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS:
6✔
4564
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.scanAllCols);
6✔
4565
        break;
6✔
4566
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID:
6✔
4567
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.suid);
6✔
4568
        break;
6✔
4569
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME:
6✔
4570
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.dbName, sizeof(pNode->vtbScan.dbName));
6✔
4571
        break;
6✔
4572
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME:
6✔
4573
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.stbName, sizeof(pNode->vtbScan.stbName));
6✔
4574
        break;
6✔
4575
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID:
6✔
4576
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.accountId);
6✔
4577
        break;
6✔
4578
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET:
6✔
4579
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->vtbScan.mgmtEpSet);
6✔
4580
        break;
6✔
4581
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS:
6✔
4582
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pScanCols);
6✔
4583
        break;
6✔
4584
      case PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME:
6,285✔
4585
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
6,285✔
4586
        break;
6,285✔
4587
      default:
×
4588
        break;
×
4589
    }
4590
  }
4591

4592
  return code;
6,285✔
4593
}
4594

4595

4596

4597
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4598

4599
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
37,832✔
4600
  const SSubplanId* pNode = (const SSubplanId*)pObj;
37,832✔
4601

4602
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
37,832✔
4603
  if (TSDB_CODE_SUCCESS == code) {
37,830!
4604
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
37,833✔
4605
  }
4606
  if (TSDB_CODE_SUCCESS == code) {
37,834!
4607
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
37,837✔
4608
  }
4609

4610
  return code;
37,828✔
4611
}
4612

4613
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4614
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4615

4616
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4617
  if (TSDB_CODE_SUCCESS == code) {
×
4618
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4619
  }
4620
  if (TSDB_CODE_SUCCESS == code) {
×
4621
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4622
  }
4623

4624
  return code;
×
4625
}
4626

4627
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
1,604,682✔
4628
  SSubplanId* pNode = (SSubplanId*)pObj;
1,604,682✔
4629

4630
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
1,604,682✔
4631
  if (TSDB_CODE_SUCCESS == code) {
1,604,742!
4632
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
1,604,758✔
4633
  }
4634
  if (TSDB_CODE_SUCCESS == code) {
1,604,745✔
4635
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
1,604,640✔
4636
  }
4637

4638
  return code;
1,604,671✔
4639
}
4640

4641
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4642
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4643

4644
  int32_t code = TSDB_CODE_SUCCESS;
×
4645
  STlv*   pTlv = NULL;
×
4646
  tlvForEach(pDecoder, pTlv, code) {
×
4647
    switch (pTlv->type) {
×
4648
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4649
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4650
        break;
×
4651
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4652
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4653
        break;
×
4654
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4655
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4656
        break;
×
4657
      default:
×
4658
        break;
×
4659
    }
4660
  }
4661

4662
  return code;
×
4663
}
4664

4665
enum {
4666
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4667
  SUBPLAN_CODE_ROOT_NODE,
4668
  SUBPLAN_CODE_DATA_SINK,
4669
  SUBPLAN_CODE_TAG_COND,
4670
  SUBPLAN_CODE_TAG_INDEX_COND
4671
};
4672

4673
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
37,833✔
4674
  const SSubplan* pNode = (const SSubplan*)pObj;
37,833✔
4675

4676
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
37,833✔
4677
  if (TSDB_CODE_SUCCESS == code) {
37,827!
4678
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
37,828✔
4679
  }
4680
  if (TSDB_CODE_SUCCESS == code) {
37,815!
4681
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
37,821✔
4682
  }
4683
  if (TSDB_CODE_SUCCESS == code) {
37,815!
4684
    code = tlvEncodeValueI32(pEncoder, pNode->level);
37,823✔
4685
  }
4686
  if (TSDB_CODE_SUCCESS == code) {
37,810!
4687
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
37,813✔
4688
  }
4689
  if (TSDB_CODE_SUCCESS == code) {
37,836!
4690
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
37,839✔
4691
  }
4692
  if (TSDB_CODE_SUCCESS == code) {
37,841!
4693
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
37,843✔
4694
  }
4695
  if (TSDB_CODE_SUCCESS == code) {
37,831!
4696
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
37,832✔
4697
  }
4698
  if (TSDB_CODE_SUCCESS == code) {
37,831✔
4699
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
37,824✔
4700
  }
4701
  if (TSDB_CODE_SUCCESS == code) {
37,834✔
4702
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
37,831✔
4703
  }
4704
  if (TSDB_CODE_SUCCESS == code) {
37,833✔
4705
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
37,830✔
4706
  }
4707
  if (TSDB_CODE_SUCCESS == code) {
37,825!
4708
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
37,825✔
4709
  }
4710
  if (TSDB_CODE_SUCCESS == code) {
37,823✔
4711
    code = tlvEncodeValueBool(pEncoder, pNode->processOneBlock);
37,813✔
4712
  }
4713
  if (TSDB_CODE_SUCCESS == code) {
37,831✔
4714
    code = tlvEncodeValueBool(pEncoder, pNode->dynTbname);
37,819✔
4715
  }
4716
  return code;
37,819✔
4717
}
4718

4719
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
37,818✔
4720
  const SSubplan* pNode = (const SSubplan*)pObj;
37,818✔
4721

4722
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
37,818✔
4723
  if (TSDB_CODE_SUCCESS == code) {
37,820!
4724
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
37,822✔
4725
  }
4726
  if (TSDB_CODE_SUCCESS == code) {
37,809!
4727
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
37,811✔
4728
  }
4729
  if (TSDB_CODE_SUCCESS == code) {
37,787!
4730
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
37,789✔
4731
  }
4732
  if (TSDB_CODE_SUCCESS == code) {
37,788!
4733
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
37,790✔
4734
  }
4735

4736
  return code;
37,808✔
4737
}
4738

4739
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
1,604,757✔
4740
  SSubplan* pNode = (SSubplan*)pObj;
1,604,757✔
4741

4742
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
1,604,757✔
4743
  if (TSDB_CODE_SUCCESS == code) {
1,604,669!
4744
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
1,604,673✔
4745
  }
4746
  if (TSDB_CODE_SUCCESS == code) {
1,604,597✔
4747
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
1,604,524✔
4748
  }
4749
  if (TSDB_CODE_SUCCESS == code) {
1,604,676✔
4750
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
1,604,621✔
4751
  }
4752
  if (TSDB_CODE_SUCCESS == code) {
1,604,638✔
4753
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
1,604,596✔
4754
  }
4755
  if (TSDB_CODE_SUCCESS == code) {
1,604,847✔
4756
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
1,604,816✔
4757
  }
4758
  if (TSDB_CODE_SUCCESS == code) {
1,604,890✔
4759
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
1,604,745✔
4760
  }
4761
  if (TSDB_CODE_SUCCESS == code) {
1,605,115✔
4762
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
1,604,973✔
4763
  }
4764
  if (TSDB_CODE_SUCCESS == code) {
1,604,958✔
4765
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
1,604,833✔
4766
  }
4767
  if (TSDB_CODE_SUCCESS == code) {
1,604,884✔
4768
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
1,604,773✔
4769
  }
4770
  if (TSDB_CODE_SUCCESS == code) {
1,604,770✔
4771
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
1,604,544✔
4772
  }
4773
  if (TSDB_CODE_SUCCESS == code) {
1,604,780✔
4774
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
1,604,553✔
4775
  }
4776
  if (TSDB_CODE_SUCCESS == code) {
1,604,743✔
4777
    code = tlvDecodeValueBool(pDecoder, &pNode->processOneBlock);
1,604,521✔
4778
  }
4779
  if (TSDB_CODE_SUCCESS == code) {
1,604,703✔
4780
    code = tlvDecodeValueBool(pDecoder, &pNode->dynTbname);
1,604,482✔
4781
  }
4782
  return code;
1,604,499✔
4783
}
4784

4785
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
1,604,760✔
4786
  SSubplan* pNode = (SSubplan*)pObj;
1,604,760✔
4787

4788
  int32_t code = TSDB_CODE_SUCCESS;
1,604,760✔
4789
  STlv*   pTlv = NULL;
1,604,760✔
4790
  tlvForEach(pDecoder, pTlv, code) {
6,487,773!
4791
    switch (pTlv->type) {
4,884,702!
4792
      case SUBPLAN_CODE_INLINE_ATTRS:
1,604,799✔
4793
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
1,604,799✔
4794
        break;
1,604,387✔
4795
      case SUBPLAN_CODE_ROOT_NODE:
1,604,512✔
4796
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
1,604,512✔
4797
        break;
1,602,880✔
4798
      case SUBPLAN_CODE_DATA_SINK:
1,602,870✔
4799
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
1,602,870✔
4800
        break;
1,603,218✔
4801
      case SUBPLAN_CODE_TAG_COND:
60,814✔
4802
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
60,814✔
4803
        break;
60,828✔
4804
      case SUBPLAN_CODE_TAG_INDEX_COND:
11,707✔
4805
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
11,707✔
4806
        break;
11,700✔
4807
      default:
×
4808
        break;
×
4809
    }
4810
  }
4811

4812
  return code;
1,602,950✔
4813
}
4814

4815
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4816

4817
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
36✔
4818
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
36✔
4819

4820
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
36✔
4821
  if (TSDB_CODE_SUCCESS == code) {
36!
4822
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
36✔
4823
  }
4824

4825
  return code;
36✔
4826
}
4827

4828
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
36✔
4829
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
36✔
4830

4831
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
36✔
4832
  if (TSDB_CODE_SUCCESS == code) {
36!
4833
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
36✔
4834
  }
4835

4836
  return code;
36✔
4837
}
4838

4839
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
18✔
4840
  SQueryPlan* pNode = (SQueryPlan*)pObj;
18✔
4841

4842
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
18✔
4843
  if (TSDB_CODE_SUCCESS == code) {
18!
4844
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
18✔
4845
  }
4846

4847
  return code;
18✔
4848
}
4849

4850
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
18✔
4851
  SQueryPlan* pNode = (SQueryPlan*)pObj;
18✔
4852

4853
  int32_t code = TSDB_CODE_SUCCESS;
18✔
4854
  STlv*   pTlv = NULL;
18✔
4855
  tlvForEach(pDecoder, pTlv, code) {
54!
4856
    switch (pTlv->type) {
36!
4857
      case QUERY_PLAN_CODE_INLINE_ATTRS:
18✔
4858
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
18✔
4859
        break;
18✔
4860
      case QUERY_PLAN_CODE_SUBPLANS:
18✔
4861
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
18✔
4862
        break;
18✔
4863
      default:
×
4864
        break;
×
4865
    }
4866
  }
4867

4868
  return code;
18✔
4869
}
4870

4871
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,797,942✔
4872
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4873
  int32_t code = TSDB_CODE_SUCCESS;
1,797,942✔
4874
  switch (nodeType(pObj)) {
1,797,942!
4875
    case QUERY_NODE_COLUMN:
235,153✔
4876
      code = columnNodeToMsg(pObj, pEncoder);
235,153✔
4877
      break;
235,052✔
4878
    case QUERY_NODE_VALUE:
641,115✔
4879
      code = valueNodeToMsg(pObj, pEncoder);
641,115✔
4880
      break;
641,591✔
4881
    case QUERY_NODE_OPERATOR:
10,461✔
4882
      code = operatorNodeToMsg(pObj, pEncoder);
10,461✔
4883
      break;
10,462✔
4884
    case QUERY_NODE_LOGIC_CONDITION:
2,265✔
4885
      code = logicConditionNodeToMsg(pObj, pEncoder);
2,265✔
4886
      break;
2,259✔
4887
    case QUERY_NODE_FUNCTION:
51,636✔
4888
      code = functionNodeToMsg(pObj, pEncoder);
51,636✔
4889
      break;
51,629✔
4890
    case QUERY_NODE_ORDER_BY_EXPR:
4,365✔
4891
      code = orderByExprNodeToMsg(pObj, pEncoder);
4,365✔
4892
      break;
4,365✔
4893
    case QUERY_NODE_LIMIT:
12,103✔
4894
      code = limitNodeToMsg(pObj, pEncoder);
12,103✔
4895
      break;
12,102✔
4896
    case QUERY_NODE_NODE_LIST:
889✔
4897
      code = nodeListNodeToMsg(pObj, pEncoder);
889✔
4898
      break;
889✔
4899
    case QUERY_NODE_TARGET:
192,672✔
4900
      code = targetNodeToMsg(pObj, pEncoder);
192,672✔
4901
      break;
192,616✔
4902
    case QUERY_NODE_TIME_RANGE:
×
4903
      code = timeRangeNodeToMsg(pObj, pEncoder);
×
4904
      break;
×
4905
    case QUERY_NODE_DATABLOCK_DESC:
121,585✔
4906
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
121,585✔
4907
      break;
121,523✔
4908
    case QUERY_NODE_SLOT_DESC:
353,702✔
4909
      code = slotDescNodeToMsg(pObj, pEncoder);
353,702✔
4910
      break;
353,357✔
4911
    case QUERY_NODE_DOWNSTREAM_SOURCE:
19,447✔
4912
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
19,447✔
4913
      break;
19,447✔
4914
    case QUERY_NODE_LEFT_VALUE:
408✔
4915
      break;
408✔
4916
    case QUERY_NODE_WHEN_THEN:
4✔
4917
      code = whenThenNodeToMsg(pObj, pEncoder);
4✔
4918
      break;
4✔
4919
    case QUERY_NODE_CASE_WHEN:
4✔
4920
      code = caseWhenNodeToMsg(pObj, pEncoder);
4✔
4921
      break;
4✔
4922
    case QUERY_NODE_WINDOW_OFFSET:
×
4923
      code = windowOffsetNodeToMsg(pObj, pEncoder);
×
4924
      break;
×
4925
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
296✔
4926
      code = physiTagScanNodeToMsg(pObj, pEncoder);
296✔
4927
      break;
298✔
4928
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
4929
      code = physiScanNodeToMsg(pObj, pEncoder);
×
4930
      break;
×
4931
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
×
4932
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4933
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
×
4934
      break;
×
4935
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
30,891✔
4936
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4937
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4938
      code = physiTableScanNodeToMsg(pObj, pEncoder);
30,891✔
4939
      break;
30,882✔
4940
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
1,031✔
4941
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
1,031✔
4942
      break;
1,034✔
4943
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
9,438✔
4944
      code = physiProjectNodeToMsg(pObj, pEncoder);
9,438✔
4945
      break;
9,444✔
4946
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
2,582✔
4947
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
2,582✔
4948
      break;
2,582✔
4949
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
4950
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
×
4951
      break;
×
4952
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
13,117✔
4953
      code = physiAggNodeToMsg(pObj, pEncoder);
13,117✔
4954
      break;
13,121✔
4955
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
17,742✔
4956
      code = physiExchangeNodeToMsg(pObj, pEncoder);
17,742✔
4957
      break;
17,742✔
4958
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
1,964✔
4959
      code = physiMergeNodeToMsg(pObj, pEncoder);
1,964✔
4960
      break;
1,964✔
4961
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
1,982✔
4962
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4963
      code = physiSortNodeToMsg(pObj, pEncoder);
1,982✔
4964
      break;
1,983✔
4965
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
3,526✔
4966
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4967
      code = physiIntervalNodeToMsg(pObj, pEncoder);
3,526✔
4968
      break;
3,521✔
4969
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
4✔
4970
      code = physiFillNodeToMsg(pObj, pEncoder);
4✔
4971
      break;
4✔
4972
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
48✔
4973
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
48✔
4974
      break;
48✔
4975
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
4976
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
4977
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
4978
      code = physiExternalWindowNodeToMsg(pObj, pEncoder);
×
4979
      break;
×
4980
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
29✔
4981
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
29✔
4982
      break;
29✔
4983
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
45✔
4984
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
45✔
4985
      break;
45✔
4986
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
38✔
4987
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
38✔
4988
      break;
38✔
4989
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4990
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
4991
      break;
×
4992
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
128✔
4993
      code = physiPartitionNodeToMsg(pObj, pEncoder);
128✔
4994
      break;
128✔
4995
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
18✔
4996
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
18✔
4997
      break;
18✔
4998
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
319✔
4999
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
319✔
5000
      break;
319✔
5001
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
×
5002
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
5003
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
5004
      break;
×
5005
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
36,786✔
5006
      code = physiDispatchNodeToMsg(pObj, pEncoder);
36,786✔
5007
      break;
36,769✔
5008
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
10✔
5009
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
10✔
5010
      break;
10✔
5011
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,009✔
5012
      code = physiDeleteNodeToMsg(pObj, pEncoder);
1,009✔
5013
      break;
1,009✔
5014
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
5015
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
×
5016
      break;
×
5017
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
×
5018
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
×
5019
      break;
×
5020
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
2,362✔
5021
      code = physiVirtualTableScanNodeToMsg(pObj, pEncoder);
2,362✔
5022
      break;
2,362✔
5023
    case QUERY_NODE_PHYSICAL_SUBPLAN:
37,839✔
5024
      code = subplanToMsg(pObj, pEncoder);
37,839✔
5025
      break;
37,805✔
5026
    case QUERY_NODE_PHYSICAL_PLAN:
36✔
5027
      code = queryPlanToMsg(pObj, pEncoder);
36✔
5028
      break;
36✔
5029
    default:
×
5030
      break;
×
5031
  }
5032
  if (TSDB_CODE_SUCCESS != code) {
1,797,792!
5033
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
5034
  }
5035
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
5036
  return code;
1,799,697✔
5037
}
5038

5039
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
62,523,749✔
5040
  int32_t code = TSDB_CODE_SUCCESS;
62,523,749✔
5041
  switch (nodeType(pObj)) {
62,523,749!
5042
    case QUERY_NODE_COLUMN:
12,541,769✔
5043
      code = msgToColumnNode(pDecoder, pObj);
12,541,769✔
5044
      break;
12,566,220✔
5045
    case QUERY_NODE_VALUE:
2,918,391✔
5046
      code = msgToValueNode(pDecoder, pObj);
2,918,391✔
5047
      break;
2,900,889✔
5048
    case QUERY_NODE_OPERATOR:
1,413,762✔
5049
      code = msgToOperatorNode(pDecoder, pObj);
1,413,762✔
5050
      break;
1,412,842✔
5051
    case QUERY_NODE_LOGIC_CONDITION:
266,278✔
5052
      code = msgToLogicConditionNode(pDecoder, pObj);
266,278✔
5053
      break;
266,298✔
5054
    case QUERY_NODE_FUNCTION:
2,845,354✔
5055
      code = msgToFunctionNode(pDecoder, pObj);
2,845,354✔
5056
      break;
2,838,401✔
5057
    case QUERY_NODE_ORDER_BY_EXPR:
247,384✔
5058
      code = msgToOrderByExprNode(pDecoder, pObj);
247,384✔
5059
      break;
247,295✔
5060
    case QUERY_NODE_LIMIT:
165,673✔
5061
      code = msgToLimitNode(pDecoder, pObj);
165,673✔
5062
      break;
165,457✔
5063
    case QUERY_NODE_NODE_LIST:
42,351✔
5064
      code = msgToNodeListNode(pDecoder, pObj);
42,351✔
5065
      break;
42,350✔
5066
    case QUERY_NODE_TARGET:
10,679,412✔
5067
      code = msgToTargetNode(pDecoder, pObj);
10,679,412✔
5068
      break;
10,623,597✔
5069
    case QUERY_NODE_TIME_RANGE:
×
5070
      code = msgToTimeRangeNode(pDecoder, pObj);
×
5071
      break;
×
5072
    case QUERY_NODE_DATABLOCK_DESC:
4,922,667✔
5073
      code = msgToDataBlockDescNode(pDecoder, pObj);
4,922,667✔
5074
      break;
4,921,298✔
5075
    case QUERY_NODE_SLOT_DESC:
19,354,457✔
5076
      code = msgToSlotDescNode(pDecoder, pObj);
19,354,457✔
5077
      break;
18,823,162✔
5078
    case QUERY_NODE_DOWNSTREAM_SOURCE:
852,773✔
5079
      code = msgToDownstreamSourceNode(pDecoder, pObj);
852,773✔
5080
    case QUERY_NODE_LEFT_VALUE:
913,501✔
5081
      break;
913,501✔
5082
    case QUERY_NODE_WHEN_THEN:
5,263✔
5083
      code = msgToWhenThenNode(pDecoder, pObj);
5,263✔
5084
      break;
5,264✔
5085
    case QUERY_NODE_CASE_WHEN:
4,299✔
5086
      code = msgToCaseWhenNode(pDecoder, pObj);
4,299✔
5087
      break;
4,299✔
5088
    case QUERY_NODE_WINDOW_OFFSET:
829✔
5089
      code = msgToWindowOffsetNode(pDecoder, pObj);
829✔
5090
      break;
829✔
5091
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
33,483✔
5092
      code = msgToPhysiTagScanNode(pDecoder, pObj);
33,483✔
5093
      break;
33,467✔
5094
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
20✔
5095
      code = msgToPhysiScanNode(pDecoder, pObj);
20✔
5096
      break;
20✔
5097
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
4,112✔
5098
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5099
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
4,112✔
5100
      break;
4,111✔
5101
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,134,209✔
5102
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5103
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5104
      code = msgToPhysiTableScanNode(pDecoder, pObj);
1,134,209✔
5105
      break;
1,132,806✔
5106
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
38,366✔
5107
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
38,366✔
5108
      break;
38,353✔
5109
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
493,119✔
5110
      code = msgToPhysiProjectNode(pDecoder, pObj);
493,119✔
5111
      break;
492,790✔
5112
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
90,546✔
5113
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
90,546✔
5114
      break;
90,526✔
5115
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
6,279✔
5116
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
6,279✔
5117
      break;
6,279✔
5118
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
655,520✔
5119
      code = msgToPhysiAggNode(pDecoder, pObj);
655,520✔
5120
      break;
654,818✔
5121
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
578,450✔
5122
      code = msgToPhysiExchangeNode(pDecoder, pObj);
578,450✔
5123
      break;
578,400✔
5124
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
54,203✔
5125
      code = msgToPhysiMergeNode(pDecoder, pObj);
54,203✔
5126
      break;
54,197✔
5127
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
148,302✔
5128
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5129
      code = msgToPhysiSortNode(pDecoder, pObj);
148,302✔
5130
      break;
148,253✔
5131
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
19,166✔
5132
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5133
      code = msgToPhysiIntervalNode(pDecoder, pObj);
19,166✔
5134
      break;
19,128✔
5135
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
3,208✔
5136
      code = msgToPhysiFillNode(pDecoder, pObj);
3,208✔
5137
      break;
3,208✔
5138
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,295✔
5139
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
1,295✔
5140
      break;
1,295✔
5141
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
5142
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5143
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5144
      code = msgToPhysiExternalWindowNode(pDecoder, pObj);
×
5145
      break;
×
5146
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
2,829✔
5147
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
2,829✔
5148
      break;
2,829✔
5149
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
122✔
5150
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
122✔
5151
      break;
122✔
5152
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
127✔
5153
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
127✔
5154
      break;
127✔
5155
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
5156
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
5157
      break;
×
5158
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
9,574✔
5159
      code = msgToPhysiPartitionNode(pDecoder, pObj);
9,574✔
5160
      break;
9,572✔
5161
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
17,438✔
5162
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
17,438✔
5163
      break;
17,441✔
5164
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
12,909✔
5165
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
12,909✔
5166
      break;
12,906✔
5167
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
5168
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
5169
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
5170
      break;
×
5171
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,596,907✔
5172
      code = msgToPhysiDispatchNode(pDecoder, pObj);
1,596,907✔
5173
      break;
1,595,867✔
5174
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
179✔
5175
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
179✔
5176
      break;
179✔
5177
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
7,013✔
5178
      code = msgToPhysiDeleteNode(pDecoder, pObj);
7,013✔
5179
      break;
7,013✔
5180
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
6,279✔
5181
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
6,279✔
5182
      break;
6,279✔
5183
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
6,285✔
5184
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
6,285✔
5185
      break;
6,285✔
5186
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
2,450✔
5187
      code = msgToPhysiVirtualTableScanNode(pDecoder, pObj);
2,450✔
5188
      break;
2,450✔
5189
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,604,758✔
5190
      code = msgToSubplan(pDecoder, pObj);
1,604,758✔
5191
      break;
1,602,973✔
5192
    case QUERY_NODE_PHYSICAL_PLAN:
18✔
5193
      code = msgToQueryPlan(pDecoder, pObj);
18✔
5194
      break;
18✔
5195
    default:
×
5196
      break;
×
5197
  }
5198
  if (TSDB_CODE_SUCCESS != code) {
62,253,414!
5199
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
5200
  }
5201
  return code;
61,724,559✔
5202
}
5203

5204
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,799,352✔
5205
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
1,799,352✔
5206
}
5207

5208
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
62,693,798✔
5209
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
62,693,798✔
5210
}
5211

5212
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
22,655,292✔
5213
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
22,655,292✔
5214
  return msgToNode(&decoder, pObj);
22,655,292✔
5215
}
5216

5217
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
298,488✔
5218
  const SNodeList* pList = (const SNodeList*)pObj;
298,488✔
5219

5220
  SNode* pNode = NULL;
298,488✔
5221
  FOREACH(pNode, pList) {
1,611,276!
5222
    int32_t code = nodeToMsg(pNode, pEncoder);
1,314,494✔
5223
    if (TSDB_CODE_SUCCESS != code) {
1,312,788!
5224
      return code;
×
5225
    }
5226
  }
5227

5228
  return TSDB_CODE_SUCCESS;
296,782✔
5229
}
5230
enum {
5231
  SARRAY_CODE_CAPACITY = 1,
5232
  SARRAY_CODE_ELEMSIZE,
5233
  SARRAY_CODE_SIZE,
5234
  SARRAY_CODE_PDATA
5235
};
5236

5237
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
5238
  const SArray* pArray = (const SArray*)pObj;
×
5239
  int32_t code = TSDB_CODE_SUCCESS;
×
5240
  if (TSDB_CODE_SUCCESS == code) {
×
5241
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
×
5242
  }
5243
  if (TSDB_CODE_SUCCESS == code) {
×
5244
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
×
5245
  }
5246
  if (TSDB_CODE_SUCCESS == code) {
×
5247
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
×
5248
  }
5249
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
×
5250
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
×
5251
  }
5252
  return code;
×
5253
}
5254

5255

5256
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
13,470,186✔
5257
  SNodeList* pList = NULL;
13,470,186✔
5258
  int32_t code = TSDB_CODE_SUCCESS;
13,470,186✔
5259
  code = nodesMakeList(&pList);
13,470,186✔
5260

5261
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
52,162,177✔
5262
    SNode* pNode = NULL;
38,593,732✔
5263
    code = msgToNode(pDecoder, (void**)&pNode);
38,593,732✔
5264
    if (TSDB_CODE_SUCCESS == code) {
37,841,299!
5265
      code = nodesListAppend(pList, pNode);
37,844,777✔
5266
    }
5267
  }
5268
  if (TSDB_CODE_SUCCESS == code) {
13,495,138!
5269
    *pObj = pList;
13,495,138✔
5270
  } else {
5271
    nodesDestroyList(pList);
×
5272
  }
5273
  return code;
13,494,793✔
5274
}
5275

5276
static int32_t msgToSArray(STlv* pTlv, void** pObj){
127✔
5277
  SArray* pArray = NULL;
127✔
5278
  uint32_t capacity = 0;
127✔
5279
  uint32_t elemSize = 0;
127✔
5280
  uint32_t actualSize;
5281
  int32_t decodeFieldNum = 0;;
127✔
5282
  int32_t code = TSDB_CODE_SUCCESS;
127✔
5283
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
127✔
5284
  STlv*   pTlvTemp = NULL;
127✔
5285
  STlv*   pDataTlv = NULL;
127✔
5286

5287
  tlvForEach(&decoder, pTlvTemp, code) {
635!
5288
    switch (pTlvTemp->type) {
508!
5289
      case SARRAY_CODE_CAPACITY:
127✔
5290
        code = tlvDecodeI32(pTlvTemp, &capacity);
127✔
5291
        break;
127✔
5292
      case SARRAY_CODE_ELEMSIZE:
127✔
5293
        code = tlvDecodeI32(pTlvTemp, &elemSize);
127✔
5294
        break;
127✔
5295
      case SARRAY_CODE_SIZE:
127✔
5296
        code = tlvDecodeI32(pTlvTemp, &actualSize);
127✔
5297
        break;
127✔
5298
      case SARRAY_CODE_PDATA:
127✔
5299
        if (decodeFieldNum < 3) {
127!
5300
          pDataTlv = pTlvTemp;
×
5301
          break;
×
5302
        }
5303
        pArray = taosArrayInit(capacity, elemSize);
127✔
5304
        if (NULL == pArray) {
127!
5305
          return terrno;
×
5306
        }
5307
        pArray->size = actualSize;
127✔
5308
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
127!
5309
          taosArrayDestroy(pArray);
×
5310
          return TSDB_CODE_OUT_OF_MEMORY;
×
5311
        }
5312
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
127✔
5313
        break;
127✔
5314
      default:
×
5315
        break;
×
5316
    }
5317
    decodeFieldNum++;
508✔
5318
  }
5319

5320
  if (pDataTlv != NULL) {
127!
5321
    pArray = taosArrayInit(capacity, elemSize);
×
5322
    if (NULL == pArray) {
×
5323
      return terrno;
×
5324
    }
5325
    pArray->size = actualSize;
×
5326
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5327
      taosArrayDestroy(pArray);
×
5328
      return TSDB_CODE_OUT_OF_MEMORY;
×
5329
    }
5330
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
5331
  }
5332
  *pObj = pArray;
127✔
5333
  return code;
127✔
5334
}
5335

5336

5337
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
13,470,063✔
5338
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
13,470,063✔
5339
  return msgToNodeList(&decoder, pObj);
13,470,063✔
5340
}
5341

5342
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
37,734✔
5343
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
37,734!
5344
    terrno = TSDB_CODE_FAILED;
×
5345
    return TSDB_CODE_FAILED;
×
5346
  }
5347

5348
  STlvEncoder encoder;
5349
  int32_t     code = initTlvEncoder(&encoder);
37,855✔
5350
  if (TSDB_CODE_SUCCESS == code) {
37,827!
5351
    code = nodeToMsg(pNode, &encoder);
37,828✔
5352
  }
5353
  if (TSDB_CODE_SUCCESS == code) {
37,804✔
5354
    endTlvEncode(&encoder, pMsg, pLen);
37,803✔
5355
  }
5356
  clearTlvEncoder(&encoder);
37,801✔
5357

5358
  terrno = code;
37,819✔
5359
  return code;
37,820✔
5360
}
5361

5362
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
1,604,798✔
5363
  if (NULL == pMsg || NULL == pNode) {
1,604,798!
5364
    return TSDB_CODE_SUCCESS;
×
5365
  }
5366

5367
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
1,604,941✔
5368
  int32_t     code = msgToNode(&decoder, (void**)pNode);
1,604,941✔
5369
  if (TSDB_CODE_SUCCESS != code) {
1,602,917!
5370
    nodesDestroyNode(*pNode);
×
5371
    *pNode = NULL;
×
5372
  }
5373

5374
  terrno = code;
1,602,917✔
5375
  return code;
1,602,811✔
5376
}
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