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

taosdata / TDengine / #4768

01 Oct 2025 04:06AM UTC coverage: 57.85% (-0.8%) from 58.606%
#4768

push

travis-ci

web-flow
Merge pull request #33171 from taosdata/merge/3.3.6tomain

merge: from 3.3.6 to main branch

137167 of 302743 branches covered (45.31%)

Branch coverage included in aggregate %.

15 of 20 new or added lines in 2 files covered. (75.0%)

12125 existing lines in 175 files now uncovered.

208282 of 294403 relevant lines covered (70.75%)

5618137.93 hits per line

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

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

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

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

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

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
20,632,646✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
20,632,646✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
24,973!
115
    if (NULL == pNewBuf) {
25,002!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
25,002✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
25,002✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
20,632,675✔
122
  pEncoder->offset += len;
20,632,675✔
123
  return TSDB_CODE_SUCCESS;
20,632,675✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
1,877,088✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
1,877,088✔
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) {
6,093,377✔
140
  value = htons(value);
6,093,377✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
6,093,377✔
142
}
143

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
2,555,603✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
2,555,603✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
4,585,303✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
4,585,303✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
833,257✔
223
  if (NULL == pValue) {
833,257✔
224
    return TSDB_CODE_SUCCESS;
10,849✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
822,408✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
3,109,956✔
230
  int16_t len = strlen(pValue);
3,109,956✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
3,109,956✔
232
  if (TSDB_CODE_SUCCESS == code) {
3,104,023!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
3,105,607✔
234
  }
235
  return code;
3,093,287✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
8,059,315✔
243
  if (NULL == pObj) {
8,059,315✔
244
    return TSDB_CODE_SUCCESS;
834,599✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
7,224,716✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
26,369✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
26,369!
250
    if (NULL == pNewBuf) {
26,403!
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
26,403✔
254
  }
255

256
  int32_t start = pEncoder->offset;
7,224,750✔
257
  pEncoder->offset += sizeof(STlv);
7,224,750✔
258
  int32_t code = func(pObj, pEncoder);
7,224,750✔
259
  if (TSDB_CODE_SUCCESS == code) {
7,217,964!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
7,243,369✔
261
    pTlv->type = htons(type);
7,243,369✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
7,243,369✔
263
  }
264
  ++(pEncoder->tlvCount);
7,217,964✔
265
  return code;
7,217,964✔
266
}
267

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

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
92,756✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
92,756✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
183,418✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
90,659✔
291
  }
292
  return code;
92,759✔
293
}
294

295
static int32_t tlvGetNextTlv(STlvDecoder* pDecoder, STlv** pTlv) {
367,528,903✔
296
  if (pDecoder->offset == pDecoder->bufSize) {
367,528,903✔
297
    *pTlv = NULL;
84,211,261✔
298
    return TSDB_CODE_SUCCESS;
84,211,261✔
299
  }
300

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

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
53,187,083✔
312

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

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

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

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
189,321,249✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
189,321,249✔
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) {
185,336,699✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
185,336,699✔
351
  if (TSDB_CODE_SUCCESS == code) {
184,905,185!
352
    *pValue = ntohs(*pValue);
189,833,552✔
353
  }
354
  return code;
184,905,185✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
53,346,894✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
53,346,894✔
359
  if (TSDB_CODE_SUCCESS == code) {
53,290,652!
360
    *pValue = ntohl(*pValue);
53,301,182✔
361
  }
362
  return code;
53,290,652✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
99,107,901✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
99,107,901✔
367
  if (TSDB_CODE_SUCCESS == code) {
98,868,460!
368
    *pValue = ntohl(*pValue);
98,938,526✔
369
  }
370
  return code;
98,868,460✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
2,888,438✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
2,888,438✔
375
  if (TSDB_CODE_SUCCESS == code) {
2,887,109!
376
    *pValue = ntohll(*pValue);
2,887,622✔
377
  }
378
  return code;
2,887,109✔
379
}
380

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

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

396
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
76,386,443✔
397
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
76,386,443✔
398
}
399

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

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

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

424
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
16,756,814✔
425
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
16,756,814✔
426
  if (TSDB_CODE_SUCCESS == code) {
16,752,947!
427
    *pValue = ntohll(*pValue);
16,756,005✔
428
  }
429
  return code;
16,752,947✔
430
}
431

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

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

450
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
189,392,748✔
451
  switch (len) {
189,392,748!
452
    case 1:
164,138,666✔
453
      *(int8_t*)pValue = value;
164,138,666✔
454
      break;
164,138,666✔
455
    case 2:
×
456
      *(int16_t*)pValue = value;
×
457
      break;
×
458
    case 4:
26,041,790✔
459
      *(int32_t*)pValue = value;
26,041,790✔
460
      break;
26,041,790✔
461
    default:
×
462
      return TSDB_CODE_FAILED;
×
463
  }
464
  return TSDB_CODE_SUCCESS;
190,180,456✔
465
}
466

467
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
29,332,419✔
468
  int8_t  value = 0;
29,332,419✔
469
  int32_t code = tlvDecodeI8(pTlv, &value);
29,332,419✔
470
  if (TSDB_CODE_SUCCESS == code) {
29,317,187!
471
    code = convertIntegerType(value, pValue, sizeof(bool));
29,317,630✔
472
  }
473
  return code;
29,325,488✔
474
}
475

476
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
135,235,887✔
477
  int8_t  value = 0;
135,235,887✔
478
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
135,235,887✔
479
  if (TSDB_CODE_SUCCESS == code) {
135,185,355!
480
    code = convertIntegerType(value, pValue, sizeof(bool));
135,194,023✔
481
  }
482
  return code;
135,127,407✔
483
}
484

485
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
11,846,870✔
486
  int32_t value = 0;
11,846,870✔
487
  int32_t code = tlvDecodeI32(pTlv, &value);
11,846,870✔
488
  if (TSDB_CODE_SUCCESS == code) {
11,845,383!
489
    code = convertIntegerType(value, pValue, len);
11,845,527✔
490
  }
491
  return code;
11,845,426✔
492
}
493

494
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
14,241,364✔
495
  int32_t value = 0;
14,241,364✔
496
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
14,241,364✔
497
  if (TSDB_CODE_SUCCESS == code) {
14,221,699!
498
    code = convertIntegerType(value, pValue, len);
14,222,094✔
499
  }
500
  return code;
14,218,129✔
501
}
502

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

511
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
92,432,226✔
512
  int16_t len = 0;
92,432,226✔
513
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
92,432,226✔
514
  if (TSDB_CODE_SUCCESS == code) {
93,550,993!
515
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
93,566,052✔
516
  }
517
  return code;
92,781,597✔
518
}
519

520
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
1,941,372✔
521
  *pValue = taosStrndup(pTlv->value, pTlv->len);
1,941,372!
522
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
1,972,006!
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) {
323,370✔
535
  memcpy(pValue, pTlv->value, pTlv->len);
323,370✔
536
  return TSDB_CODE_SUCCESS;
323,370✔
537
}
538

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

561
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
2,489,234✔
562
                                   int32_t* pNum) {
563
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
2,489,234✔
564
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
4,590,008✔
565
    code = func(pDecoder, (char*)pArray + i * itemSize);
2,100,454✔
566
  }
567
  return code;
2,489,554✔
568
}
569

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

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

583
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
63,056,289✔
584
  STlv*   pTlv = NULL;
63,056,289✔
585
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
63,056,289✔
586
  if (TSDB_CODE_SUCCESS == code) {
62,961,060!
587
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
62,964,693✔
588
  }
589
  return code;
62,267,853✔
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) {
1,184,811✔
595
  const SDataType* pNode = (const SDataType*)pObj;
1,184,811✔
596

597
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
1,184,811✔
598
  if (TSDB_CODE_SUCCESS == code) {
1,174,081!
599
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
1,174,285✔
600
  }
601
  if (TSDB_CODE_SUCCESS == code) {
1,174,931!
602
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
1,175,030✔
603
  }
604
  if (TSDB_CODE_SUCCESS == code) {
1,174,234!
605
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
1,174,597✔
606
  }
607

608
  return code;
1,179,322✔
609
}
610

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

614
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
728,498✔
615
  if (TSDB_CODE_SUCCESS == code) {
731,416!
616
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
731,567✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
728,833!
619
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
729,263✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
726,360!
622
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
726,942✔
623
  }
624

625
  return code;
727,855✔
626
}
627

628
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
35,023,643✔
629
  SDataType* pNode = (SDataType*)pObj;
35,023,643✔
630

631
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
35,023,643✔
632
  if (TSDB_CODE_SUCCESS == code) {
34,987,629!
633
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
34,988,857✔
634
  }
635
  if (TSDB_CODE_SUCCESS == code) {
34,696,669!
636
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
34,697,067✔
637
  }
638
  if (TSDB_CODE_SUCCESS == code) {
34,489,720!
639
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
34,492,377✔
640
  }
641

642
  return code;
34,387,194✔
643
}
644

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

648
  int32_t code = TSDB_CODE_SUCCESS;
7,362,779✔
649
  STlv*   pTlv = NULL;
7,362,779✔
650
  tlvForEach(pDecoder, pTlv, code) {
36,720,130!
651
    switch (pTlv->type) {
29,374,322!
652
      case DATA_TYPE_CODE_TYPE:
7,357,725✔
653
        code = tlvDecodeI8(pTlv, &pNode->type);
7,357,725✔
654
        break;
7,351,252✔
655
      case DATA_TYPE_CODE_PRECISION:
7,344,784✔
656
        code = tlvDecodeU8(pTlv, &pNode->precision);
7,344,784✔
657
        break;
7,341,271✔
658
      case DATA_TYPE_CODE_SCALE:
7,338,743✔
659
        code = tlvDecodeU8(pTlv, &pNode->scale);
7,338,743✔
660
        break;
7,330,200✔
661
      case DATA_TYPE_CODE_BYTES:
7,333,070✔
662
        code = tlvDecodeI32(pTlv, &pNode->bytes);
7,333,070✔
663
        break;
7,334,628✔
664
      default:
×
665
        break;
×
666
    }
667
  }
668

669
  return code;
7,347,110✔
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) {
730,922✔
675
  const SExprNode* pNode = (const SExprNode*)pObj;
730,922✔
676
  int32_t          code = tlvEncodeObj(pEncoder, EXPR_CODE_RES_TYPE, dataTypeToMsg, &pNode->resType);
730,922✔
677
  if (TSDB_CODE_SUCCESS == code) {
727,760!
678
    code = tlvEncodeI32(pEncoder, EXPR_CODE_BIND_TUPLE_FUNC_IDX, pNode->relatedTo);
727,828✔
679
  }
680
  if (TSDB_CODE_SUCCESS == code) {
728,840!
681
    code = tlvEncodeI32(pEncoder, EXPR_CODE_TUPLE_FUNC_IDX, pNode->bindExprID);
728,963✔
682
  }
683
  return code;
727,661✔
684
}
685

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

689
  int32_t code = TSDB_CODE_SUCCESS;
7,368,552✔
690
  STlv*   pTlv = NULL;
7,368,552✔
691
  tlvForEach(pDecoder, pTlv, code) {
29,370,827!
692
    switch (pTlv->type) {
22,036,665!
693
      case EXPR_CODE_RES_TYPE:
7,364,126✔
694
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
7,364,126✔
695
        break;
7,335,427✔
696
      case EXPR_CODE_BIND_TUPLE_FUNC_IDX:
7,336,252✔
697
        code = tlvDecodeI32(pTlv, &pNode->relatedTo);
7,336,252✔
698
        break;
7,332,402✔
699
      case EXPR_CODE_TUPLE_FUNC_IDX:
7,336,287✔
700
        code = tlvDecodeI32(pTlv, &pNode->bindExprID);
7,336,287✔
701
        break;
7,334,446✔
702
      default:
×
703
        break;
×
704
    }
705
  }
706

707
  return code;
7,321,507✔
708
}
709

710
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
711

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

715
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
439,035✔
716
  if (TSDB_CODE_SUCCESS == code) {
435,055!
717
    code = tlvEncodeValueI32(pEncoder, pNode->node.relatedTo);
435,082✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
434,758!
720
    code = tlvEncodeValueI32(pEncoder, pNode->node.bindExprID);
434,777✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
434,564!
723
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
434,615✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
434,717!
726
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
434,790✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
432,993!
729
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
433,117✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
433,365!
732
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
433,508✔
733
  }
734
  if (TSDB_CODE_SUCCESS == code) {
434,910!
735
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
435,099✔
736
  }
737
  if (TSDB_CODE_SUCCESS == code) {
433,990!
738
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
434,398✔
739
  }
740
  if (TSDB_CODE_SUCCESS == code) {
434,027!
741
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
434,814✔
742
  }
743
  if (TSDB_CODE_SUCCESS == code) {
433,708!
744
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
435,024✔
745
  }
746
  if (TSDB_CODE_SUCCESS == code) {
432,492!
747
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
434,368✔
748
  }
749
  if (TSDB_CODE_SUCCESS == code) {
431,499!
750
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
433,420✔
751
  }
752
  if (TSDB_CODE_SUCCESS == code) {
430,228!
753
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
432,201✔
754
  }
755
  if (TSDB_CODE_SUCCESS == code) {
432,290!
756
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
434,248✔
757
  }  
758
  if (TSDB_CODE_SUCCESS == code) {
432,304!
759
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
434,319✔
760
  }
761
  if (TSDB_CODE_SUCCESS == code) {
431,643!
762
    code = tlvEncodeValueBool(pEncoder, pNode->isPrimTs);
433,701✔
763
  }
764
  if (TSDB_CODE_SUCCESS == code) {
432,234!
765
    code = tlvEncodeValueBool(pEncoder, pNode->hasDep);
434,324✔
766
  }
767
  if (TSDB_CODE_SUCCESS == code) {
432,292!
768
    code = tlvEncodeValueBool(pEncoder, pNode->hasRef);
434,377✔
769
  }
770
  if (TSDB_CODE_SUCCESS == code) {
433,379!
771
    code = tlvEncodeValueCStr(pEncoder, pNode->refDbName);
435,506✔
772
  }
773
  if (TSDB_CODE_SUCCESS == code) {
431,833!
774
    code = tlvEncodeValueCStr(pEncoder, pNode->refTableName);
433,994✔
775
  }
776
  if (TSDB_CODE_SUCCESS == code) {
431,758!
777
    code = tlvEncodeValueCStr(pEncoder, pNode->refColName);
433,950✔
778
  }
779
  return code;
434,061✔
780
}
781

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

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

789
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
12,609,190✔
790
    if (TSDB_CODE_SUCCESS == code) {
12,547,580!
791
    code = tlvDecodeValueI32(pDecoder, &pNode->node.relatedTo);
12,547,720✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
12,528,174!
794
    code = tlvDecodeValueI32(pDecoder, &pNode->node.bindExprID);
12,528,678✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
12,526,595!
797
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
12,527,439✔
798
  }
799
  if (TSDB_CODE_SUCCESS == code) {
12,528,773!
800
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
12,529,891✔
801
  }
802
  if (TSDB_CODE_SUCCESS == code) {
12,529,204!
803
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
12,530,504✔
804
  }
805
  if (TSDB_CODE_SUCCESS == code) {
12,623,513!
806
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
12,625,218✔
807
  }
808
  if (TSDB_CODE_SUCCESS == code) {
12,598,406!
809
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
12,600,216✔
810
  }
811
  if (TSDB_CODE_SUCCESS == code) {
12,609,225!
812
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
12,611,125✔
813
  }
814
  if (TSDB_CODE_SUCCESS == code) {
12,611,125!
815
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
12,613,148✔
816
  }
817
  if (TSDB_CODE_SUCCESS == code) {
12,614,627!
818
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
12,616,279✔
819
  }
820
  if (TSDB_CODE_SUCCESS == code) {
12,628,325!
821
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
12,630,077✔
822
  }
823
  if (TSDB_CODE_SUCCESS == code) {
12,659,009!
824
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
12,661,254✔
825
  }
826
  if (TSDB_CODE_SUCCESS == code) {
12,658,523!
827
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
12,661,199✔
828
  }
829
  if (TSDB_CODE_SUCCESS == code) {
12,627,212!
830
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
12,630,832✔
831
  }  
832
  if (TSDB_CODE_SUCCESS == code) {
12,591,988!
833
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
12,597,561✔
834
  }
835
  if (TSDB_CODE_SUCCESS == code) {
12,664,333!
836
    code = tlvDecodeValueBool(pDecoder, &pNode->isPrimTs);
12,670,064✔
837
  }
838
  if (TSDB_CODE_SUCCESS == code) {
12,636,758!
839
    code = tlvDecodeValueBool(pDecoder, &pNode->hasDep);
12,642,648✔
840
  }
841
  if (TSDB_CODE_SUCCESS == code) {
12,598,473!
842
    code = tlvDecodeValueBool(pDecoder, &pNode->hasRef);
12,605,568✔
843
  }
844
  if (TSDB_CODE_SUCCESS == code) {
12,586,936!
845
    code = tlvDecodeValueCStr(pDecoder, pNode->refDbName);
12,595,555✔
846
  }
847
  if (TSDB_CODE_SUCCESS == code) {
12,624,408!
848
    code = tlvDecodeValueCStr(pDecoder, pNode->refTableName);
12,633,101✔
849
  }
850
  if (TSDB_CODE_SUCCESS == code) {
12,621,200!
851
    code = tlvDecodeValueCStr(pDecoder, pNode->refColName);
12,629,986✔
852
  }
853
  return code;
12,640,659✔
854
}
855

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

859
  int32_t code = TSDB_CODE_SUCCESS;
12,611,859✔
860
  STlv*   pTlv = NULL;
12,611,859✔
861
  tlvForEach(pDecoder, pTlv, code) {
25,250,786!
862
    switch (pTlv->type) {
12,613,933!
863
      case COLUMN_CODE_INLINE_ATTRS:
12,613,933✔
864
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
12,613,933✔
865
        break;
12,638,927✔
866
      default:
×
867
        break;
×
868
    }
869
  }
870

871
  return code;
12,631,501✔
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) {
653,736✔
885
  const SValueNode* pNode = (const SValueNode*)pObj;
653,736✔
886

887
  int32_t code = TSDB_CODE_SUCCESS;
653,736✔
888
  switch (pNode->node.resType.type) {
653,736!
889
    case TSDB_DATA_TYPE_NULL:
×
890
      break;
×
891
    case TSDB_DATA_TYPE_BOOL:
271✔
892
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
271✔
893
      break;
271✔
894
    case TSDB_DATA_TYPE_TINYINT:
649,942✔
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);
649,942✔
900
      break;
654,102✔
901
    case TSDB_DATA_TYPE_UTINYINT:
5✔
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);
5✔
906
      break;
6✔
907
    case TSDB_DATA_TYPE_FLOAT:
413✔
908
    case TSDB_DATA_TYPE_DOUBLE:
909
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
413✔
910
      break;
413✔
911
    case TSDB_DATA_TYPE_VARCHAR:
3,687✔
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,687✔
916
      break;
3,689✔
917
    case TSDB_DATA_TYPE_JSON:
×
918
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
×
919
      break;
502✔
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;
658,401✔
935
}
936

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

940
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
657,115✔
941
  if (TSDB_CODE_SUCCESS == code) {
653,637!
942
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
653,682✔
943
  }
944
  if (TSDB_CODE_SUCCESS == code) {
658,429✔
945
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
658,376✔
946
  }
947
  if (TSDB_CODE_SUCCESS == code) {
654,995!
948
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
655,097✔
949
  }
950
  if (TSDB_CODE_SUCCESS == code) {
653,060!
951
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
653,301✔
952
  }
953
  if (TSDB_CODE_SUCCESS == code) {
652,064!
954
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
652,449✔
955
  }
956
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
652,150!
957
    code = datumToMsg(pNode, pEncoder);
652,831✔
958
  }
959

960
  return code;
657,791✔
961
}
962

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

966
  int32_t code = TSDB_CODE_SUCCESS;
2,885,965✔
967
  switch (pNode->node.resType.type) {
2,885,965!
968
    case TSDB_DATA_TYPE_NULL:
×
969
      break;
×
970
    case TSDB_DATA_TYPE_BOOL:
47,114✔
971
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
47,114✔
972
      *(bool*)&pNode->typeData = pNode->datum.b;
47,121✔
973
      break;
47,121✔
974
    case TSDB_DATA_TYPE_TINYINT:
1,003,800✔
975
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,003,800✔
976
      *(int8_t*)&pNode->typeData = pNode->datum.i;
1,003,802✔
977
      break;
1,003,802✔
978
    case TSDB_DATA_TYPE_SMALLINT:
46,098✔
979
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
46,098✔
980
      *(int16_t*)&pNode->typeData = pNode->datum.i;
46,082✔
981
      break;
46,082✔
982
    case TSDB_DATA_TYPE_INT:
62,156✔
983
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
62,156✔
984
      *(int32_t*)&pNode->typeData = pNode->datum.i;
62,159✔
985
      break;
62,159✔
986
    case TSDB_DATA_TYPE_BIGINT:
1,174,384✔
987
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,174,384✔
988
      *(int64_t*)&pNode->typeData = pNode->datum.i;
1,174,647✔
989
      break;
1,174,647✔
990
    case TSDB_DATA_TYPE_TIMESTAMP:
52,968✔
991
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
52,968✔
992
      *(int64_t*)&pNode->typeData = pNode->datum.i;
52,968✔
993
      break;
52,968✔
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:
68✔
1007
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
68✔
1008
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
68✔
1009
      break;
68✔
1010
    case TSDB_DATA_TYPE_FLOAT:
211✔
1011
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
211✔
1012
      *(float*)&pNode->typeData = pNode->datum.d;
211✔
1013
      break;
211✔
1014
    case TSDB_DATA_TYPE_DOUBLE:
177,769✔
1015
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
177,769✔
1016
      *(double*)&pNode->typeData = pNode->datum.d;
177,788✔
1017
      break;
177,788✔
1018
    case TSDB_DATA_TYPE_NCHAR:
322,924✔
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) {
322,924!
1023
        code = TSDB_CODE_FAILED;
×
1024
        break;
×
1025
      }
1026
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
322,924!
1027
      if (NULL == pNode->datum.p) {
323,443!
1028
        code = terrno;
×
1029
        break;
×
1030
      }
1031
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
323,443✔
1032
      if (TSDB_CODE_SUCCESS == code) {
323,368!
1033
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
323,392✔
1034
      }
1035
      break;
323,368✔
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,886,687✔
1078
}
1079

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

1083
  int32_t code = TSDB_CODE_SUCCESS;
2,912,003✔
1084
  STlv*   pTlv = NULL;
2,912,003✔
1085
  tlvForEach(pDecoder, pTlv, code) {
22,236,538!
1086
    switch (pTlv->type) {
19,333,935!
1087
      case VALUE_CODE_EXPR_BASE:
2,908,111✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,908,111✔
1089
        break;
2,885,611✔
1090
      case VALUE_CODE_LITERAL:
1,940,542✔
1091
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
1,940,542✔
1092
        break;
1,970,548✔
1093
      case VALUE_CODE_FLAG:
2,910,985✔
1094
        code = tlvDecodeI32(pTlv, &pNode->flag);
2,910,985✔
1095
        break;
2,902,798✔
1096
      case VALUE_CODE_TRANSLATE:
2,900,732✔
1097
        code = tlvDecodeBool(pTlv, &pNode->translate);
2,900,732✔
1098
        break;
2,895,109✔
1099
      case VALUE_CODE_NOT_RESERVED:
2,894,796✔
1100
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
2,894,796✔
1101
        break;
2,892,401✔
1102
      case VALUE_CODE_IS_NULL:
2,892,586✔
1103
        code = tlvDecodeBool(pTlv, &pNode->isNull);
2,892,586✔
1104
        break;
2,891,534✔
1105
      case VALUE_CODE_DATUM:
2,886,183✔
1106
        code = msgToDatum(pTlv, pNode);
2,886,183✔
1107
        break;
2,886,534✔
1108
      default:
×
1109
        break;
×
1110
    }
1111
  }
1112

1113
  return code;
2,883,929✔
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) {
12,010✔
1119
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
12,010✔
1120

1121
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
12,010✔
1122
  if (TSDB_CODE_SUCCESS == code) {
12,009!
1123
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
12,009✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
12,009✔
1126
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
12,007✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
12,011✔
1129
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
12,010✔
1130
  }
1131

1132
  return code;
12,009✔
1133
}
1134

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

1138
  int32_t code = TSDB_CODE_SUCCESS;
1,400,770✔
1139
  STlv*   pTlv = NULL;
1,400,770✔
1140
  tlvForEach(pDecoder, pTlv, code) {
6,829,216!
1141
    switch (pTlv->type) {
5,428,430!
1142
      case OPERATOR_CODE_EXPR_BASE:
1,400,572✔
1143
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
1,400,572✔
1144
        break;
1,399,573✔
1145
      case OPERATOR_CODE_OP_TYPE:
1,399,622✔
1146
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
1,399,622✔
1147
        break;
1,399,805✔
1148
      case OPERATOR_CODE_LEFT:
1,399,841✔
1149
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
1,399,841✔
1150
        break;
1,401,226✔
1151
      case OPERATOR_CODE_RIGHT:
1,228,395✔
1152
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
1,228,395✔
1153
        break;
1,227,842✔
1154
      default:
×
1155
        break;
×
1156
    }
1157
  }
1158

1159
  return code;
1,399,067✔
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,491✔
1165
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
2,491✔
1166

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

1175
  return code;
2,491✔
1176
}
1177

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

1181
  int32_t code = TSDB_CODE_SUCCESS;
264,625✔
1182
  STlv*   pTlv = NULL;
264,625✔
1183
  tlvForEach(pDecoder, pTlv, code) {
1,058,423!
1184
    switch (pTlv->type) {
793,746!
1185
      case LOGIC_COND_CODE_EXPR_BASE:
264,626✔
1186
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
264,626✔
1187
        break;
264,538✔
1188
      case LOGIC_COND_CODE_COND_TYPE:
264,538✔
1189
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
264,538✔
1190
        break;
264,588✔
1191
      case LOGIC_COND_CODE_PARAMETERS:
264,582✔
1192
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
264,582✔
1193
        break;
264,672✔
1194
      default:
×
1195
        break;
×
1196
    }
1197
  }
1198

1199
  return code;
264,600✔
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) {
59,921✔
1218
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
59,921✔
1219

1220
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
59,921✔
1221
  if (TSDB_CODE_SUCCESS == code) {
59,934!
1222
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
59,935✔
1223
  }
1224
  if (TSDB_CODE_SUCCESS == code) {
59,957!
1225
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
59,960✔
1226
  }
1227
  if (TSDB_CODE_SUCCESS == code) {
59,949!
1228
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
59,952✔
1229
  }
1230
  if (TSDB_CODE_SUCCESS == code) {
59,919!
1231
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
59,919✔
1232
  }
1233
  if (TSDB_CODE_SUCCESS == code) {
59,930!
1234
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
59,932✔
1235
  }
1236
  if (TSDB_CODE_SUCCESS == code) {
59,938!
1237
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
59,940✔
1238
  }
1239
  if (TSDB_CODE_SUCCESS == code) {
59,936!
1240
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
59,939✔
1241
  }  
1242
  if (TSDB_CODE_SUCCESS == code) {
59,932!
1243
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
59,938✔
1244
  }
1245
  if (TSDB_CODE_SUCCESS == code) {
59,929!
1246
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
59,937✔
1247
  }
1248
  if (TSDB_CODE_SUCCESS == code) {
59,943!
1249
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
59,953✔
1250
  }
1251
  if (TSDB_CODE_SUCCESS == code) {
59,941!
1252
    code = tlvEncodeObj(pEncoder, FUNCTION_SRC_FUNC_INPUT_TYPE, dataTypeInlineToMsg, &pNode->srcFuncInputType);
59,953✔
1253
  }
1254

1255
  return code;
59,953✔
1256
}
1257

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

1261
  int32_t code = TSDB_CODE_SUCCESS;
2,795,334✔
1262
  STlv*   pTlv = NULL;
2,795,334✔
1263
  tlvForEach(pDecoder, pTlv, code) {
35,791,506!
1264
    switch (pTlv->type) {
32,655,046!
1265
      case FUNCTION_CODE_EXPR_BASE:
2,795,139✔
1266
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,795,139✔
1267
        break;
2,790,414✔
1268
      case FUNCTION_CODE_FUNCTION_NAME:
2,790,431✔
1269
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
2,790,431✔
1270
        break;
2,790,461✔
1271
      case FUNCTION_CODE_FUNCTION_ID:
2,790,068✔
1272
        code = tlvDecodeI32(pTlv, &pNode->funcId);
2,790,068✔
1273
        break;
2,789,917✔
1274
      case FUNCTION_CODE_FUNCTION_TYPE:
2,789,761✔
1275
        code = tlvDecodeI32(pTlv, &pNode->funcType);
2,789,761✔
1276
        break;
2,789,495✔
1277
      case FUNCTION_CODE_PARAMETERS:
2,271,172✔
1278
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
2,271,172✔
1279
        break;
2,277,072✔
1280
      case FUNCTION_CODE_UDF_BUF_SIZE:
2,797,269✔
1281
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
2,797,269✔
1282
        break;
2,796,503✔
1283
      case FUNCTION_NODE_HAS_PK:
2,796,100✔
1284
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
2,796,100✔
1285
        break;
2,794,823✔
1286
      case FUNCTION_NODE_PK_BYTES:
2,794,406✔
1287
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
2,794,406✔
1288
        break;  
2,794,208✔
1289
      case FUNCTION_CODE_IS_MERGE_FUNC:
2,794,259✔
1290
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
2,794,259✔
1291
        break;
2,793,582✔
1292
      case FUNCTION_CODE_MERGE_FUNC_OF:
2,793,357✔
1293
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
2,793,357✔
1294
        break;
2,793,478✔
1295
      case FUNCTION_CODE_TRIM_TYPE:
2,793,698✔
1296
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
2,793,698✔
1297
        break;
2,794,242✔
1298
      case FUNCTION_SRC_FUNC_INPUT_TYPE:
2,794,187✔
1299
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->srcFuncInputType);
2,794,187✔
1300
      default:
2,791,977✔
1301
        break;
2,791,977✔
1302
    }
1303
  }
1304

1305
  return code;
3,121,966✔
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) {
6,932✔
1311
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
6,932✔
1312

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

1321
  return code;
6,932✔
1322
}
1323

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

1327
  int32_t code = TSDB_CODE_SUCCESS;
247,578✔
1328
  STlv*   pTlv = NULL;
247,578✔
1329
  tlvForEach(pDecoder, pTlv, code) {
990,307!
1330
    switch (pTlv->type) {
742,743!
1331
      case ORDER_BY_EXPR_CODE_EXPR:
247,575✔
1332
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
247,575✔
1333
        break;
247,593✔
1334
      case ORDER_BY_EXPR_CODE_ORDER:
247,593✔
1335
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
247,593✔
1336
        break;
247,576✔
1337
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
247,575✔
1338
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
247,575✔
1339
        break;
247,560✔
1340
      default:
×
1341
        break;
×
1342
    }
1343
  }
1344

1345
  return code;
247,536✔
1346
}
1347

1348
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1349

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

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

1358
  return code;
15,587✔
1359
}
1360

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

1364
  int32_t code = TSDB_CODE_SUCCESS;
167,506✔
1365
  STlv*   pTlv = NULL;
167,506✔
1366
  tlvForEach(pDecoder, pTlv, code) {
400,772!
1367
    switch (pTlv->type) {
233,383!
1368
      case LIMIT_CODE_LIMIT:
167,506✔
1369
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->limit);
167,506✔
1370
        break;
167,399✔
1371
      case LIMIT_CODE_OFFSET:
65,877✔
1372
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->offset);
65,877✔
1373
        break;
65,867✔
1374
      default:
×
1375
        break;
×
1376
    }
1377
  }
1378

1379
  return code;
167,331✔
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) {
53,403✔
1385
  const SName* pNode = (const SName*)pObj;
53,403✔
1386

1387
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
53,403✔
1388
  if (TSDB_CODE_SUCCESS == code) {
53,425!
1389
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
53,426✔
1390
  }
1391
  if (TSDB_CODE_SUCCESS == code) {
53,436!
1392
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
53,439✔
1393
  }
1394
  if (TSDB_CODE_SUCCESS == code) {
53,440!
1395
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
53,444✔
1396
  }
1397

1398
  return code;
53,450✔
1399
}
1400

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

1404
  int32_t code = TSDB_CODE_SUCCESS;
1,222,941✔
1405
  STlv*   pTlv = NULL;
1,222,941✔
1406
  tlvForEach(pDecoder, pTlv, code) {
6,115,077!
1407
    switch (pTlv->type) {
4,892,303!
1408
      case NAME_CODE_TYPE:
1,223,124✔
1409
        code = tlvDecodeU8(pTlv, &pNode->type);
1,223,124✔
1410
        break;
1,223,058✔
1411
      case NAME_CODE_ACCT_ID:
1,223,085✔
1412
        code = tlvDecodeI32(pTlv, &pNode->acctId);
1,223,085✔
1413
        break;
1,223,083✔
1414
      case NAME_CODE_DB_NAME:
1,223,117✔
1415
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
1,223,117✔
1416
        break;
1,222,993✔
1417
      case NAME_CODE_TABLE_NAME:
1,222,977✔
1418
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
1,222,977✔
1419
        break;
1,223,002✔
1420
      default:
×
1421
        break;
×
1422
    }
1423
  }
1424

1425
  return code;
1,222,830✔
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) {
5,082✔
1431
  const STimeWindow* pNode = (const STimeWindow*)pObj;
5,082✔
1432

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

1438
  return code;
5,082✔
1439
}
1440

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

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

1459
  return code;
42,250✔
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) {
891✔
1465
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
891✔
1466

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

1472
  return code;
893✔
1473
}
1474

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

1478
  int32_t code = TSDB_CODE_SUCCESS;
42,148✔
1479
  STlv*   pTlv = NULL;
42,148✔
1480
  tlvForEach(pDecoder, pTlv, code) {
126,465!
1481
    switch (pTlv->type) {
84,306!
1482
      case NODE_LIST_CODE_DATA_TYPE:
42,156✔
1483
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
42,156✔
1484
        break;
42,145✔
1485
      case NODE_LIST_CODE_NODE_LIST:
42,150✔
1486
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
42,150✔
1487
        break;
42,172✔
1488
      default:
×
1489
        break;
×
1490
    }
1491
  }
1492

1493
  return code;
42,165✔
1494
}
1495

1496
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1497

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

1501
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
364,492✔
1502
  if (TSDB_CODE_SUCCESS == code) {
360,636!
1503
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
360,675✔
1504
  }
1505

1506
  return code;
359,437✔
1507
}
1508

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

1512
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
364,160✔
1513
  if (TSDB_CODE_SUCCESS == code) {
360,455!
1514
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
360,484✔
1515
  }
1516

1517
  return code;
362,571✔
1518
}
1519

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

1523
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
10,714,057✔
1524
  if (TSDB_CODE_SUCCESS == code) {
10,753,694!
1525
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
10,754,105✔
1526
  }
1527

1528
  return code;
10,744,883✔
1529
}
1530

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

1534
  int32_t code = TSDB_CODE_SUCCESS;
10,727,568✔
1535
  STlv*   pTlv = NULL;
10,727,568✔
1536
  tlvForEach(pDecoder, pTlv, code) {
32,183,672!
1537
    switch (pTlv->type) {
21,453,343!
1538
      case TARGET_CODE_INLINE_ATTRS:
10,720,454✔
1539
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
10,720,454✔
1540
        break;
10,742,855✔
1541
      case TARGET_CODE_EXPR:
10,732,889✔
1542
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
10,732,889✔
1543
        break;
10,713,249✔
1544
      default:
×
1545
        break;
×
1546
    }
1547
  }
1548

1549
  return code;
10,696,908✔
1550
}
1551

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

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

1559
  int32_t code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_START, nodeToMsg, pNode->pStart);
×
1560
  if (TSDB_CODE_SUCCESS == code) {
×
1561
    code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_END, nodeToMsg, pNode->pEnd);
×
1562
  }
1563
  if (TSDB_CODE_SUCCESS == code) {
×
1564
    code = tlvEncodeBool(pEncoder, TIME_RANGE_CODE_NEED_CALC, pNode->needCalc);
×
1565
  }
1566

1567
  return code;
×
1568
}
1569

1570
static int32_t msgToTimeRangeNode(STlvDecoder* pDecoder, void* pObj) {
×
1571
  STimeRangeNode* pNode = (STimeRangeNode*)pObj;
×
1572

1573
  int32_t code = TSDB_CODE_SUCCESS;
×
1574
  STlv*   pTlv = NULL;
×
1575
  tlvForEach(pDecoder, pTlv, code) {
×
1576
    switch (pTlv->type) {
×
1577
      case TIME_RANGE_CODE_START:
×
1578
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStart);
×
1579
        break;
×
1580
      case TIME_RANGE_CODE_END:
×
1581
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEnd);
×
1582
        break;
×
1583
      case TIME_RANGE_CODE_NEED_CALC:
×
1584
        code = tlvDecodeBool(pTlv, &pNode->needCalc);
×
1585
        break;
×
1586
      default:
×
1587
        break;
×
1588
    }
1589
  }
1590

1591
  return code;
×
1592
}
1593

1594
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1595

1596
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
170,805✔
1597
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
170,805✔
1598

1599
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
170,805✔
1600
  if (TSDB_CODE_SUCCESS == code) {
170,912!
1601
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
170,916✔
1602
  }
1603
  if (TSDB_CODE_SUCCESS == code) {
170,906✔
1604
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
170,902✔
1605
  }
1606
  if (TSDB_CODE_SUCCESS == code) {
170,858!
1607
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
170,862✔
1608
  }
1609

1610
  return code;
170,932✔
1611
}
1612

1613
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
170,895✔
1614
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
170,895✔
1615

1616
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
170,895✔
1617
  if (TSDB_CODE_SUCCESS == code) {
170,942!
1618
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
170,948✔
1619
  }
1620

1621
  return code;
170,844✔
1622
}
1623

1624
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
4,951,739✔
1625
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
4,951,739✔
1626

1627
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
4,951,739✔
1628
  if (TSDB_CODE_SUCCESS == code) {
4,953,618!
1629
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
4,953,721✔
1630
  }
1631
  if (TSDB_CODE_SUCCESS == code) {
4,951,592!
1632
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
4,951,722✔
1633
  }
1634
  if (TSDB_CODE_SUCCESS == code) {
4,949,779!
1635
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
4,949,966✔
1636
  }
1637

1638
  return code;
4,949,210✔
1639
}
1640

1641
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
4,952,608✔
1642
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
4,952,608✔
1643

1644
  int32_t code = TSDB_CODE_SUCCESS;
4,952,608✔
1645
  STlv*   pTlv = NULL;
4,952,608✔
1646
  tlvForEach(pDecoder, pTlv, code) {
14,854,105!
1647
    switch (pTlv->type) {
9,901,583!
1648
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
4,952,412✔
1649
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
4,952,412✔
1650
        break;
4,949,149✔
1651
      case DATA_BLOCK_DESC_CODE_SLOTS:
4,949,171✔
1652
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
4,949,171✔
1653
        break;
4,952,348✔
1654
      default:
×
1655
        break;
×
1656
    }
1657
  }
1658

1659
  return code;
4,950,313✔
1660
}
1661

1662
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1663

1664
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
701,238✔
1665
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
701,238✔
1666

1667
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
701,238✔
1668
  if (TSDB_CODE_SUCCESS == code) {
696,229!
1669
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
696,337✔
1670
  }
1671
  if (TSDB_CODE_SUCCESS == code) {
696,432!
1672
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
696,616✔
1673
  }
1674
  if (TSDB_CODE_SUCCESS == code) {
694,501!
1675
    code = tlvEncodeValueBool(pEncoder, pNode->output);
694,775✔
1676
  }
1677
  if (TSDB_CODE_SUCCESS == code) {
693,218!
1678
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
693,608✔
1679
  }
1680

1681
  return code;
695,307✔
1682
}
1683

1684
static int32_t slotDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
700,767✔
1685
  return tlvEncodeObj(pEncoder, SLOT_DESC_CODE_INLINE_ATTRS, slotDescNodeInlineToMsg, pObj);
700,767✔
1686
}
1687

1688
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
19,494,110✔
1689
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
19,494,110✔
1690

1691
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
19,494,110✔
1692
  if (TSDB_CODE_SUCCESS == code) {
19,617,662!
1693
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
19,618,655✔
1694
  }
1695
  if (TSDB_CODE_SUCCESS == code) {
19,089,266!
1696
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
19,090,959✔
1697
  }
1698
  if (TSDB_CODE_SUCCESS == code) {
19,073,747!
1699
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
19,075,999✔
1700
  }
1701
  if (TSDB_CODE_SUCCESS == code) {
19,031,431!
1702
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
19,035,635✔
1703
  }
1704

1705
  return code;
19,054,510✔
1706
}
1707

1708
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
19,539,121✔
1709
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
19,539,121✔
1710

1711
  int32_t code = TSDB_CODE_SUCCESS;
19,539,121✔
1712
  STlv*   pTlv = NULL;
19,539,121✔
1713
  tlvForEach(pDecoder, pTlv, code) {
38,594,832!
1714
    switch (pTlv->type) {
19,516,096!
1715
      case SLOT_DESC_CODE_INLINE_ATTRS:
19,516,096✔
1716
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
19,516,096✔
1717
        break;
19,055,711✔
1718
      default:
×
1719
        break;
×
1720
    }
1721
  }
1722

1723
  return code;
19,061,530✔
1724
}
1725

1726
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1727

1728
static int32_t epInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
90,649✔
1729
  const SEp* pNode = (const SEp*)pObj;
90,649✔
1730

1731
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
90,649✔
1732
  if (TSDB_CODE_SUCCESS == code) {
90,652!
1733
    code = tlvEncodeValueU16(pEncoder, pNode->port);
90,656✔
1734
  }
1735

1736
  return code;
90,653✔
1737
}
1738

1739
static int32_t epToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,826✔
1740
  const SEp* pNode = (const SEp*)pObj;
8,826✔
1741

1742
  int32_t code = tlvEncodeCStr(pEncoder, EP_CODE_FQDN, pNode->fqdn);
8,826✔
1743
  if (TSDB_CODE_SUCCESS == code) {
8,829!
1744
    code = tlvEncodeU16(pEncoder, EP_CODE_port, pNode->port);
8,829✔
1745
  }
1746

1747
  return code;
8,831✔
1748
}
1749

1750
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
2,100,263✔
1751
  SEp* pNode = (SEp*)pObj;
2,100,263✔
1752

1753
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
2,100,263✔
1754
  if (TSDB_CODE_SUCCESS == code) {
2,100,638!
1755
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
2,100,652✔
1756
  }
1757

1758
  return code;
2,100,700✔
1759
}
1760

1761
static int32_t msgToEp(STlvDecoder* pDecoder, void* pObj) {
48,400✔
1762
  SEp* pNode = (SEp*)pObj;
48,400✔
1763

1764
  int32_t code = TSDB_CODE_SUCCESS;
48,400✔
1765
  STlv*   pTlv = NULL;
48,400✔
1766
  tlvForEach(pDecoder, pTlv, code) {
145,242!
1767
    switch (pTlv->type) {
96,814!
1768
      case EP_CODE_FQDN:
48,409✔
1769
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
48,409✔
1770
        break;
48,406✔
1771
      case EP_CODE_port:
48,405✔
1772
        code = tlvDecodeU16(pTlv, &pNode->port);
48,405✔
1773
        break;
48,436✔
1774
      default:
×
1775
        break;
×
1776
    }
1777
  }
1778

1779
  return code;
48,422✔
1780
}
1781

1782
enum { EP_SET_CODE_IN_USE = 1, EP_SET_CODE_NUM_OF_EPS, EP_SET_CODE_EPS };
1783

1784
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
92,762✔
1785
  const SEpSet* pNode = (const SEpSet*)pObj;
92,762✔
1786

1787
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
92,762✔
1788
  if (TSDB_CODE_SUCCESS == code) {
92,770!
1789
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
92,774✔
1790
  }
1791

1792
  return code;
92,774✔
1793
}
1794

1795
static int32_t epSetToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,829✔
1796
  const SEpSet* pNode = (const SEpSet*)pObj;
8,829✔
1797

1798
  int32_t code = tlvEncodeI8(pEncoder, EP_SET_CODE_IN_USE, pNode->inUse);
8,829✔
1799
  if (TSDB_CODE_SUCCESS == code) {
8,816!
1800
    code = tlvEncodeI8(pEncoder, EP_SET_CODE_NUM_OF_EPS, pNode->numOfEps);
8,816✔
1801
  }
1802
  if (TSDB_CODE_SUCCESS == code) {
8,824!
1803
    code = tlvEncodeObjArray(pEncoder, EP_SET_CODE_EPS, epToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
8,824✔
1804
  }
1805

1806
  return code;
8,831✔
1807
}
1808

1809
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
2,489,309✔
1810
  SEpSet* pNode = (SEpSet*)pObj;
2,489,309✔
1811

1812
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
2,489,309✔
1813
  if (TSDB_CODE_SUCCESS == code) {
2,489,378✔
1814
    int32_t numOfEps = 0;
2,489,365✔
1815
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
2,489,365✔
1816
    pNode->numOfEps = numOfEps;
2,489,669✔
1817
  }
1818

1819
  return code;
2,489,682✔
1820
}
1821

1822
static int32_t msgToEpSet(STlvDecoder* pDecoder, void* pObj) {
47,270✔
1823
  SEpSet* pNode = (SEpSet*)pObj;
47,270✔
1824

1825
  int32_t code = TSDB_CODE_SUCCESS;
47,270✔
1826
  STlv*   pTlv = NULL;
47,270✔
1827
  tlvForEach(pDecoder, pTlv, code) {
189,127!
1828
    switch (pTlv->type) {
141,839!
1829
      case EP_SET_CODE_IN_USE:
47,282✔
1830
        code = tlvDecodeI8(pTlv, &pNode->inUse);
47,282✔
1831
        break;
47,282✔
1832
      case EP_SET_CODE_NUM_OF_EPS:
47,280✔
1833
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
47,280✔
1834
        break;
47,277✔
1835
      case EP_SET_CODE_EPS:
47,277✔
1836
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
47,277✔
1837
        break;
47,298✔
1838
      default:
×
1839
        break;
×
1840
    }
1841
  }
1842

1843
  return code;
47,293✔
1844
}
1845

1846
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1847

1848
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
92,703✔
1849
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
92,703✔
1850

1851
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
92,703✔
1852
  if (TSDB_CODE_SUCCESS == code) {
92,771✔
1853
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
92,769✔
1854
  }
1855

1856
  return code;
92,776✔
1857
}
1858

1859
static int32_t queryNodeAddrToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1860
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
×
1861

1862
  int32_t code = tlvEncodeI32(pEncoder, QUERY_NODE_ADDR_CODE_NODE_ID, pNode->nodeId);
×
1863
  if (TSDB_CODE_SUCCESS == code) {
×
1864
    code = tlvEncodeObj(pEncoder, QUERY_NODE_ADDR_CODE_EP_SET, epSetToMsg, &pNode->epSet);
×
1865
  }
1866

1867
  return code;
×
1868
}
1869

1870
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
2,489,273✔
1871
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
2,489,273✔
1872

1873
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
2,489,273✔
1874
  if (TSDB_CODE_SUCCESS == code) {
2,489,426!
1875
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
2,489,439✔
1876
  }
1877

1878
  return code;
2,489,683✔
1879
}
1880

1881
static int32_t msgToQueryNodeAddr(STlvDecoder* pDecoder, void* pObj) {
×
1882
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
×
1883

1884
  int32_t code = TSDB_CODE_SUCCESS;
×
1885
  STlv*   pTlv = NULL;
×
1886
  tlvForEach(pDecoder, pTlv, code) {
×
1887
    switch (pTlv->type) {
×
1888
      case QUERY_NODE_ADDR_CODE_NODE_ID:
×
1889
        code = tlvDecodeI32(pTlv, &pNode->nodeId);
×
1890
        break;
×
1891
      case QUERY_NODE_ADDR_CODE_EP_SET:
×
1892
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
×
1893
        break;
×
1894
    }
1895
  }
1896

1897
  return code;
×
1898
}
1899

1900
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1901

1902
static int32_t downstreamSourceNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
36,038✔
1903
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
36,038✔
1904

1905
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
36,038✔
1906
  if (TSDB_CODE_SUCCESS == code) {
36,038!
1907
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
36,038✔
1908
  }
1909
  if (TSDB_CODE_SUCCESS == code) {
36,038!
1910
    code = tlvEncodeValueU64(pEncoder, pNode->sId);
36,038✔
1911
  }
1912
  if (TSDB_CODE_SUCCESS == code) {
36,038!
1913
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
36,038✔
1914
  }
1915
  if (TSDB_CODE_SUCCESS == code) {
36,038!
1916
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
36,038✔
1917
  }
1918
  if (TSDB_CODE_SUCCESS == code) {
36,038!
1919
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
36,038✔
1920
  }
1921

1922
  return code;
36,038✔
1923
}
1924

1925
static int32_t downstreamSourceNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
36,038✔
1926
  return tlvEncodeObj(pEncoder, DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS, downstreamSourceNodeInlineToMsg, pObj);
36,038✔
1927
}
1928

1929
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
869,175✔
1930
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
869,175✔
1931

1932
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
869,175✔
1933
  if (TSDB_CODE_SUCCESS == code) {
869,266!
1934
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
869,266✔
1935
  }
1936
  if (TSDB_CODE_SUCCESS == code) {
869,257✔
1937
    code = tlvDecodeValueU64(pDecoder, &pNode->sId);
869,252✔
1938
  }
1939
  if (TSDB_CODE_SUCCESS == code) {
869,225✔
1940
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
869,223✔
1941
  }
1942
  if (TSDB_CODE_SUCCESS == code) {
869,202✔
1943
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
869,201✔
1944
  }
1945
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
869,161!
1946
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
869,167✔
1947
  }
1948

1949
  return code;
869,176✔
1950
}
1951

1952
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
869,182✔
1953
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
869,182✔
1954

1955
  int32_t code = TSDB_CODE_SUCCESS;
869,182✔
1956
  STlv*   pTlv = NULL;
869,182✔
1957
  tlvForEach(pDecoder, pTlv, code) {
1,738,356!
1958
    switch (pTlv->type) {
869,180!
1959
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
869,180✔
1960
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
869,180✔
1961
        break;
869,174✔
1962
      default:
×
1963
        break;
×
1964
    }
1965
  }
1966

1967
  return code;
869,170✔
1968
}
1969

1970
enum { WHEN_THEN_CODE_EXPR_BASE = 1, WHEN_THEN_CODE_WHEN, WHEN_THEN_CODE_THEN };
1971

1972
static int32_t whenThenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4✔
1973
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
4✔
1974

1975
  int32_t code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
4✔
1976
  if (TSDB_CODE_SUCCESS == code) {
4!
1977
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_WHEN, nodeToMsg, pNode->pWhen);
4✔
1978
  }
1979
  if (TSDB_CODE_SUCCESS == code) {
4!
1980
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_THEN, nodeToMsg, pNode->pThen);
4✔
1981
  }
1982

1983
  return code;
4✔
1984
}
1985

1986
static int32_t msgToWhenThenNode(STlvDecoder* pDecoder, void* pObj) {
5,927✔
1987
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
5,927✔
1988

1989
  int32_t code = TSDB_CODE_SUCCESS;
5,927✔
1990
  STlv*   pTlv = NULL;
5,927✔
1991
  tlvForEach(pDecoder, pTlv, code) {
23,700!
1992
    switch (pTlv->type) {
17,774!
1993
      case WHEN_THEN_CODE_EXPR_BASE:
5,928✔
1994
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,928✔
1995
        break;
5,923✔
1996
      case WHEN_THEN_CODE_WHEN:
5,924✔
1997
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
5,924✔
1998
        break;
5,923✔
1999
      case WHEN_THEN_CODE_THEN:
5,922✔
2000
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
5,922✔
2001
        break;
5,927✔
2002
      default:
×
2003
        break;
×
2004
    }
2005
  }
2006

2007
  return code;
5,927✔
2008
}
2009

2010
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
2011

2012
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4✔
2013
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
4✔
2014

2015
  int32_t code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
4✔
2016
  if (TSDB_CODE_SUCCESS == code) {
4!
2017
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_CASE, nodeToMsg, pNode->pCase);
4✔
2018
  }
2019
  if (TSDB_CODE_SUCCESS == code) {
4!
2020
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_ELSE, nodeToMsg, pNode->pElse);
4✔
2021
  }
2022
  if (TSDB_CODE_SUCCESS == code) {
4!
2023
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_WHEN_THEN_LIST, nodeListToMsg, pNode->pWhenThenList);
4✔
2024
  }
2025

2026
  return code;
4✔
2027
}
2028

2029
static int32_t msgToCaseWhenNode(STlvDecoder* pDecoder, void* pObj) {
4,582✔
2030
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
4,582✔
2031

2032
  int32_t code = TSDB_CODE_SUCCESS;
4,582✔
2033
  STlv*   pTlv = NULL;
4,582✔
2034
  tlvForEach(pDecoder, pTlv, code) {
18,112!
2035
    switch (pTlv->type) {
13,529!
2036
      case CASE_WHEN_CODE_EXPR_BASE:
4,582✔
2037
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
4,582✔
2038
        break;
4,576✔
2039
      case CASE_WHEN_CODE_CASE:
500✔
2040
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
500✔
2041
        break;
500✔
2042
      case CASE_WHEN_CODE_ELSE:
3,869✔
2043
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
3,869✔
2044
        break;
3,871✔
2045
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
4,578✔
2046
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
4,578✔
2047
        break;
4,583✔
2048
      default:
×
2049
        break;
×
2050
    }
2051
  }
2052

2053
  return code;
4,583✔
2054
}
2055

2056
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
2057

UNCOV
2058
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
UNCOV
2059
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
×
2060

UNCOV
2061
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
×
UNCOV
2062
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
2063
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
×
2064
  }
2065

UNCOV
2066
  return code;
×
2067
}
2068

2069
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
829✔
2070
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
829✔
2071

2072
  int32_t code = TSDB_CODE_SUCCESS;
829✔
2073
  STlv*   pTlv = NULL;
829✔
2074
  tlvForEach(pDecoder, pTlv, code) {
2,487!
2075
    switch (pTlv->type) {
1,658!
2076
      case WINDOW_OFFSET_CODE_START_OFFSET:
829✔
2077
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartOffset);
829✔
2078
        break;
829✔
2079
      case WINDOW_OFFSET_CODE_END_OFFSET:
829✔
2080
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndOffset);
829✔
2081
        break;
829✔
2082
      default:
×
2083
        break;
×
2084
    }
2085
  }
2086

2087
  return code;
829✔
2088
}
2089

2090

2091
enum {
2092
  PHY_NODE_CODE_OUTPUT_DESC = 1,
2093
  PHY_NODE_CODE_CONDITIONS,
2094
  PHY_NODE_CODE_CHILDREN,
2095
  PHY_NODE_CODE_LIMIT,
2096
  PHY_NODE_CODE_SLIMIT,
2097
  PHY_NODE_CODE_INPUT_TS_ORDER,
2098
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
2099
  PHY_NODE_CODE_DYNAMIC_OP,
2100
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
2101
};
2102

2103
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
116,023✔
2104
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
116,023✔
2105

2106
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
116,023✔
2107
  if (TSDB_CODE_SUCCESS == code) {
115,980!
2108
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
115,983✔
2109
  }
2110
  if (TSDB_CODE_SUCCESS == code) {
115,999✔
2111
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
115,996✔
2112
  }
2113
  if (TSDB_CODE_SUCCESS == code) {
116,014!
2114
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
116,021✔
2115
  }
2116
  if (TSDB_CODE_SUCCESS == code) {
116,025!
2117
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
116,035✔
2118
  }
2119
  if (TSDB_CODE_SUCCESS == code) {
116,018!
2120
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
116,030✔
2121
  }
2122
  if (TSDB_CODE_SUCCESS == code) {
116,046!
2123
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
116,049✔
2124
  }
2125
  if (TSDB_CODE_SUCCESS == code) {
116,037!
2126
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
116,046✔
2127
  }
2128
  if (TSDB_CODE_SUCCESS == code) { 
116,019!
2129
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
116,029✔
2130
  }
2131

2132
  return code;
116,040✔
2133
}
2134

2135
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
3,332,601✔
2136
  SPhysiNode* pNode = (SPhysiNode*)pObj;
3,332,601✔
2137

2138
  int32_t code = TSDB_CODE_SUCCESS;
3,332,601✔
2139
  STlv*   pTlv = NULL;
3,332,601✔
2140
  tlvForEach(pDecoder, pTlv, code) {
22,058,003!
2141
    switch (pTlv->type) {
18,727,138!
2142
      case PHY_NODE_CODE_OUTPUT_DESC:
3,332,632✔
2143
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
3,332,632✔
2144
        break;
3,332,727✔
2145
      case PHY_NODE_CODE_CONDITIONS:
373,664✔
2146
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
373,664✔
2147
        break;
373,439✔
2148
      case PHY_NODE_CODE_CHILDREN:
1,526,491✔
2149
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
1,526,491✔
2150
        break;
1,526,538✔
2151
      case PHY_NODE_CODE_LIMIT:
159,463✔
2152
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
159,463✔
2153
        break;
159,288✔
2154
      case PHY_NODE_CODE_SLIMIT:
7,659✔
2155
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
7,659✔
2156
        break;
7,658✔
2157
      case PHY_NODE_CODE_INPUT_TS_ORDER:
3,332,469✔
2158
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
3,332,469✔
2159
        break;
3,332,037✔
2160
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
3,332,054✔
2161
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
3,332,054✔
2162
        break;
3,331,620✔
2163
      case PHY_NODE_CODE_DYNAMIC_OP:
3,331,601✔
2164
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
3,331,601✔
2165
        break;
3,331,135✔
2166
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
3,331,105✔
2167
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
3,331,105✔
2168
        break;
3,330,960✔
2169
      default:
×
2170
        break;
×
2171
    }
2172
  }
2173

2174
  return code;
3,326,653✔
2175
}
2176

2177
enum {
2178
  PHY_SCAN_CODE_BASE_NODE = 1,
2179
  PHY_SCAN_CODE_SCAN_COLS,
2180
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2181
  PHY_SCAN_CODE_BASE_UID,
2182
  PHY_SCAN_CODE_BASE_SUID,
2183
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2184
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2185
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN,
2186
  PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN
2187
};
2188

2189
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
53,403✔
2190
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
53,403✔
2191

2192
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
53,403✔
2193
  if (TSDB_CODE_SUCCESS == code) {
53,415!
2194
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
53,418✔
2195
  }
2196
  if (TSDB_CODE_SUCCESS == code) {
53,402!
2197
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
53,407✔
2198
  }
2199
  if (TSDB_CODE_SUCCESS == code) {
53,411!
2200
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
53,417✔
2201
  }
2202
  if (TSDB_CODE_SUCCESS == code) {
53,436!
2203
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
53,438✔
2204
  }
2205
  if (TSDB_CODE_SUCCESS == code) {
53,426!
2206
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
53,430✔
2207
  }
2208
  if (TSDB_CODE_SUCCESS == code) {
53,407!
2209
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
53,415✔
2210
  }
2211
  if (TSDB_CODE_SUCCESS == code) {
53,439!
2212
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
53,447✔
2213
  }
2214
  if (TSDB_CODE_SUCCESS == code) {
53,441!
2215
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN, pNode->virtualStableScan);
53,446✔
2216
  }
2217

2218
  return code;
53,436✔
2219
}
2220

2221
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
1,223,719✔
2222
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
1,223,719✔
2223

2224
  int32_t code = TSDB_CODE_SUCCESS;
1,223,719✔
2225
  STlv*   pTlv = NULL;
1,223,719✔
2226
  tlvForEach(pDecoder, pTlv, code) {
11,371,805!
2227
    switch (pTlv->type) {
10,123,709!
2228
      case PHY_SCAN_CODE_BASE_NODE:
1,223,895✔
2229
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,223,895✔
2230
        break;
1,223,084✔
2231
      case PHY_SCAN_CODE_SCAN_COLS:
1,187,913✔
2232
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
1,187,913✔
2233
        break;
1,188,733✔
2234
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
396,976✔
2235
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
396,976✔
2236
        break;
396,954✔
2237
      case PHY_SCAN_CODE_BASE_UID:
1,223,965✔
2238
        code = tlvDecodeU64(pTlv, &pNode->uid);
1,223,965✔
2239
        break;
1,223,678✔
2240
      case PHY_SCAN_CODE_BASE_SUID:
1,223,609✔
2241
        code = tlvDecodeU64(pTlv, &pNode->suid);
1,223,609✔
2242
        break;
1,223,381✔
2243
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
1,223,330✔
2244
        code = tlvDecodeI8(pTlv, &pNode->tableType);
1,223,330✔
2245
        break;
1,223,218✔
2246
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
1,223,232✔
2247
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
1,223,232✔
2248
        break;
1,222,989✔
2249
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
1,222,895✔
2250
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
1,222,895✔
2251
        break;
1,222,951✔
2252
      case PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN:
1,223,002✔
2253
        code = tlvDecodeBool(pTlv, &pNode->virtualStableScan);
1,223,002✔
2254
      default:
1,223,098✔
2255
        break;
1,223,098✔
2256
    }
2257
  }
2258

2259
  return code;
1,245,458✔
2260
}
2261

2262
enum {
2263
  PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN = 1,
2264
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS,
2265
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT,
2266
  PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS,
2267
  PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS,
2268
  PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS,
2269
  PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE,
2270
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED,
2271
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE,
2272
};
2273

2274
static int32_t physiVirtualTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,454✔
2275
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode *)pObj;
4,454✔
2276

2277
  int32_t code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
4,454✔
2278

2279
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2280
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS, nodeListToMsg, pNode->pGroupTags);
4,454✔
2281
  }
2282

2283
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2284
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT, pNode->groupSort);
4,454✔
2285
  }
2286

2287
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2288
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS, pNode->scanAllCols);
4,454✔
2289
  }
2290

2291
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2292
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
4,454✔
2293
  }
2294

2295
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2296
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
4,454✔
2297
  }
2298

2299
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2300
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
4,454✔
2301
  }
2302

2303
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2304
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED, pNode->igExpired);
4,454✔
2305
  }
2306

2307
  if (TSDB_CODE_SUCCESS == code) {
4,454!
2308
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE, pNode->igCheckUpdate);
4,454✔
2309
  }
2310

2311
  return code;
4,454✔
2312
}
2313

2314
static int32_t msgToPhysiVirtualTableScanNode(STlvDecoder* pDecoder, void* pObj) {
4,542✔
2315
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
4,542✔
2316

2317
  int32_t code = TSDB_CODE_SUCCESS;
4,542✔
2318
  STlv*   pTlv = NULL;
4,542✔
2319
  tlvForEach(pDecoder, pTlv, code) {
31,788!
2320
    switch (pTlv->type) {
27,246!
2321
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN:
4,542✔
2322
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
4,542✔
2323
        break;
4,542✔
2324
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS:
×
2325
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
×
2326
        break;
×
2327
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT:
4,542✔
2328
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
4,542✔
2329
        break;
4,542✔
2330
      case PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS:
4,542✔
2331
        code = tlvDecodeBool(pTlv, &pNode->scanAllCols);
4,542✔
2332
        break;
4,542✔
2333
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS:
4,536✔
2334
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
4,536✔
2335
        break;
4,536✔
2336
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS:
×
2337
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2338
        break;
×
2339
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE:
×
2340
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2341
        break;
×
2342
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED:
4,542✔
2343
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
4,542✔
2344
        break;
4,542✔
2345
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE:
4,542✔
2346
        code = tlvDecodeI8(pTlv, &pNode->igCheckUpdate);
4,542✔
2347
        break;
4,542✔
2348
      default:
×
2349
        break;
×
2350
    }
2351
  }
2352

2353
  return code;
4,542✔
2354
}
2355

2356
enum {
2357
  PHY_TAG_SCAN_CODE_SCAN = 1,
2358
  PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
2359
};
2360

2361
static int32_t physiTagScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,211✔
2362
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
2,211✔
2363

2364
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
2,211✔
2365

2366
  if (TSDB_CODE_SUCCESS == code) {
2,209!
2367
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
2,209✔
2368
  }
2369
  return code;
2,213✔
2370
}
2371

2372
static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
35,365✔
2373
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
35,365✔
2374

2375
  int32_t code = TSDB_CODE_SUCCESS;
35,365✔
2376
  STlv*   pTlv = NULL;
35,365✔
2377
  tlvForEach(pDecoder, pTlv, code) {
106,047!
2378
    switch (pTlv->type) {
70,711!
2379
      case PHY_TAG_SCAN_CODE_SCAN:
35,369✔
2380
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
35,369✔
2381
        break;
35,337✔
2382
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
35,342✔
2383
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
35,342✔
2384
        break;
35,345✔
2385
      default:
×
2386
        break;
×
2387
    }
2388
  }
2389

2390
  return code;
35,340✔
2391
}
2392

2393
enum {
2394
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2395
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2396
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2397
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2398
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2399
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2400
};
2401

2402
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14✔
2403
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
14✔
2404

2405
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
14✔
2406
  if (TSDB_CODE_SUCCESS == code) {
14!
2407
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
14✔
2408
  }
2409
  if (TSDB_CODE_SUCCESS == code) {
14!
2410
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
14✔
2411
  }
2412
  if (TSDB_CODE_SUCCESS == code) {
14!
2413
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
14✔
2414
  }
2415
  if (TSDB_CODE_SUCCESS == code) {
14!
2416
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
14✔
2417
  }
2418
  if (TSDB_CODE_SUCCESS == code) {
14!
2419
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
14✔
2420
  }
2421

2422
  return code;
14✔
2423
}
2424

2425
static int32_t msgToPhysiLastRowScanNode(STlvDecoder* pDecoder, void* pObj) {
4,377✔
2426
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
4,377✔
2427

2428
  int32_t code = TSDB_CODE_SUCCESS;
4,377✔
2429
  STlv*   pTlv = NULL;
4,377✔
2430
  tlvForEach(pDecoder, pTlv, code) {
22,425!
2431
    switch (pTlv->type) {
18,046!
2432
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
4,377✔
2433
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
4,377✔
2434
        break;
4,377✔
2435
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
534✔
2436
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
534✔
2437
        break;
536✔
2438
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
4,379✔
2439
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
4,379✔
2440
        break;
4,378✔
2441
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
4,378✔
2442
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
4,378✔
2443
        break;
4,378✔
2444
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
4,378✔
2445
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
4,378✔
2446
        break;
4,379✔
2447
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
×
2448
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
×
2449
        break;
×
2450

2451
      default:
×
2452
        break;
×
2453
    }
2454
  }
2455

2456
  return code;
4,375✔
2457
}
2458

2459
enum {
2460
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2461
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2462
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2463
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2464
  PHY_TABLE_SCAN_CODE_TAGS,
2465
  PHY_TABLE_SCAN_CODE_SUBTABLE,
2466
  PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR,
2467
};
2468

2469
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
39,039✔
2470
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
39,039✔
2471

2472
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
39,039✔
2473
  if (TSDB_CODE_SUCCESS == code) {
39,045!
2474
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
39,050✔
2475
  }
2476
  if (TSDB_CODE_SUCCESS == code) {
39,033!
2477
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
39,039✔
2478
  }
2479
  if (TSDB_CODE_SUCCESS == code) {
39,017!
2480
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
39,026✔
2481
  }
2482
  if (TSDB_CODE_SUCCESS == code) {
39,008✔
2483
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
39,006✔
2484
  }
2485
  if (TSDB_CODE_SUCCESS == code) {
39,031!
2486
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
39,038✔
2487
  }
2488
  if (TSDB_CODE_SUCCESS == code) {
39,031!
2489
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
39,038✔
2490
  }
2491
  if (TSDB_CODE_SUCCESS == code) {
39,032!
2492
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
39,039✔
2493
  }
2494
  if (TSDB_CODE_SUCCESS == code) {
39,026✔
2495
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
39,019✔
2496
  }
2497
  if (TSDB_CODE_SUCCESS == code) {
39,025✔
2498
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
39,020✔
2499
  }
2500
  if (TSDB_CODE_SUCCESS == code) {
39,046✔
2501
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
39,042✔
2502
  }
2503
  if (TSDB_CODE_SUCCESS == code) {
39,053✔
2504
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
39,051✔
2505
  }
2506
  if (TSDB_CODE_SUCCESS == code) {
39,044✔
2507
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
39,033✔
2508
  }
2509
  if (TSDB_CODE_SUCCESS == code) {
39,056✔
2510
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
39,046✔
2511
  }
2512
  if (TSDB_CODE_SUCCESS == code) {
39,068✔
2513
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
39,060✔
2514
  }
2515
  if (TSDB_CODE_SUCCESS == code) {
39,071✔
2516
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
39,063✔
2517
  }
2518
  if (TSDB_CODE_SUCCESS == code) {
39,070✔
2519
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
39,041✔
2520
  }
2521
  if (TSDB_CODE_SUCCESS == code) {
39,075✔
2522
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
39,053✔
2523
  }
2524
  if (TSDB_CODE_SUCCESS == code) {
39,078✔
2525
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
39,060✔
2526
  }
2527
  if (TSDB_CODE_SUCCESS == code) {
39,068✔
2528
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
39,051✔
2529
  }
2530
  if (TSDB_CODE_SUCCESS == code) {
39,056✔
2531
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
39,032✔
2532
  }
2533
  return code;
39,045✔
2534
}
2535

2536
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
39,039✔
2537
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
39,039✔
2538

2539
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
39,039✔
2540
  if (TSDB_CODE_SUCCESS == code) {
39,060✔
2541
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
39,059✔
2542
  }
2543
  if (TSDB_CODE_SUCCESS == code) {
39,045!
2544
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
39,045✔
2545
  }
2546
  if (TSDB_CODE_SUCCESS == code) {
39,047!
2547
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
39,047✔
2548
  }
2549
  if (TSDB_CODE_SUCCESS == code) {
39,035✔
2550
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
39,019✔
2551
  }
2552
  if (TSDB_CODE_SUCCESS == code) {
39,049✔
2553
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
39,038✔
2554
  }
2555
  if (TSDB_CODE_SUCCESS == code) {
39,043✔
2556
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
39,039✔
2557
  }
2558

2559
  return code;
39,042✔
2560
}
2561

2562
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
1,132,515✔
2563
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,132,515✔
2564

2565
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
1,132,515✔
2566
  if (TSDB_CODE_SUCCESS == code) {
1,132,738!
2567
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
1,132,783✔
2568
  }
2569
  if (TSDB_CODE_SUCCESS == code) {
1,132,507✔
2570
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
1,132,309✔
2571
  }
2572
  if (TSDB_CODE_SUCCESS == code) {
1,132,636✔
2573
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
1,132,511✔
2574
  }
2575
  if (TSDB_CODE_SUCCESS == code) {
1,132,468✔
2576
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
1,132,365✔
2577
  }
2578
  if (TSDB_CODE_SUCCESS == code) {
1,132,440✔
2579
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
1,132,380✔
2580
  }
2581
  if (TSDB_CODE_SUCCESS == code) {
1,132,462✔
2582
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
1,132,011✔
2583
  }
2584
  if (TSDB_CODE_SUCCESS == code) {
1,132,956✔
2585
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
1,132,517✔
2586
  }
2587
  if (TSDB_CODE_SUCCESS == code) {
1,132,999✔
2588
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
1,132,567✔
2589
  }
2590
  if (TSDB_CODE_SUCCESS == code) {
1,132,738✔
2591
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
1,132,318✔
2592
  }
2593
  if (TSDB_CODE_SUCCESS == code) {
1,132,666✔
2594
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
1,132,083✔
2595
  }
2596
  if (TSDB_CODE_SUCCESS == code) {
1,133,067✔
2597
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
1,132,523✔
2598
  }
2599
  if (TSDB_CODE_SUCCESS == code) {
1,133,033✔
2600
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
1,132,522✔
2601
  }
2602
  if (TSDB_CODE_SUCCESS == code) {
1,133,284✔
2603
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
1,132,807✔
2604
  }
2605
  if (TSDB_CODE_SUCCESS == code) {
1,133,264✔
2606
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
1,132,564✔
2607
  }
2608
  if (TSDB_CODE_SUCCESS == code) {
1,133,495✔
2609
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
1,132,839✔
2610
  }
2611
  if (TSDB_CODE_SUCCESS == code) {
1,133,632✔
2612
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
1,132,983✔
2613
  }
2614
  if (TSDB_CODE_SUCCESS == code) {
1,133,606✔
2615
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
1,132,978✔
2616
  }
2617
  if (TSDB_CODE_SUCCESS == code) {
1,133,646✔
2618
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
1,132,866✔
2619
  }
2620
  if (TSDB_CODE_SUCCESS == code) {
1,133,394✔
2621
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
1,132,656✔
2622
  }
2623
  if (TSDB_CODE_SUCCESS == code) {
1,133,348✔
2624
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
1,132,692✔
2625
  }
2626
  return code;
1,132,667✔
2627
}
2628

2629
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
1,133,579✔
2630
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,133,579✔
2631

2632
  int32_t code = TSDB_CODE_SUCCESS;
1,133,579✔
2633
  STlv*   pTlv = NULL;
1,133,579✔
2634
  tlvForEach(pDecoder, pTlv, code) {
3,639,439!
2635
    switch (pTlv->type) {
2,506,844!
2636
      case PHY_TABLE_SCAN_CODE_SCAN:
1,133,624✔
2637
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
1,133,624✔
2638
        break;
1,132,388✔
2639
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
1,132,687✔
2640
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
1,132,687✔
2641
        break;
1,132,656✔
2642
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2643
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2644
        break;
×
2645
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
240,533✔
2646
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
240,533✔
2647
        break;
240,816✔
2648
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2649
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2650
        break;
×
2651
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2652
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2653
        break;
×
2654
      case PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR:
×
2655
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
2656
        break;
×
2657
      default:
×
2658
        break;
×
2659
    }
2660
  }
2661

2662
  return code;
1,132,535✔
2663
}
2664

2665
enum {
2666
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2667
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2668
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2669
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2670
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2671
};
2672

2673
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
7,708✔
2674
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
7,708✔
2675

2676
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
7,708✔
2677
  if (TSDB_CODE_SUCCESS == code) {
7,705!
2678
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
7,706✔
2679
  }
2680
  if (TSDB_CODE_SUCCESS == code) {
7,706✔
2681
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
7,705✔
2682
  }
2683
  if (TSDB_CODE_SUCCESS == code) {
7,705!
2684
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
7,705✔
2685
  }
2686
  if (TSDB_CODE_SUCCESS == code) {
7,706!
2687
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
7,708✔
2688
  }
2689

2690
  return code;
7,708✔
2691
}
2692

2693
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
45,977✔
2694
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
45,977✔
2695

2696
  int32_t code = TSDB_CODE_SUCCESS;
45,977✔
2697
  STlv*   pTlv = NULL;
45,977✔
2698
  tlvForEach(pDecoder, pTlv, code) {
275,860!
2699
    switch (pTlv->type) {
229,886!
2700
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
45,977✔
2701
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
45,977✔
2702
        break;
45,963✔
2703
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
45,973✔
2704
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
45,973✔
2705
        break;
45,986✔
2706
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
45,983✔
2707
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
45,983✔
2708
        break;
45,981✔
2709
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
45,979✔
2710
        code = tlvDecodeI32(pTlv, &pNode->accountId);
45,979✔
2711
        break;
45,980✔
2712
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
45,974✔
2713
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
45,974✔
2714
        break;
45,973✔
2715
      default:
×
2716
        break;
×
2717
    }
2718
  }
2719

2720
  return code;
45,976✔
2721
}
2722

2723
enum {
2724
  PHY_PROJECT_CODE_BASE_NODE = 1,
2725
  PHY_PROJECT_CODE_PROJECTIONS,
2726
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2727
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2728
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2729
};
2730

2731
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,764✔
2732
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
11,764✔
2733

2734
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
11,764✔
2735
  if (TSDB_CODE_SUCCESS == code) {
11,802!
2736
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
11,802✔
2737
  }
2738
  if (TSDB_CODE_SUCCESS == code) {
11,804!
2739
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
11,804✔
2740
  }
2741
  if (TSDB_CODE_SUCCESS == code) {
11,805!
2742
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
11,805✔
2743
  }
2744
  if (TSDB_CODE_SUCCESS == code) {
11,805!
2745
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
11,805✔
2746
  }
2747

2748
  return code;
11,805✔
2749
}
2750

2751
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
490,350✔
2752
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
490,350✔
2753

2754
  int32_t code = TSDB_CODE_SUCCESS;
490,350✔
2755
  STlv*   pTlv = NULL;
490,350✔
2756
  tlvForEach(pDecoder, pTlv, code) {
2,941,027!
2757
    switch (pTlv->type) {
2,450,897!
2758
      case PHY_PROJECT_CODE_BASE_NODE:
490,357✔
2759
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
490,357✔
2760
        break;
490,039✔
2761
      case PHY_PROJECT_CODE_PROJECTIONS:
490,012✔
2762
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
490,012✔
2763
        break;
490,281✔
2764
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
490,253✔
2765
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
490,253✔
2766
        break;
490,183✔
2767
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
490,168✔
2768
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
490,168✔
2769
        break;
490,101✔
2770
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
490,107✔
2771
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
490,107✔
2772
        break;
490,073✔
2773
      default:
×
2774
        break;
×
2775
    }
2776
  }
2777

2778
  return code;
489,835✔
2779
}
2780

2781
enum {
2782
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2783
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2784
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2785
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2786
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2787
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2788
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2789
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2790
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2791
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2792
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2793
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2794
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2795
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2796
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2797
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2798
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2799
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2800
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2801
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2802
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2803
};
2804

2805
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,582✔
2806
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
2,582✔
2807

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

2873
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
90,588✔
2874
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
90,588✔
2875

2876
  int32_t code = TSDB_CODE_SUCCESS;
90,588✔
2877
  STlv*   pTlv = NULL;
90,588✔
2878
  tlvForEach(pDecoder, pTlv, code) {
1,316,164!
2879
    switch (pTlv->type) {
1,225,592!
2880
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
90,587✔
2881
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
90,587✔
2882
        break;
90,576✔
2883
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
90,578✔
2884
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
90,578✔
2885
        break;
90,579✔
2886
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
90,577✔
2887
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
90,577✔
2888
        break;
90,578✔
2889
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
829✔
2890
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
829✔
2891
        break;
829✔
2892
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
406✔
2893
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
406✔
2894
        break;
406✔
2895
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
90,575✔
2896
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
90,575✔
2897
        break;
90,568✔
2898
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
1,122✔
2899
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
1,122✔
2900
        break;
1,122✔
2901
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
1,109✔
2902
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
1,109✔
2903
        break;
1,109✔
2904
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
90,566✔
2905
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
90,566✔
2906
        break;
90,567✔
2907
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
90,568✔
2908
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
90,568✔
2909
        break;
90,568✔
2910
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
591✔
2911
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
591✔
2912
        break;
591✔
2913
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
591✔
2914
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
591✔
2915
        break;
591✔
2916
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
21,535✔
2917
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
21,535✔
2918
        break;
21,535✔
2919
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
21,955✔
2920
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
21,955✔
2921
        break;
21,955✔
2922
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
90,568✔
2923
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
90,568✔
2924
        break;
90,584✔
2925
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
90,585✔
2926
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
90,585✔
2927
        break;
90,581✔
2928
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
90,576✔
2929
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
90,576✔
2930
        break;
90,570✔
2931
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
90,569✔
2932
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
90,569✔
2933
        break;
90,569✔
2934
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
90,569✔
2935
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
90,569✔
2936
        break;
90,563✔
2937
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
90,569✔
2938
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
90,569✔
2939
        break;
90,568✔
2940
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
90,567✔
2941
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
90,567✔
2942
        break;
90,567✔
2943
      default:
×
2944
        break;
×
2945
    }
2946
  }
2947

2948
  return code;
90,542✔
2949
}
2950

2951
enum {
2952
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2953
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2954
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2955
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2956
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2957
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2958
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2959
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2960
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2961
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2962
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2963
  PHY_HASH_JOIN_CODE_TARGETS,
2964
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2965
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2966
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2967
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2968
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2969
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2970
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2971
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2972

2973
};
2974

2975
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
2976
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
×
2977

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

3037
  return code;
×
3038
}
3039

3040

3041
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
6,279✔
3042
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
6,279✔
3043

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

3113
  return code;
6,279✔
3114
}
3115

3116

3117
enum {
3118
  PHY_AGG_CODE_BASE_NODE = 1,
3119
  PHY_AGG_CODE_EXPR,
3120
  PHY_AGG_CODE_GROUP_KEYS,
3121
  PHY_AGG_CODE_AGG_FUNCS,
3122
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
3123
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
3124
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
3125
};
3126

3127
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
13,773✔
3128
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
13,773✔
3129

3130
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
13,773✔
3131
  if (TSDB_CODE_SUCCESS == code) {
13,800!
3132
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
13,800✔
3133
  }
3134
  if (TSDB_CODE_SUCCESS == code) {
13,801✔
3135
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
13,796✔
3136
  }
3137
  if (TSDB_CODE_SUCCESS == code) {
13,804✔
3138
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
13,801✔
3139
  }
3140
  if (TSDB_CODE_SUCCESS == code) {
13,804✔
3141
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
13,801✔
3142
  }
3143
  if (TSDB_CODE_SUCCESS == code) {
13,806✔
3144
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
13,803✔
3145
  }
3146
  if (TSDB_CODE_SUCCESS == code) {
13,806✔
3147
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
13,802✔
3148
  }
3149

3150
  return code;
13,803✔
3151
}
3152

3153
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
650,967✔
3154
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
650,967✔
3155

3156
  int32_t code = TSDB_CODE_SUCCESS;
650,967✔
3157
  STlv*   pTlv = NULL;
650,967✔
3158
  tlvForEach(pDecoder, pTlv, code) {
4,159,538!
3159
    switch (pTlv->type) {
3,509,263!
3160
      case PHY_AGG_CODE_BASE_NODE:
650,973✔
3161
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
650,973✔
3162
        break;
650,210✔
3163
      case PHY_AGG_CODE_EXPR:
239,380✔
3164
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
239,380✔
3165
        break;
239,581✔
3166
      case PHY_AGG_CODE_GROUP_KEYS:
230,691✔
3167
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
230,691✔
3168
        break;
230,739✔
3169
      case PHY_AGG_CODE_AGG_FUNCS:
436,976✔
3170
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
436,976✔
3171
        break;
437,149✔
3172
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
650,606✔
3173
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
650,606✔
3174
        break;
650,424✔
3175
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
650,396✔
3176
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
650,396✔
3177
        break;
650,278✔
3178
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
650,241✔
3179
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
650,241✔
3180
        break;
650,190✔
3181
      default:
×
3182
        break;
×
3183
    }
3184
  }
3185

3186
  return code;
649,619✔
3187
}
3188

3189
enum {
3190
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
3191
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
3192
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
3193
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
3194
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
3195
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA,
3196
  PHY_EXCHANGE_CODE_DYN_TBNAME
3197
};
3198

3199
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
23,375✔
3200
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
23,375✔
3201

3202
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
23,375✔
3203
  if (TSDB_CODE_SUCCESS == code) {
23,375!
3204
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
23,375✔
3205
  }
3206
  if (TSDB_CODE_SUCCESS == code) {
23,375!
3207
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
23,375✔
3208
  }
3209
  if (TSDB_CODE_SUCCESS == code) {
23,375!
3210
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
23,375✔
3211
  }
3212
  if (TSDB_CODE_SUCCESS == code) {
23,375!
3213
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
23,375✔
3214
  }
3215
  if (TSDB_CODE_SUCCESS == code) {
23,375!
3216
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
23,375✔
3217
  }
3218
  if (TSDB_CODE_SUCCESS == code) {
23,375!
3219
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_DYN_TBNAME, pNode->dynTbname);
23,375✔
3220
  }
3221

3222
  return code;
23,375✔
3223
}
3224

3225
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
586,530✔
3226
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
586,530✔
3227

3228
  int32_t code = TSDB_CODE_SUCCESS;
586,530✔
3229
  STlv*   pTlv = NULL;
586,530✔
3230
  tlvForEach(pDecoder, pTlv, code) {
4,692,001!
3231
    switch (pTlv->type) {
4,105,491!
3232
      case PHY_EXCHANGE_CODE_BASE_NODE:
586,536✔
3233
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
586,536✔
3234
        break;
586,480✔
3235
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
586,479✔
3236
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
586,479✔
3237
        break;
586,470✔
3238
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
586,469✔
3239
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
586,469✔
3240
        break;
586,460✔
3241
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
586,471✔
3242
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
586,471✔
3243
        break;
586,470✔
3244
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
586,467✔
3245
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
586,467✔
3246
        break;
586,551✔
3247
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
586,545✔
3248
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
586,545✔
3249
        break;
586,529✔
3250
      case PHY_EXCHANGE_CODE_DYN_TBNAME:
586,524✔
3251
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
586,524✔
3252
        break;
586,511✔
3253
      default:
×
3254
        break;
×
3255
    }
3256
  }
3257

3258
  return code;
586,404✔
3259
}
3260

3261
enum {
3262
  PHY_MERGE_CODE_BASE_NODE = 1,
3263
  PHY_MERGE_CODE_MERGE_KEYS,
3264
  PHY_MERGE_CODE_TARGETS,
3265
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3266
  PHY_MERGE_CODE_SRC_GROUP_ID,
3267
  PHY_MERGE_CODE_GROUP_SORT,
3268
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3269
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3270
  PHY_MERGE_CODE_TYPE,
3271
};
3272

3273
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,977✔
3274
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
1,977✔
3275

3276
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,977✔
3277
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3278
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
1,977✔
3279
  }
3280
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3281
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
1,977✔
3282
  }
3283
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3284
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
1,977✔
3285
  }
3286
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3287
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
1,977✔
3288
  }
3289
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3290
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
1,977✔
3291
  }
3292
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3293
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
1,977✔
3294
  }
3295
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3296
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
1,977✔
3297
  }
3298
  if (TSDB_CODE_SUCCESS == code) {
1,977!
3299
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
1,977✔
3300
  }
3301

3302
  return code;
1,977✔
3303
}
3304

3305
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
54,020✔
3306
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
54,020✔
3307

3308
  int32_t code = TSDB_CODE_SUCCESS;
54,020✔
3309
  STlv*   pTlv = NULL;
54,020✔
3310
  tlvForEach(pDecoder, pTlv, code) {
539,553!
3311
    switch (pTlv->type) {
485,535!
3312
      case PHY_MERGE_CODE_BASE_NODE:
54,020✔
3313
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
54,020✔
3314
        break;
54,018✔
3315
      case PHY_MERGE_CODE_MERGE_KEYS:
53,381✔
3316
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
53,381✔
3317
        break;
53,383✔
3318
      case PHY_MERGE_CODE_TARGETS:
54,020✔
3319
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
54,020✔
3320
        break;
54,020✔
3321
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
54,020✔
3322
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
54,020✔
3323
        break;
54,020✔
3324
      case PHY_MERGE_CODE_SRC_GROUP_ID:
54,020✔
3325
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
54,020✔
3326
        break;
54,019✔
3327
      case PHY_MERGE_CODE_GROUP_SORT:
54,019✔
3328
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
54,019✔
3329
        break;
54,019✔
3330
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
54,019✔
3331
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
54,019✔
3332
        break;
54,018✔
3333
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
54,018✔
3334
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
54,018✔
3335
        break;
54,018✔
3336
      case PHY_MERGE_CODE_TYPE:
54,018✔
3337
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
54,018✔
3338
        break;
54,018✔
3339
      default:
×
3340
        break;
×
3341
    }
3342
  }
3343

3344
  return code;
54,013✔
3345
}
3346

3347
enum {
3348
  PHY_SORT_CODE_BASE_NODE = 1,
3349
  PHY_SORT_CODE_EXPR,
3350
  PHY_SORT_CODE_SORT_KEYS,
3351
  PHY_SORT_CODE_TARGETS,
3352
  PHY_SORT_CODE_CALC_GROUPID,
3353
  PHY_SORT_CODE_EXCLUDE_PK_COL
3354
};
3355

3356
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,947✔
3357
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
2,947✔
3358

3359
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
2,947✔
3360
  if (TSDB_CODE_SUCCESS == code) {
2,955!
3361
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
2,955✔
3362
  }
3363
  if (TSDB_CODE_SUCCESS == code) {
2,955!
3364
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
2,955✔
3365
  }
3366
  if (TSDB_CODE_SUCCESS == code) {
2,955!
3367
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
2,955✔
3368
  }
3369
  if (TSDB_CODE_SUCCESS == code) {
2,955!
3370
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
2,955✔
3371
  }
3372
  if (TSDB_CODE_SUCCESS == code) {
2,955!
3373
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
2,955✔
3374
  }
3375

3376
  return code;
2,955✔
3377
}
3378

3379
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
148,100✔
3380
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
148,100✔
3381

3382
  int32_t code = TSDB_CODE_SUCCESS;
148,100✔
3383
  STlv*   pTlv = NULL;
148,100✔
3384
  tlvForEach(pDecoder, pTlv, code) {
888,928!
3385
    switch (pTlv->type) {
740,572!
3386
      case PHY_SORT_CODE_BASE_NODE:
148,101✔
3387
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
148,101✔
3388
        break;
148,075✔
3389
      case PHY_SORT_CODE_EXPR:
409✔
3390
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
409✔
3391
        break;
409✔
3392
      case PHY_SORT_CODE_SORT_KEYS:
148,070✔
3393
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
148,070✔
3394
        break;
148,095✔
3395
      case PHY_SORT_CODE_TARGETS:
148,084✔
3396
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
148,084✔
3397
        break;
148,093✔
3398
      case PHY_SORT_CODE_CALC_GROUPID:
148,091✔
3399
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
148,091✔
3400
        break;
148,083✔
3401
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
148,080✔
3402
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
148,080✔
3403
      default:
148,073✔
3404
        break;
148,073✔
3405
    }
3406
  }
3407

3408
  return code;
148,295✔
3409
}
3410

3411
enum {
3412
  PHY_WINDOW_CODE_BASE_NODE = 1,
3413
  PHY_WINDOW_CODE_EXPR,
3414
  PHY_WINDOW_CODE_FUNCS,
3415
  PHY_WINDOW_CODE_TS_PK,
3416
  PHY_WINDOW_CODE_TS_END,
3417
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3418
  PHY_WINDOW_CODE_WATERMARK,
3419
  PHY_WINDOW_CODE_DELETE_MARK,
3420
  PHY_WINDOW_CODE_IG_EXPIRED,
3421
  PHY_WINDOW_CODE_INDEF_ROWS_FUNC,
3422
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3423
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3424
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3425
};
3426

3427
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,331✔
3428
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
4,331✔
3429

3430
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
4,331✔
3431
  if (TSDB_CODE_SUCCESS == code) {
4,327!
3432
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
4,327✔
3433
  }
3434
  if (TSDB_CODE_SUCCESS == code) {
4,327!
3435
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
4,327✔
3436
  }
3437
  if (TSDB_CODE_SUCCESS == code) {
4,324!
3438
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
4,324✔
3439
  }
3440
  if (TSDB_CODE_SUCCESS == code) {
4,331!
3441
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
4,331✔
3442
  }
3443
  if (TSDB_CODE_SUCCESS == code) {
4,331!
3444
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
4,331✔
3445
  }
3446
  if (TSDB_CODE_SUCCESS == code) {
4,330!
3447
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
4,330✔
3448
  }
3449
  if (TSDB_CODE_SUCCESS == code) {
4,329!
3450
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
4,329✔
3451
  }
3452
  if (TSDB_CODE_SUCCESS == code) {
4,327✔
3453
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
4,325✔
3454
  }
3455
  if (TSDB_CODE_SUCCESS == code) {
4,328✔
3456
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
4,326✔
3457
  }
3458
  if (TSDB_CODE_SUCCESS == code) {
4,330✔
3459
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_INDEF_ROWS_FUNC, pNode->indefRowsFunc);
4,328✔
3460
  }
3461

3462
  return code;
4,327✔
3463
}
3464

3465
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
24,394✔
3466
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
24,394✔
3467

3468
  int32_t code = TSDB_CODE_SUCCESS;
24,394✔
3469
  STlv*   pTlv = NULL;
24,394✔
3470
  tlvForEach(pDecoder, pTlv, code) {
249,295!
3471
    switch (pTlv->type) {
224,915!
3472
      case PHY_WINDOW_CODE_BASE_NODE:
24,391✔
3473
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
24,391✔
3474
        break;
24,365✔
3475
      case PHY_WINDOW_CODE_EXPR:
4,137✔
3476
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
4,137✔
3477
        break;
4,135✔
3478
      case PHY_WINDOW_CODE_FUNCS:
24,360✔
3479
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
24,360✔
3480
        break;
24,391✔
3481
      case PHY_WINDOW_CODE_TS_PK:
24,391✔
3482
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
24,391✔
3483
        break;
24,388✔
3484
      case PHY_WINDOW_CODE_TS_END:
1,386✔
3485
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
1,386✔
3486
        break;
1,386✔
3487
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
24,385✔
3488
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
24,385✔
3489
        break;
24,380✔
3490
      case PHY_WINDOW_CODE_WATERMARK:
24,379✔
3491
        code = tlvDecodeI64(pTlv, &pNode->watermark);
24,379✔
3492
        break;
24,376✔
3493
      case PHY_WINDOW_CODE_DELETE_MARK:
24,376✔
3494
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
24,376✔
3495
        break;
24,371✔
3496
      case PHY_WINDOW_CODE_IG_EXPIRED:
24,373✔
3497
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
24,373✔
3498
        break;
24,370✔
3499
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
24,368✔
3500
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
24,368✔
3501
        break;
24,369✔
3502
      case PHY_WINDOW_CODE_INDEF_ROWS_FUNC:
24,369✔
3503
        code = tlvDecodeI8(pTlv, &pNode->indefRowsFunc);
24,369✔
3504
        break;
24,370✔
3505
      default:
×
3506
        break;
×
3507
    }
3508
  }
3509

3510
  return code;
24,356✔
3511
}
3512

3513
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS, PHY_INTERVAL_CODE_TIME_RANGE };
3514

3515
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,744✔
3516
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
3,744✔
3517

3518
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
3,744✔
3519
  if (TSDB_CODE_SUCCESS == code) {
3,746✔
3520
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
3,745✔
3521
  }
3522
  if (TSDB_CODE_SUCCESS == code) {
3,746✔
3523
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
3,745✔
3524
  }
3525
  if (TSDB_CODE_SUCCESS == code) {
3,746✔
3526
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
3,745✔
3527
  }
3528
  if (TSDB_CODE_SUCCESS == code) {
3,747✔
3529
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
3,744✔
3530
  }
3531

3532
  return code;
3,745✔
3533
}
3534

3535
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,745✔
3536
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
3,745✔
3537

3538
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
3,745✔
3539
  if (TSDB_CODE_SUCCESS == code) {
3,745!
3540
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
3,745✔
3541
  }
3542
  if (TSDB_CODE_SUCCESS == code) {
3,745!
3543
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
3,745✔
3544
  }
3545

3546
  return code;
3,746✔
3547
}
3548

3549
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
19,148✔
3550
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
19,148✔
3551

3552
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
19,148✔
3553
  if (TSDB_CODE_SUCCESS == code) {
19,148!
3554
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
19,150✔
3555
  }
3556
  if (TSDB_CODE_SUCCESS == code) {
19,144!
3557
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
19,144✔
3558
  }
3559
  if (TSDB_CODE_SUCCESS == code) {
19,145!
3560
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
19,145✔
3561
  }
3562
  if (TSDB_CODE_SUCCESS == code) {
19,148!
3563
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
19,149✔
3564
  }
3565

3566
  return code;
19,147✔
3567
}
3568

3569
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
19,174✔
3570
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
19,174✔
3571

3572
  int32_t code = TSDB_CODE_SUCCESS;
19,174✔
3573
  STlv*   pTlv = NULL;
19,174✔
3574
  tlvForEach(pDecoder, pTlv, code) {
76,611!
3575
    switch (pTlv->type) {
57,466!
3576
      case PHY_INTERVAL_CODE_WINDOW:
19,173✔
3577
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
19,173✔
3578
        break;
19,149✔
3579
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
19,148✔
3580
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
19,148✔
3581
        break;
19,147✔
3582
      case PHY_INTERVAL_CODE_TIME_RANGE:
19,148✔
3583
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
19,148✔
3584
      default:
19,141✔
3585
        break;
19,141✔
3586
    }
3587
  }
3588

3589
  return code;
19,140✔
3590
}
3591

3592
enum {
3593
  PHY_FILL_CODE_BASE_NODE = 1,
3594
  PHY_FILL_CODE_MODE,
3595
  PHY_FILL_CODE_FILL_EXPRS,
3596
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3597
  PHY_FILL_CODE_WSTART,
3598
  PHY_FILL_CODE_VALUES,
3599
  PHY_FILL_CODE_TIME_RANGE,
3600
  PHY_FILL_CODE_INPUT_TS_ORDER,
3601
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3602
  PHY_FILL_CODE_TIME_RANGE_EXPR,
3603
};
3604

3605
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4✔
3606
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
4✔
3607

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

3636
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
3,187✔
3637
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
3,187✔
3638

3639
  int32_t code = TSDB_CODE_SUCCESS;
3,187✔
3640
  STlv*   pTlv = NULL;
3,187✔
3641
  tlvForEach(pDecoder, pTlv, code) {
22,280!
3642
    switch (pTlv->type) {
19,094!
3643
      case PHY_FILL_CODE_BASE_NODE:
3,187✔
3644
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,187✔
3645
        break;
3,184✔
3646
      case PHY_FILL_CODE_MODE:
3,184✔
3647
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
3,184✔
3648
        break;
3,184✔
3649
      case PHY_FILL_CODE_FILL_EXPRS:
3,184✔
3650
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
3,184✔
3651
        break;
3,186✔
3652
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
2,927✔
3653
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
2,927✔
3654
        break;
2,929✔
3655
      case PHY_FILL_CODE_WSTART:
3,187✔
3656
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
3,187✔
3657
        break;
3,187✔
3658
      case PHY_FILL_CODE_VALUES:
237✔
3659
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
237✔
3660
        break;
237✔
3661
      case PHY_FILL_CODE_TIME_RANGE:
3,187✔
3662
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
3,187✔
3663
        break;
3,185✔
3664
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
1✔
3665
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
1✔
3666
        break;
1✔
3667
      case PHY_FILL_CODE_TIME_RANGE_EXPR:
×
3668
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
3669
        break;
×
3670
      default:
×
3671
        break;
×
3672
    }
3673
  }
3674

3675
  return code;
3,183✔
3676
}
3677

3678
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3679

3680
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
124✔
3681
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
124✔
3682

3683
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
124✔
3684
  if (TSDB_CODE_SUCCESS == code) {
124!
3685
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
124✔
3686
  }
3687

3688
  return code;
124✔
3689
}
3690

3691
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
1,386✔
3692
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
1,386✔
3693

3694
  int32_t code = TSDB_CODE_SUCCESS;
1,386✔
3695
  STlv*   pTlv = NULL;
1,386✔
3696
  tlvForEach(pDecoder, pTlv, code) {
4,158!
3697
    switch (pTlv->type) {
2,772!
3698
      case PHY_SESSION_CODE_WINDOW:
1,386✔
3699
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,386✔
3700
        break;
1,386✔
3701
      case PHY_SESSION_CODE_GAP:
1,386✔
3702
        code = tlvDecodeI64(pTlv, &pNode->gap);
1,386✔
3703
        break;
1,386✔
3704
      default:
×
3705
        break;
×
3706
    }
3707
  }
3708

3709
  return code;
1,386✔
3710
}
3711

3712
enum { PHY_EXT_CODE_WINDOW = 1,
3713
       PHY_EXT_CODE_SKEY,
3714
       PHY_EXT_CODE_EKEY,
3715
       PHY_EXT_CODE_TIME_RANGE_EXPR,
3716
       PHY_EXT_CODE_IS_SINGLE_TABLE,
3717
       PHY_EXT_CODE_INPUT_HAS_ORDER};
3718

3719
static int32_t physiExternalWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3720
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
×
3721
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3722
  if (TSDB_CODE_SUCCESS == code) {
×
3723
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_SKEY, pNode->timeRange.skey);
×
3724
  }
3725
  if (TSDB_CODE_SUCCESS == code) {
×
3726
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_EKEY, pNode->timeRange.ekey);
×
3727
  }
3728
  if (TSDB_CODE_SUCCESS == code) {
×
3729
    code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
×
3730
  }
3731
  if (TSDB_CODE_SUCCESS == code) {
×
3732
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_IS_SINGLE_TABLE, pNode->isSingleTable);
×
3733
  }
3734
  if (TSDB_CODE_SUCCESS == code) {
×
3735
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_INPUT_HAS_ORDER, pNode->inputHasOrder);
×
3736
  }
3737

3738
  return code;
×
3739
}
3740

3741
static int32_t msgToPhysiExternalWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3742
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
×
3743

3744
  int32_t code = TSDB_CODE_SUCCESS;
×
3745
  STlv*   pTlv = NULL;
×
3746
  tlvForEach(pDecoder, pTlv, code) {
×
3747
    switch (pTlv->type) {
×
3748
      case PHY_EXT_CODE_WINDOW:
×
3749
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3750
        break;
×
3751
      case PHY_EXT_CODE_SKEY:
×
3752
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
×
3753
        break;
×
3754
      case PHY_EXT_CODE_EKEY:
×
3755
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
×
3756
        break;
×
3757
      case PHY_EXT_CODE_TIME_RANGE_EXPR:
×
3758
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
3759
        break;
×
3760
      case PHY_EXT_CODE_IS_SINGLE_TABLE:
×
3761
        code = tlvDecodeBool(pTlv, &pNode->isSingleTable);
×
3762
        break;
×
3763
      case PHY_EXT_CODE_INPUT_HAS_ORDER:
×
3764
        code = tlvDecodeBool(pTlv, &pNode->inputHasOrder);
×
3765
        break;
×
3766
      default:
×
3767
        break;
×
3768
    }
3769
  }
3770
  return code;
×
3771
}
3772

3773
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY, PHY_STATE_CODE_TRUE_FOR_LIMIT, PHY_STATE_CODE_EXTEND_OPTION };
3774

3775
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
75✔
3776
  const SStateWindowPhysiNode* pNode = (const SStateWindowPhysiNode*)pObj;
75✔
3777

3778
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
75✔
3779
  if (TSDB_CODE_SUCCESS == code) {
75!
3780
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
75✔
3781
  }
3782
  if (TSDB_CODE_SUCCESS == code) {
75!
3783
    code = tlvEncodeI64(pEncoder, PHY_STATE_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
75✔
3784
  }
3785
  if (TSDB_CODE_SUCCESS == code) {
75!
3786
    code = tlvEncodeI32(pEncoder, PHY_STATE_CODE_EXTEND_OPTION, pNode->extendOption);
75✔
3787
  }
3788

3789
  return code;
75✔
3790
}
3791

3792
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
3,129✔
3793
  SStateWindowPhysiNode* pNode = (SStateWindowPhysiNode*)pObj;
3,129✔
3794

3795
  int32_t code = TSDB_CODE_SUCCESS;
3,129✔
3796
  STlv*   pTlv = NULL;
3,129✔
3797
  tlvForEach(pDecoder, pTlv, code) {
15,645!
3798
    switch (pTlv->type) {
12,516!
3799
      case PHY_STATE_CODE_WINDOW:
3,129✔
3800
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
3,129✔
3801
        break;
3,129✔
3802
      case PHY_STATE_CODE_KEY:
3,129✔
3803
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
3,129✔
3804
        break;
3,129✔
3805
      case PHY_STATE_CODE_TRUE_FOR_LIMIT:
3,129✔
3806
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
3,129✔
3807
        break;
3,129✔
3808
      case PHY_STATE_CODE_EXTEND_OPTION:
3,129✔
3809
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->extendOption);
3,129✔
3810
      default:
3,129✔
3811
        break;
3,129✔
3812
    }
3813
  }
3814

3815
  return code;
3,129✔
3816
}
3817

3818
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND, PHY_EVENT_CODE_TRUE_FOR_LIMIT };
3819

3820
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
197✔
3821
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
197✔
3822

3823
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
197✔
3824
  if (TSDB_CODE_SUCCESS == code) {
197!
3825
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
197✔
3826
  }
3827
  if (TSDB_CODE_SUCCESS == code) {
197!
3828
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
197✔
3829
  }
3830
  if (TSDB_CODE_SUCCESS == code) {
197!
3831
    code = tlvEncodeI64(pEncoder, PHY_EVENT_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
197✔
3832
  }
3833

3834
  return code;
197✔
3835
}
3836

3837
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
394✔
3838
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
394✔
3839

3840
  int32_t code = TSDB_CODE_SUCCESS;
394✔
3841
  STlv*   pTlv = NULL;
394✔
3842
  tlvForEach(pDecoder, pTlv, code) {
1,969!
3843
    switch (pTlv->type) {
1,575!
3844
      case PHY_EVENT_CODE_WINDOW:
394✔
3845
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
394✔
3846
        break;
393✔
3847
      case PHY_EVENT_CODE_START_COND:
393✔
3848
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
393✔
3849
        break;
394✔
3850
      case PHY_EVENT_CODE_END_COND:
394✔
3851
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
394✔
3852
        break;
394✔
3853
      case PHY_EVENT_CODE_TRUE_FOR_LIMIT:
394✔
3854
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
394✔
3855
        break;
394✔
3856
      default:
×
3857
        break;
×
3858
    }
3859
  }
3860

3861
  return code;
393✔
3862
}
3863

3864
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3865

3866
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
186✔
3867
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
186✔
3868

3869
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
186✔
3870
  if (TSDB_CODE_SUCCESS == code) {
186!
3871
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
186✔
3872
  }
3873
  if (TSDB_CODE_SUCCESS == code) {
186!
3874
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
186✔
3875
  }
3876

3877
  return code;
186✔
3878
}
3879

3880
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
313✔
3881
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
313✔
3882

3883
  int32_t code = TSDB_CODE_SUCCESS;
313✔
3884
  STlv*   pTlv = NULL;
313✔
3885
  tlvForEach(pDecoder, pTlv, code) {
1,249!
3886
    switch (pTlv->type) {
937!
3887
      case PHY_COUNT_CODE_WINDOW:
313✔
3888
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
313✔
3889
        break;
312✔
3890
      case PHY_COUNT_CODE_WINDOW_COUNT:
312✔
3891
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
312✔
3892
        break;
312✔
3893
      case PHY_COUNT_CODE_WINDOW_SLIDING:
312✔
3894
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
312✔
3895
        break;
312✔
3896
      default:
×
3897
        break;
×
3898
    }
3899
  }
3900

3901
  return code;
312✔
3902
}
3903

3904
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3905

3906
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3907
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3908

3909
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3910
  if (TSDB_CODE_SUCCESS == code) {
×
3911
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3912
  }
3913
  if (TSDB_CODE_SUCCESS == code) {
×
3914
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3915
  }
3916

3917
  return code;
×
3918
}
3919

3920
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3921
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3922

3923
  int32_t code = TSDB_CODE_SUCCESS;
×
3924
  STlv*   pTlv = NULL;
×
3925
  tlvForEach(pDecoder, pTlv, code) {
×
3926
    switch (pTlv->type) {
×
3927
      case PHY_ANOMALY_CODE_WINDOW:
×
3928
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3929
        break;
×
3930
      case PHY_ANOMALY_CODE_KEY:
×
3931
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAnomalyKey);
×
3932
        break;
×
3933
      case PHY_ANOMALY_CODE_WINDOW_OPTION:
×
3934
        code = tlvDecodeCStr(pTlv, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
×
3935
        break;
×
3936
      default:
×
3937
        break;
×
3938
    }
3939
  }
3940

3941
  return code;
×
3942
}
3943

3944
enum {
3945
  PHY_PARTITION_CODE_BASE_NODE = 1,
3946
  PHY_PARTITION_CODE_EXPR,
3947
  PHY_PARTITION_CODE_KEYS,
3948
  PHY_PARTITION_CODE_TARGETS,
3949
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3950
  PHY_PARTITION_CODE_TS_SLOTID
3951
};
3952

3953
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
356✔
3954
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
356✔
3955

3956
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
356✔
3957
  if (TSDB_CODE_SUCCESS == code) {
356!
3958
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
356✔
3959
  }
3960
  if (TSDB_CODE_SUCCESS == code) {
356!
3961
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
356✔
3962
  }
3963
  if (TSDB_CODE_SUCCESS == code) {
356!
3964
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
356✔
3965
  }
3966
  if (TSDB_CODE_SUCCESS == code) {
356!
3967
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
356✔
3968
  }
3969
  if (TSDB_CODE_SUCCESS == code) {
356!
3970
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
356✔
3971
  }
3972

3973
  return code;
356✔
3974
}
3975

3976
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
9,804✔
3977
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
9,804✔
3978

3979
  int32_t code = TSDB_CODE_SUCCESS;
9,804✔
3980
  STlv*   pTlv = NULL;
9,804✔
3981
  tlvForEach(pDecoder, pTlv, code) {
58,877!
3982
    switch (pTlv->type) {
49,077!
3983
      case PHY_PARTITION_CODE_BASE_NODE:
9,802✔
3984
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,802✔
3985
        break;
9,788✔
3986
      case PHY_PARTITION_CODE_EXPR:
80✔
3987
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
80✔
3988
        break;
80✔
3989
      case PHY_PARTITION_CODE_KEYS:
9,791✔
3990
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
9,791✔
3991
        break;
9,805✔
3992
      case PHY_PARTITION_CODE_TARGETS:
9,803✔
3993
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
9,803✔
3994
        break;
9,803✔
3995
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
9,803✔
3996
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
9,803✔
3997
        break;
9,800✔
3998
      case PHY_PARTITION_CODE_TS_SLOTID:
9,798✔
3999
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
9,798✔
4000
        break;
9,797✔
4001
      default:
×
4002
        break;
×
4003
    }
4004
  }
4005

4006
  return code;
9,789✔
4007
}
4008

4009
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
4010

4011
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
36✔
4012
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
36✔
4013

4014
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
36✔
4015
  if (TSDB_CODE_SUCCESS == code) {
36!
4016
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
36✔
4017
  }
4018
  if (TSDB_CODE_SUCCESS == code) {
36!
4019
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
36✔
4020
  }
4021

4022
  return code;
36✔
4023
}
4024

4025
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
18,820✔
4026
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
18,820✔
4027

4028
  int32_t code = TSDB_CODE_SUCCESS;
18,820✔
4029
  STlv*   pTlv = NULL;
18,820✔
4030
  tlvForEach(pDecoder, pTlv, code) {
56,577!
4031
    switch (pTlv->type) {
37,758!
4032
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
18,822✔
4033
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
18,822✔
4034
        break;
18,821✔
4035
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
115✔
4036
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
115✔
4037
        break;
115✔
4038
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
18,821✔
4039
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
18,821✔
4040
        break;
18,821✔
4041
      default:
×
4042
        break;
×
4043
    }
4044
  }
4045

4046
  return code;
18,820✔
4047
}
4048

4049
enum {
4050
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
4051
  PHY_INERP_FUNC_CODE_EXPR,
4052
  PHY_INERP_FUNC_CODE_FUNCS,
4053
  PHY_INERP_FUNC_CODE_TIME_RANGE,
4054
  PHY_INERP_FUNC_CODE_INTERVAL,
4055
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
4056
  PHY_INERP_FUNC_CODE_FILL_MODE,
4057
  PHY_INERP_FUNC_CODE_FILL_VALUES,
4058
  PHY_INERP_FUNC_CODE_TIME_SERIES,
4059
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL,
4060
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT,
4061
};
4062

4063
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
322✔
4064
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
322✔
4065

4066
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
322✔
4067
  if (TSDB_CODE_SUCCESS == code) {
322!
4068
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
322✔
4069
  }
4070
  if (TSDB_CODE_SUCCESS == code) {
322!
4071
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
322✔
4072
  }
4073
  if (TSDB_CODE_SUCCESS == code) {
322!
4074
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
322✔
4075
  }
4076
  if (TSDB_CODE_SUCCESS == code) {
322!
4077
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
322✔
4078
  }
4079
  if (TSDB_CODE_SUCCESS == code) {
322!
4080
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
322✔
4081
  }
4082
  if (TSDB_CODE_SUCCESS == code) {
322!
4083
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
322✔
4084
  }
4085
  if (TSDB_CODE_SUCCESS == code) {
322!
4086
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
322✔
4087
  }
4088
  if (TSDB_CODE_SUCCESS == code) {
322!
4089
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
322✔
4090
  }
4091
  if (TSDB_CODE_SUCCESS == code) {
322!
4092
    code = tlvEncodeI64(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL, pNode->rangeInterval);
322✔
4093
  }
4094
  if (TSDB_CODE_SUCCESS == code) {
322!
4095
    code = tlvEncodeI8(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT, pNode->rangeIntervalUnit);
322✔
4096
  }
4097

4098
  return code;
322✔
4099
}
4100

4101
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
12,911✔
4102
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
12,911✔
4103

4104
  int32_t code = TSDB_CODE_SUCCESS;
12,911✔
4105
  STlv*   pTlv = NULL;
12,911✔
4106
  tlvForEach(pDecoder, pTlv, code) {
135,229!
4107
    switch (pTlv->type) {
122,318!
4108
      case PHY_INERP_FUNC_CODE_BASE_NODE:
12,912✔
4109
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
12,912✔
4110
        break;
12,911✔
4111
      case PHY_INERP_FUNC_CODE_EXPR:
149✔
4112
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
149✔
4113
        break;
149✔
4114
      case PHY_INERP_FUNC_CODE_FUNCS:
12,911✔
4115
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
12,911✔
4116
        break;
12,912✔
4117
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
12,912✔
4118
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
12,912✔
4119
        break;
12,912✔
4120
      case PHY_INERP_FUNC_CODE_INTERVAL:
12,911✔
4121
        code = tlvDecodeI64(pTlv, &pNode->interval);
12,911✔
4122
        break;
12,911✔
4123
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
12,911✔
4124
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
12,911✔
4125
        break;
12,911✔
4126
      case PHY_INERP_FUNC_CODE_FILL_MODE:
12,911✔
4127
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
12,911✔
4128
        break;
12,911✔
4129
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
5,966✔
4130
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
5,966✔
4131
        break;
5,967✔
4132
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
12,912✔
4133
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
12,912✔
4134
        break;
12,911✔
4135
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL:
12,911✔
4136
        code = tlvDecodeI64(pTlv, &pNode->rangeInterval);
12,911✔
4137
        break;
12,911✔
4138
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT:
12,912✔
4139
        code = tlvDecodeI8(pTlv, &pNode->rangeIntervalUnit);
12,912✔
4140
        break;
12,912✔
4141
      default:
×
4142
        break;
×
4143
    }
4144
  }
4145

4146
  return code;
12,914✔
4147
}
4148

4149
enum {
4150
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
4151
  PHY_FORECAST_FUNC_CODE_EXPR,
4152
  PHY_FORECAST_FUNC_CODE_FUNCS,
4153
};
4154

4155
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4156
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
4157

4158
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
4159
  if (TSDB_CODE_SUCCESS == code) {
×
4160
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
4161
  }
4162
  if (TSDB_CODE_SUCCESS == code) {
×
4163
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
4164
  }
4165

4166
  return code;
×
4167
}
4168

4169
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
4170
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
4171

4172
  int32_t code = TSDB_CODE_SUCCESS;
×
4173
  STlv*   pTlv = NULL;
×
4174
  tlvForEach(pDecoder, pTlv, code) {
×
4175
    switch (pTlv->type) {
×
4176
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
×
4177
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
×
4178
        break;
×
4179
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
4180
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
4181
        break;
×
4182
      case PHY_FORECAST_FUNC_CODE_FUNCS:
×
4183
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
×
4184
        break;
×
4185
      default:
×
4186
        break;
×
4187
    }
4188
  }
4189

4190
  return code;
×
4191
}
4192

4193
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
4194

4195
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
56,677✔
4196
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
56,677✔
4197
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
56,677✔
4198
}
4199

4200
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
1,619,092✔
4201
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
1,619,092✔
4202

4203
  int32_t code = TSDB_CODE_SUCCESS;
1,619,092✔
4204
  STlv*   pTlv = NULL;
1,619,092✔
4205
  tlvForEach(pDecoder, pTlv, code) {
3,238,495!
4206
    switch (pTlv->type) {
1,619,194!
4207
      case PHY_DATA_SINK_CODE_INPUT_DESC:
1,619,194✔
4208
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
1,619,194✔
4209
        break;
1,619,403✔
4210
      default:
×
4211
        break;
×
4212
    }
4213
  }
4214

4215
  return code;
1,619,180✔
4216
}
4217

4218
enum { PHY_DISPATCH_CODE_SINK = 1 };
4219

4220
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
55,637✔
4221
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
55,637✔
4222
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
55,637✔
4223
}
4224

4225
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
1,611,766✔
4226
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
1,611,766✔
4227

4228
  int32_t code = TSDB_CODE_SUCCESS;
1,611,766✔
4229
  STlv*   pTlv = NULL;
1,611,766✔
4230
  tlvForEach(pDecoder, pTlv, code) {
3,223,677!
4231
    switch (pTlv->type) {
1,612,091!
4232
      case PHY_DISPATCH_CODE_SINK:
1,612,091✔
4233
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,612,091✔
4234
        break;
1,611,911✔
4235
      default:
×
4236
        break;
×
4237
    }
4238
  }
4239

4240
  return code;
1,610,742✔
4241
}
4242

4243
enum {
4244
  PHY_QUERY_INSERT_CODE_SINK = 1,
4245
  PHY_QUERY_INSERT_CODE_COLS,
4246
  PHY_QUERY_INSERT_CODE_TABLE_ID,
4247
  PHY_QUERY_INSERT_CODE_STABLE_ID,
4248
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
4249
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
4250
  PHY_QUERY_INSERT_CODE_VG_ID,
4251
  PHY_QUERY_INSERT_CODE_EP_SET,
4252
  PHY_QUERY_INSERT_CODE_EXPLAIN
4253
};
4254

4255
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
10✔
4256
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
10✔
4257

4258
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
10✔
4259
  if (TSDB_CODE_SUCCESS == code) {
10!
4260
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
10✔
4261
  }
4262
  if (TSDB_CODE_SUCCESS == code) {
10!
4263
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
10✔
4264
  }
4265
  if (TSDB_CODE_SUCCESS == code) {
10!
4266
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
10✔
4267
  }
4268
  if (TSDB_CODE_SUCCESS == code) {
10!
4269
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
10✔
4270
  }
4271
  if (TSDB_CODE_SUCCESS == code) {
10!
4272
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
10✔
4273
  }
4274
  if (TSDB_CODE_SUCCESS == code) {
10!
4275
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
10✔
4276
  }
4277
  if (TSDB_CODE_SUCCESS == code) {
10!
4278
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
10✔
4279
  }
4280
  if (TSDB_CODE_SUCCESS == code) {
10!
4281
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
10✔
4282
  }
4283

4284
  return code;
10✔
4285
}
4286

4287
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
188✔
4288
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
188✔
4289

4290
  int32_t code = TSDB_CODE_SUCCESS;
188✔
4291
  STlv*   pTlv = NULL;
188✔
4292
  tlvForEach(pDecoder, pTlv, code) {
1,880!
4293
    switch (pTlv->type) {
1,692!
4294
      case PHY_QUERY_INSERT_CODE_SINK:
188✔
4295
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
188✔
4296
        break;
188✔
4297
      case PHY_QUERY_INSERT_CODE_COLS:
188✔
4298
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
188✔
4299
        break;
188✔
4300
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
188✔
4301
        code = tlvDecodeU64(pTlv, &pNode->tableId);
188✔
4302
        break;
188✔
4303
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
188✔
4304
        code = tlvDecodeU64(pTlv, &pNode->stableId);
188✔
4305
        break;
188✔
4306
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
188✔
4307
        code = tlvDecodeI8(pTlv, &pNode->tableType);
188✔
4308
        break;
188✔
4309
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
188✔
4310
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
188✔
4311
        break;
188✔
4312
      case PHY_QUERY_INSERT_CODE_VG_ID:
188✔
4313
        code = tlvDecodeI32(pTlv, &pNode->vgId);
188✔
4314
        break;
188✔
4315
      case PHY_QUERY_INSERT_CODE_EP_SET:
188✔
4316
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
188✔
4317
        break;
188✔
4318
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
188✔
4319
        code = tlvDecodeBool(pTlv, &pNode->explain);
188✔
4320
        break;
188✔
4321
      default:
×
4322
        break;
×
4323
    }
4324
  }
4325

4326
  return code;
188✔
4327
}
4328

4329
enum {
4330
  PHY_DELETER_CODE_SINK = 1,
4331
  PHY_DELETER_CODE_TABLE_ID,
4332
  PHY_DELETER_CODE_TABLE_TYPE,
4333
  PHY_DELETER_CODE_TABLE_FNAME,
4334
  PHY_DELETER_CODE_TS_COL_NAME,
4335
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4336
  PHY_DELETER_CODE_AFFECTED_ROWS,
4337
  PHY_DELETER_CODE_START_TS,
4338
  PHY_DELETER_CODE_END_TS
4339
};
4340

4341
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,012✔
4342
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
1,012✔
4343

4344
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,012✔
4345
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4346
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
1,012✔
4347
  }
4348
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4349
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
1,012✔
4350
  }
4351
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4352
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
1,012✔
4353
  }
4354
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4355
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
1,012✔
4356
  }
4357
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4358
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
1,012✔
4359
  }
4360
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4361
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
1,012✔
4362
  }
4363
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4364
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
1,012✔
4365
  }
4366
  if (TSDB_CODE_SUCCESS == code) {
1,012!
4367
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
1,012✔
4368
  }
4369

4370
  return code;
1,012✔
4371
}
4372

4373
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
7,014✔
4374
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
7,014✔
4375

4376
  int32_t code = TSDB_CODE_SUCCESS;
7,014✔
4377
  STlv*   pTlv = NULL;
7,014✔
4378
  tlvForEach(pDecoder, pTlv, code) {
70,134!
4379
    switch (pTlv->type) {
63,120!
4380
      case PHY_DELETER_CODE_SINK:
7,014✔
4381
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
7,014✔
4382
        break;
7,013✔
4383
      case PHY_DELETER_CODE_TABLE_ID:
7,013✔
4384
        code = tlvDecodeU64(pTlv, &pNode->tableId);
7,013✔
4385
        break;
7,013✔
4386
      case PHY_DELETER_CODE_TABLE_TYPE:
7,013✔
4387
        code = tlvDecodeI8(pTlv, &pNode->tableType);
7,013✔
4388
        break;
7,013✔
4389
      case PHY_DELETER_CODE_TABLE_FNAME:
7,013✔
4390
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
7,013✔
4391
        break;
7,013✔
4392
      case PHY_DELETER_CODE_TS_COL_NAME:
7,013✔
4393
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
7,013✔
4394
        break;
7,013✔
4395
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
7,013✔
4396
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
7,013✔
4397
        break;
7,013✔
4398
      case PHY_DELETER_CODE_AFFECTED_ROWS:
7,013✔
4399
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
7,013✔
4400
        break;
7,014✔
4401
      case PHY_DELETER_CODE_START_TS:
7,014✔
4402
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
7,014✔
4403
        break;
7,014✔
4404
      case PHY_DELETER_CODE_END_TS:
7,014✔
4405
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
7,014✔
4406
        break;
7,014✔
4407
      default:
×
4408
        break;
×
4409
    }
4410
  }
4411

4412
  return code;
7,014✔
4413
}
4414

4415
enum {
4416
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4417
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4418
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4419
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4420
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4421
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4422
};
4423

4424
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4425
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
×
4426

4427
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
4428
  if (TSDB_CODE_SUCCESS == code) {
×
4429
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
×
4430
  }
4431
  if (TSDB_CODE_SUCCESS == code) {
×
4432
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
×
4433
  }
4434
  if (TSDB_CODE_SUCCESS == code) {
×
4435
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
×
4436
  }
4437
  if (TSDB_CODE_SUCCESS == code) {
×
4438
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
×
4439
  }
4440
  if (TSDB_CODE_SUCCESS == code) {
×
4441
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
×
4442
  }
4443

4444
  return code;
×
4445
}
4446

4447
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
6,279✔
4448
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
6,279✔
4449

4450
  int32_t code = TSDB_CODE_SUCCESS;
6,279✔
4451
  STlv*   pTlv = NULL;
6,279✔
4452
  tlvForEach(pDecoder, pTlv, code) {
37,674!
4453
    switch (pTlv->type) {
31,395!
4454
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
6,279✔
4455
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,279✔
4456
        break;
6,279✔
4457
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4458
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4459
        break;
×
4460
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
6,279✔
4461
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
6,279✔
4462
        break;    
6,279✔
4463
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
6,279✔
4464
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
6,279✔
4465
        break;    
6,279✔
4466
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
6,279✔
4467
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
6,279✔
4468
        break;    
6,279✔
4469
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
6,279✔
4470
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
6,279✔
4471
        break;    
6,279✔
4472
      default:
×
4473
        break;
×
4474
    }
4475
  }
4476

4477
  return code;
6,279✔
4478
}
4479

4480

4481
enum {
4482
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4483
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4484
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4485
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4486
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4487
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4488
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4489
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4490
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4491
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS,
4492
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID,
4493
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME,
4494
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME,
4495
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID,
4496
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET,
4497
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS,
4498
  PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME,
4499
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID,
4500
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE,
4501
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION,
4502
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS,
4503
};
4504

4505
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,114✔
4506
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
1,114✔
4507

4508
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,114✔
4509
  if (TSDB_CODE_SUCCESS == code) {
1,114!
4510
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
1,114✔
4511
  }
4512
  if (TSDB_CODE_SUCCESS == code) {
1,114!
4513
    switch (pNode->qType) {
1,114!
4514
      case DYN_QTYPE_STB_HASH: {
×
4515
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
×
4516
        if (TSDB_CODE_SUCCESS == code) {
×
4517
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
×
4518
        }
4519
        if (TSDB_CODE_SUCCESS == code) {
×
4520
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
×
4521
        }
4522
        if (TSDB_CODE_SUCCESS == code) {
×
4523
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
×
4524
        }
4525
        if (TSDB_CODE_SUCCESS == code) {
×
4526
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
×
4527
        }
4528
        if (TSDB_CODE_SUCCESS == code) {
×
4529
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
×
4530
        }
4531
        if (TSDB_CODE_SUCCESS == code) {
×
4532
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
×
4533
        }
4534
        break;
×
4535
      }
4536
      case DYN_QTYPE_VTB_SCAN: {
1,114✔
4537
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS, pNode->vtbScan.scanAllCols);
1,114✔
4538
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4539
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID, pNode->vtbScan.suid);
1,114✔
4540
        }
4541
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4542
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME, pNode->vtbScan.dbName);
1,114✔
4543
        }
4544
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4545
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME, pNode->vtbScan.tbName);
1,114✔
4546
        }
4547
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4548
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID, pNode->vtbScan.accountId);
1,114✔
4549
        }
4550
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4551
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET, epSetToMsg, &pNode->vtbScan.mgmtEpSet);
1,114✔
4552
        }
4553
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4554
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS, nodeListToMsg, pNode->vtbScan.pScanCols);
1,114✔
4555
        }
4556
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4557
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID, pNode->vtbScan.uid);
1,114✔
4558
        }
4559
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4560
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE, pNode->vtbScan.isSuperTable);
1,114✔
4561
        }
4562
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4563
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION, pNode->vtbScan.rversion);
1,114✔
4564
        }
4565
        if (TSDB_CODE_SUCCESS == code) {
1,114!
4566
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS, nodeListToMsg, pNode->vtbScan.pOrgVgIds);
1,114✔
4567
        }
4568
        break;
1,114✔
4569
      }
4570
      default:
×
4571
        return TSDB_CODE_INVALID_PARA;
×
4572
    }
4573
  }
4574
  if (TSDB_CODE_SUCCESS == code) {
1,114!
4575
    code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME, pNode->dynTbname);
1,114✔
4576
  }
4577
  return code;
1,114✔
4578
}
4579

4580
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
7,399✔
4581
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
7,399✔
4582

4583
  int32_t code = TSDB_CODE_SUCCESS;
7,399✔
4584
  STlv*   pTlv = NULL;
7,399✔
4585
  tlvForEach(pDecoder, pTlv, code) {
85,869!
4586
    switch (pTlv->type) {
78,470!
4587
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
7,399✔
4588
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
7,399✔
4589
        break;
7,399✔
4590
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
7,399✔
4591
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
7,399✔
4592
        break;
7,399✔
4593
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
6,279✔
4594
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
6,279✔
4595
        break;
6,279✔
4596
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
6,279✔
4597
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
6,279✔
4598
        break;
6,279✔
4599
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
6,279✔
4600
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
6,279✔
4601
        break;
6,279✔
4602
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
6,279✔
4603
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
6,279✔
4604
        break;
6,279✔
4605
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
6,279✔
4606
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
6,279✔
4607
        break;      
6,279✔
4608
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
6,279✔
4609
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
6,279✔
4610
        break;
6,279✔
4611
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
6,279✔
4612
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
6,279✔
4613
        break;
6,279✔
4614
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS:
1,120✔
4615
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.scanAllCols);
1,120✔
4616
        break;
1,120✔
4617
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID:
1,120✔
4618
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.suid);
1,120✔
4619
        break;
1,120✔
4620
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME:
1,120✔
4621
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.dbName, sizeof(pNode->vtbScan.dbName));
1,120✔
4622
        break;
1,120✔
4623
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME:
1,120✔
4624
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.tbName, sizeof(pNode->vtbScan.tbName));
1,120✔
4625
        break;
1,120✔
4626
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID:
1,120✔
4627
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.accountId);
1,120✔
4628
        break;
1,120✔
4629
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET:
1,120✔
4630
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->vtbScan.mgmtEpSet);
1,120✔
4631
        break;
1,120✔
4632
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS:
1,120✔
4633
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pScanCols);
1,120✔
4634
        break;
1,120✔
4635
      case PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME:
7,399✔
4636
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
7,399✔
4637
        break;
7,399✔
4638
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID:
1,120✔
4639
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.uid);
1,120✔
4640
        break;
1,120✔
4641
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE:
1,120✔
4642
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.isSuperTable);
1,120✔
4643
        break;
1,120✔
4644
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION:
1,120✔
4645
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.rversion);
1,120✔
4646
        break;
1,120✔
4647
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS:
1,120✔
4648
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pOrgVgIds);
1,120✔
4649
        break;
1,120✔
4650
      default:
×
4651
        break;
×
4652
    }
4653
  }
4654

4655
  return code;
7,399✔
4656
}
4657

4658

4659

4660
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4661

4662
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
56,750✔
4663
  const SSubplanId* pNode = (const SSubplanId*)pObj;
56,750✔
4664

4665
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
56,750✔
4666
  if (TSDB_CODE_SUCCESS == code) {
56,748!
4667
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
56,753✔
4668
  }
4669
  if (TSDB_CODE_SUCCESS == code) {
56,739✔
4670
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
56,728✔
4671
  }
4672

4673
  return code;
56,739✔
4674
}
4675

4676
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4677
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4678

4679
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4680
  if (TSDB_CODE_SUCCESS == code) {
×
4681
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4682
  }
4683
  if (TSDB_CODE_SUCCESS == code) {
×
4684
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4685
  }
4686

4687
  return code;
×
4688
}
4689

4690
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
1,620,164✔
4691
  SSubplanId* pNode = (SSubplanId*)pObj;
1,620,164✔
4692

4693
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
1,620,164✔
4694
  if (TSDB_CODE_SUCCESS == code) {
1,620,178!
4695
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
1,620,198✔
4696
  }
4697
  if (TSDB_CODE_SUCCESS == code) {
1,620,222✔
4698
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
1,620,097✔
4699
  }
4700

4701
  return code;
1,620,164✔
4702
}
4703

4704
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4705
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4706

4707
  int32_t code = TSDB_CODE_SUCCESS;
×
4708
  STlv*   pTlv = NULL;
×
4709
  tlvForEach(pDecoder, pTlv, code) {
×
4710
    switch (pTlv->type) {
×
4711
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4712
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4713
        break;
×
4714
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4715
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4716
        break;
×
4717
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4718
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4719
        break;
×
4720
      default:
×
4721
        break;
×
4722
    }
4723
  }
4724

4725
  return code;
×
4726
}
4727

4728
enum {
4729
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4730
  SUBPLAN_CODE_ROOT_NODE,
4731
  SUBPLAN_CODE_DATA_SINK,
4732
  SUBPLAN_CODE_TAG_COND,
4733
  SUBPLAN_CODE_TAG_INDEX_COND
4734
};
4735

4736
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
56,743✔
4737
  const SSubplan* pNode = (const SSubplan*)pObj;
56,743✔
4738

4739
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
56,743✔
4740
  if (TSDB_CODE_SUCCESS == code) {
56,738!
4741
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
56,739✔
4742
  }
4743
  if (TSDB_CODE_SUCCESS == code) {
56,727✔
4744
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
56,717✔
4745
  }
4746
  if (TSDB_CODE_SUCCESS == code) {
56,739✔
4747
    code = tlvEncodeValueI32(pEncoder, pNode->level);
56,733✔
4748
  }
4749
  if (TSDB_CODE_SUCCESS == code) {
56,735✔
4750
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
56,729✔
4751
  }
4752
  if (TSDB_CODE_SUCCESS == code) {
56,758✔
4753
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
56,754✔
4754
  }
4755
  if (TSDB_CODE_SUCCESS == code) {
56,754✔
4756
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
56,736✔
4757
  }
4758
  if (TSDB_CODE_SUCCESS == code) {
56,758✔
4759
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
56,741✔
4760
  }
4761
  if (TSDB_CODE_SUCCESS == code) {
56,739✔
4762
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
56,723✔
4763
  }
4764
  if (TSDB_CODE_SUCCESS == code) {
56,744✔
4765
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
56,727✔
4766
  }
4767
  if (TSDB_CODE_SUCCESS == code) {
56,744✔
4768
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
56,716✔
4769
  }
4770
  if (TSDB_CODE_SUCCESS == code) {
56,737✔
4771
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
56,709✔
4772
  }
4773
  if (TSDB_CODE_SUCCESS == code) {
56,737✔
4774
    code = tlvEncodeValueBool(pEncoder, pNode->processOneBlock);
56,712✔
4775
  }
4776
  if (TSDB_CODE_SUCCESS == code) {
56,736✔
4777
    code = tlvEncodeValueBool(pEncoder, pNode->dynTbname);
56,712✔
4778
  }
4779
  return code;
56,705✔
4780
}
4781

4782
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
56,766✔
4783
  const SSubplan* pNode = (const SSubplan*)pObj;
56,766✔
4784

4785
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
56,766✔
4786
  if (TSDB_CODE_SUCCESS == code) {
56,704!
4787
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
56,707✔
4788
  }
4789
  if (TSDB_CODE_SUCCESS == code) {
56,724!
4790
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
56,731✔
4791
  }
4792
  if (TSDB_CODE_SUCCESS == code) {
56,660!
4793
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
56,672✔
4794
  }
4795
  if (TSDB_CODE_SUCCESS == code) {
56,676!
4796
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
56,686✔
4797
  }
4798

4799
  return code;
56,697✔
4800
}
4801

4802
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
1,620,263✔
4803
  SSubplan* pNode = (SSubplan*)pObj;
1,620,263✔
4804

4805
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
1,620,263✔
4806
  if (TSDB_CODE_SUCCESS == code) {
1,620,156!
4807
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
1,620,178✔
4808
  }
4809
  if (TSDB_CODE_SUCCESS == code) {
1,620,065✔
4810
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
1,620,014✔
4811
  }
4812
  if (TSDB_CODE_SUCCESS == code) {
1,620,139✔
4813
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
1,620,091✔
4814
  }
4815
  if (TSDB_CODE_SUCCESS == code) {
1,620,104✔
4816
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
1,620,066✔
4817
  }
4818
  if (TSDB_CODE_SUCCESS == code) {
1,620,310✔
4819
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
1,620,288✔
4820
  }
4821
  if (TSDB_CODE_SUCCESS == code) {
1,620,379✔
4822
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
1,620,235✔
4823
  }
4824
  if (TSDB_CODE_SUCCESS == code) {
1,620,595✔
4825
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
1,620,456✔
4826
  }
4827
  if (TSDB_CODE_SUCCESS == code) {
1,620,479✔
4828
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
1,620,359✔
4829
  }
4830
  if (TSDB_CODE_SUCCESS == code) {
1,620,367✔
4831
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
1,620,258✔
4832
  }
4833
  if (TSDB_CODE_SUCCESS == code) {
1,620,307✔
4834
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
1,620,062✔
4835
  }
4836
  if (TSDB_CODE_SUCCESS == code) {
1,620,341✔
4837
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
1,620,102✔
4838
  }
4839
  if (TSDB_CODE_SUCCESS == code) {
1,620,307✔
4840
    code = tlvDecodeValueBool(pDecoder, &pNode->processOneBlock);
1,620,073✔
4841
  }
4842
  if (TSDB_CODE_SUCCESS == code) {
1,620,278✔
4843
    code = tlvDecodeValueBool(pDecoder, &pNode->dynTbname);
1,620,067✔
4844
  }
4845
  return code;
1,620,079✔
4846
}
4847

4848
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
1,620,235✔
4849
  SSubplan* pNode = (SSubplan*)pObj;
1,620,235✔
4850

4851
  int32_t code = TSDB_CODE_SUCCESS;
1,620,235✔
4852
  STlv*   pTlv = NULL;
1,620,235✔
4853
  tlvForEach(pDecoder, pTlv, code) {
6,550,097!
4854
    switch (pTlv->type) {
4,931,625!
4855
      case SUBPLAN_CODE_INLINE_ATTRS:
1,620,266✔
4856
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
1,620,266✔
4857
        break;
1,619,955✔
4858
      case SUBPLAN_CODE_ROOT_NODE:
1,620,087✔
4859
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
1,620,087✔
4860
        break;
1,618,335✔
4861
      case SUBPLAN_CODE_DATA_SINK:
1,618,333✔
4862
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
1,618,333✔
4863
        break;
1,618,625✔
4864
      case SUBPLAN_CODE_TAG_COND:
60,712✔
4865
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
60,712✔
4866
        break;
60,740✔
4867
      case SUBPLAN_CODE_TAG_INDEX_COND:
12,227✔
4868
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
12,227✔
4869
        break;
12,207✔
4870
      default:
×
4871
        break;
×
4872
    }
4873
  }
4874

4875
  return code;
1,618,515✔
4876
}
4877

4878
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4879

4880
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
36✔
4881
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
36✔
4882

4883
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
36✔
4884
  if (TSDB_CODE_SUCCESS == code) {
36!
4885
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
36✔
4886
  }
4887

4888
  return code;
36✔
4889
}
4890

4891
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
36✔
4892
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
36✔
4893

4894
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
36✔
4895
  if (TSDB_CODE_SUCCESS == code) {
36!
4896
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
36✔
4897
  }
4898

4899
  return code;
36✔
4900
}
4901

4902
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
18✔
4903
  SQueryPlan* pNode = (SQueryPlan*)pObj;
18✔
4904

4905
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
18✔
4906
  if (TSDB_CODE_SUCCESS == code) {
18!
4907
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
18✔
4908
  }
4909

4910
  return code;
18✔
4911
}
4912

4913
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
18✔
4914
  SQueryPlan* pNode = (SQueryPlan*)pObj;
18✔
4915

4916
  int32_t code = TSDB_CODE_SUCCESS;
18✔
4917
  STlv*   pTlv = NULL;
18✔
4918
  tlvForEach(pDecoder, pTlv, code) {
54!
4919
    switch (pTlv->type) {
36!
4920
      case QUERY_PLAN_CODE_INLINE_ATTRS:
18✔
4921
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
18✔
4922
        break;
18✔
4923
      case QUERY_PLAN_CODE_SUBPLANS:
18✔
4924
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
18✔
4925
        break;
18✔
4926
      default:
×
4927
        break;
×
4928
    }
4929
  }
4930

4931
  return code;
18✔
4932
}
4933

4934
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,667,131✔
4935
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4936
  int32_t code = TSDB_CODE_SUCCESS;
2,667,131✔
4937
  switch (nodeType(pObj)) {
2,667,131!
4938
    case QUERY_NODE_COLUMN:
439,577✔
4939
      code = columnNodeToMsg(pObj, pEncoder);
439,577✔
4940
      break;
435,594✔
4941
    case QUERY_NODE_VALUE:
656,628✔
4942
      code = valueNodeToMsg(pObj, pEncoder);
656,628✔
4943
      break;
657,536✔
4944
    case QUERY_NODE_OPERATOR:
12,007✔
4945
      code = operatorNodeToMsg(pObj, pEncoder);
12,007✔
4946
      break;
12,009✔
4947
    case QUERY_NODE_LOGIC_CONDITION:
2,491✔
4948
      code = logicConditionNodeToMsg(pObj, pEncoder);
2,491✔
4949
      break;
2,491✔
4950
    case QUERY_NODE_FUNCTION:
59,931✔
4951
      code = functionNodeToMsg(pObj, pEncoder);
59,931✔
4952
      break;
59,951✔
4953
    case QUERY_NODE_ORDER_BY_EXPR:
6,932✔
4954
      code = orderByExprNodeToMsg(pObj, pEncoder);
6,932✔
4955
      break;
6,932✔
4956
    case QUERY_NODE_LIMIT:
15,588✔
4957
      code = limitNodeToMsg(pObj, pEncoder);
15,588✔
4958
      break;
15,586✔
4959
    case QUERY_NODE_NODE_LIST:
891✔
4960
      code = nodeListNodeToMsg(pObj, pEncoder);
891✔
4961
      break;
893✔
4962
    case QUERY_NODE_TARGET:
364,178✔
4963
      code = targetNodeToMsg(pObj, pEncoder);
364,178✔
4964
      break;
362,592✔
4965
    case QUERY_NODE_TIME_RANGE:
×
4966
      code = timeRangeNodeToMsg(pObj, pEncoder);
×
4967
      break;
×
4968
    case QUERY_NODE_DATABLOCK_DESC:
170,895✔
4969
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
170,895✔
4970
      break;
170,843✔
4971
    case QUERY_NODE_SLOT_DESC:
700,605✔
4972
      code = slotDescNodeToMsg(pObj, pEncoder);
700,605✔
4973
      break;
696,262✔
4974
    case QUERY_NODE_DOWNSTREAM_SOURCE:
36,038✔
4975
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
36,038✔
4976
      break;
36,038✔
4977
    case QUERY_NODE_LEFT_VALUE:
451✔
4978
      break;
451✔
4979
    case QUERY_NODE_WHEN_THEN:
4✔
4980
      code = whenThenNodeToMsg(pObj, pEncoder);
4✔
4981
      break;
4✔
4982
    case QUERY_NODE_CASE_WHEN:
4✔
4983
      code = caseWhenNodeToMsg(pObj, pEncoder);
4✔
4984
      break;
4✔
UNCOV
4985
    case QUERY_NODE_WINDOW_OFFSET:
×
UNCOV
4986
      code = windowOffsetNodeToMsg(pObj, pEncoder);
×
UNCOV
4987
      break;
×
4988
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
2,213✔
4989
      code = physiTagScanNodeToMsg(pObj, pEncoder);
2,213✔
4990
      break;
2,213✔
4991
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
×
4992
      code = physiScanNodeToMsg(pObj, pEncoder);
×
4993
      break;
×
4994
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
14✔
4995
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4996
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
14✔
4997
      break;
14✔
4998
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
39,033✔
4999
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5000
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5001
      code = physiTableScanNodeToMsg(pObj, pEncoder);
39,033✔
5002
      break;
39,024✔
5003
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
7,711✔
5004
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
7,711✔
5005
      break;
7,705✔
5006
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
11,798✔
5007
      code = physiProjectNodeToMsg(pObj, pEncoder);
11,798✔
5008
      break;
11,805✔
5009
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
2,582✔
5010
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
2,582✔
5011
      break;
2,582✔
5012
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
×
5013
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
×
5014
      break;
×
5015
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
13,785✔
5016
      code = physiAggNodeToMsg(pObj, pEncoder);
13,785✔
5017
      break;
13,802✔
5018
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
23,375✔
5019
      code = physiExchangeNodeToMsg(pObj, pEncoder);
23,375✔
5020
      break;
23,375✔
5021
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
1,977✔
5022
      code = physiMergeNodeToMsg(pObj, pEncoder);
1,977✔
5023
      break;
1,977✔
5024
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
2,954✔
5025
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5026
      code = physiSortNodeToMsg(pObj, pEncoder);
2,954✔
5027
      break;
2,955✔
5028
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
3,750✔
5029
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5030
      code = physiIntervalNodeToMsg(pObj, pEncoder);
3,750✔
5031
      break;
3,746✔
5032
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
4✔
5033
      code = physiFillNodeToMsg(pObj, pEncoder);
4✔
5034
      break;
4✔
5035
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
124✔
5036
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
124✔
5037
      break;
124✔
5038
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
5039
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5040
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5041
      code = physiExternalWindowNodeToMsg(pObj, pEncoder);
×
5042
      break;
×
5043
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
75✔
5044
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
75✔
5045
      break;
75✔
5046
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
197✔
5047
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
197✔
5048
      break;
197✔
5049
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
186✔
5050
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
186✔
5051
      break;
186✔
5052
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
5053
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
5054
      break;
×
5055
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
356✔
5056
      code = physiPartitionNodeToMsg(pObj, pEncoder);
356✔
5057
      break;
356✔
5058
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
36✔
5059
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
36✔
5060
      break;
36✔
5061
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
322✔
5062
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
322✔
5063
      break;
322✔
5064
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
×
5065
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
5066
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
5067
      break;
×
5068
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
55,677✔
5069
      code = physiDispatchNodeToMsg(pObj, pEncoder);
55,677✔
5070
      break;
55,647✔
5071
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
10✔
5072
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
10✔
5073
      break;
10✔
5074
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,012✔
5075
      code = physiDeleteNodeToMsg(pObj, pEncoder);
1,012✔
5076
      break;
1,012✔
5077
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
×
5078
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
×
5079
      break;
×
5080
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
1,114✔
5081
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
1,114✔
5082
      break;
1,114✔
5083
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
4,454✔
5084
      code = physiVirtualTableScanNodeToMsg(pObj, pEncoder);
4,454✔
5085
      break;
4,454✔
5086
    case QUERY_NODE_PHYSICAL_SUBPLAN:
56,768✔
5087
      code = subplanToMsg(pObj, pEncoder);
56,768✔
5088
      break;
56,693✔
5089
    case QUERY_NODE_PHYSICAL_PLAN:
36✔
5090
      code = queryPlanToMsg(pObj, pEncoder);
36✔
5091
      break;
36✔
5092
    default:
×
5093
      break;
×
5094
  }
5095
  if (TSDB_CODE_SUCCESS != code) {
2,657,998!
5096
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
5097
  }
5098
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
5099
  return code;
2,652,606✔
5100
}
5101

5102
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
62,808,926✔
5103
  int32_t code = TSDB_CODE_SUCCESS;
62,808,926✔
5104
  switch (nodeType(pObj)) {
62,808,926!
5105
    case QUERY_NODE_COLUMN:
12,611,856✔
5106
      code = msgToColumnNode(pDecoder, pObj);
12,611,856✔
5107
      break;
12,633,554✔
5108
    case QUERY_NODE_VALUE:
2,912,350✔
5109
      code = msgToValueNode(pDecoder, pObj);
2,912,350✔
5110
      break;
2,890,290✔
5111
    case QUERY_NODE_OPERATOR:
1,400,845✔
5112
      code = msgToOperatorNode(pDecoder, pObj);
1,400,845✔
5113
      break;
1,400,248✔
5114
    case QUERY_NODE_LOGIC_CONDITION:
264,649✔
5115
      code = msgToLogicConditionNode(pDecoder, pObj);
264,649✔
5116
      break;
264,652✔
5117
    case QUERY_NODE_FUNCTION:
2,795,480✔
5118
      code = msgToFunctionNode(pDecoder, pObj);
2,795,480✔
5119
      break;
2,791,707✔
5120
    case QUERY_NODE_ORDER_BY_EXPR:
247,592✔
5121
      code = msgToOrderByExprNode(pDecoder, pObj);
247,592✔
5122
      break;
247,550✔
5123
    case QUERY_NODE_LIMIT:
167,521✔
5124
      code = msgToLimitNode(pDecoder, pObj);
167,521✔
5125
      break;
167,354✔
5126
    case QUERY_NODE_NODE_LIST:
42,161✔
5127
      code = msgToNodeListNode(pDecoder, pObj);
42,161✔
5128
      break;
42,169✔
5129
    case QUERY_NODE_TARGET:
10,736,725✔
5130
      code = msgToTargetNode(pDecoder, pObj);
10,736,725✔
5131
      break;
10,702,816✔
5132
    case QUERY_NODE_TIME_RANGE:
×
5133
      code = msgToTimeRangeNode(pDecoder, pObj);
×
5134
      break;
×
5135
    case QUERY_NODE_DATABLOCK_DESC:
4,952,729✔
5136
      code = msgToDataBlockDescNode(pDecoder, pObj);
4,952,729✔
5137
      break;
4,951,554✔
5138
    case QUERY_NODE_SLOT_DESC:
19,539,801✔
5139
      code = msgToSlotDescNode(pDecoder, pObj);
19,539,801✔
5140
      break;
19,054,863✔
5141
    case QUERY_NODE_DOWNSTREAM_SOURCE:
869,183✔
5142
      code = msgToDownstreamSourceNode(pDecoder, pObj);
869,183✔
5143
    case QUERY_NODE_LEFT_VALUE:
930,081✔
5144
      break;
930,081✔
5145
    case QUERY_NODE_WHEN_THEN:
5,928✔
5146
      code = msgToWhenThenNode(pDecoder, pObj);
5,928✔
5147
      break;
5,926✔
5148
    case QUERY_NODE_CASE_WHEN:
4,583✔
5149
      code = msgToCaseWhenNode(pDecoder, pObj);
4,583✔
5150
      break;
4,583✔
5151
    case QUERY_NODE_WINDOW_OFFSET:
829✔
5152
      code = msgToWindowOffsetNode(pDecoder, pObj);
829✔
5153
      break;
829✔
5154
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
35,367✔
5155
      code = msgToPhysiTagScanNode(pDecoder, pObj);
35,367✔
5156
      break;
35,343✔
5157
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
20✔
5158
      code = msgToPhysiScanNode(pDecoder, pObj);
20✔
5159
      break;
20✔
5160
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
4,377✔
5161
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5162
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
4,377✔
5163
      break;
4,379✔
5164
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,133,667✔
5165
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5166
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5167
      code = msgToPhysiTableScanNode(pDecoder, pObj);
1,133,667✔
5168
      break;
1,132,620✔
5169
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
45,979✔
5170
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
45,979✔
5171
      break;
45,961✔
5172
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
490,364✔
5173
      code = msgToPhysiProjectNode(pDecoder, pObj);
490,364✔
5174
      break;
490,022✔
5175
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
90,589✔
5176
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
90,589✔
5177
      break;
90,568✔
5178
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
6,279✔
5179
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
6,279✔
5180
      break;
6,279✔
5181
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
650,976✔
5182
      code = msgToPhysiAggNode(pDecoder, pObj);
650,976✔
5183
      break;
650,099✔
5184
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
586,539✔
5185
      code = msgToPhysiExchangeNode(pDecoder, pObj);
586,539✔
5186
      break;
586,492✔
5187
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
54,021✔
5188
      code = msgToPhysiMergeNode(pDecoder, pObj);
54,021✔
5189
      break;
54,018✔
5190
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
148,102✔
5191
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5192
      code = msgToPhysiSortNode(pDecoder, pObj);
148,102✔
5193
      break;
148,060✔
5194
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
19,172✔
5195
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5196
      code = msgToPhysiIntervalNode(pDecoder, pObj);
19,172✔
5197
      break;
19,136✔
5198
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
3,187✔
5199
      code = msgToPhysiFillNode(pDecoder, pObj);
3,187✔
5200
      break;
3,185✔
5201
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,386✔
5202
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
1,386✔
5203
      break;
1,386✔
5204
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
5205
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5206
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5207
      code = msgToPhysiExternalWindowNode(pDecoder, pObj);
×
5208
      break;
×
5209
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
3,129✔
5210
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
3,129✔
5211
      break;
3,129✔
5212
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
394✔
5213
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
394✔
5214
      break;
394✔
5215
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
313✔
5216
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
313✔
5217
      break;
312✔
5218
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
5219
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
5220
      break;
×
5221
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
9,804✔
5222
      code = msgToPhysiPartitionNode(pDecoder, pObj);
9,804✔
5223
      break;
9,796✔
5224
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
18,820✔
5225
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
18,820✔
5226
      break;
18,821✔
5227
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
12,911✔
5228
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
12,911✔
5229
      break;
12,911✔
5230
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
5231
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
5232
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
5233
      break;
×
5234
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,611,925✔
5235
      code = msgToPhysiDispatchNode(pDecoder, pObj);
1,611,925✔
5236
      break;
1,611,263✔
5237
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
188✔
5238
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
188✔
5239
      break;
188✔
5240
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
7,014✔
5241
      code = msgToPhysiDeleteNode(pDecoder, pObj);
7,014✔
5242
      break;
7,014✔
5243
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
6,279✔
5244
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
6,279✔
5245
      break;
6,279✔
5246
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
7,399✔
5247
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
7,399✔
5248
      break;
7,399✔
5249
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
4,542✔
5250
      code = msgToPhysiVirtualTableScanNode(pDecoder, pObj);
4,542✔
5251
      break;
4,542✔
5252
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,620,233✔
5253
      code = msgToSubplan(pDecoder, pObj);
1,620,233✔
5254
      break;
1,618,484✔
5255
    case QUERY_NODE_PHYSICAL_PLAN:
18✔
5256
      code = msgToQueryPlan(pDecoder, pObj);
18✔
5257
      break;
18✔
5258
    default:
×
5259
      break;
×
5260
  }
5261
  if (TSDB_CODE_SUCCESS != code) {
62,656,294!
5262
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
5263
  }
5264
  return code;
62,273,037✔
5265
}
5266

5267
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,663,450✔
5268
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
2,663,450✔
5269
}
5270

5271
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
63,072,893✔
5272
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
63,072,893✔
5273
}
5274

5275
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
22,753,450✔
5276
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
22,753,450✔
5277
  return msgToNode(&decoder, pObj);
22,753,450✔
5278
}
5279

5280
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
403,508✔
5281
  const SNodeList* pList = (const SNodeList*)pObj;
403,508✔
5282

5283
  SNode* pNode = NULL;
403,508✔
5284
  FOREACH(pNode, pList) {
2,296,776!
5285
    int32_t code = nodeToMsg(pNode, pEncoder);
1,900,954✔
5286
    if (TSDB_CODE_SUCCESS != code) {
1,893,268!
5287
      return code;
×
5288
    }
5289
  }
5290

5291
  return TSDB_CODE_SUCCESS;
395,822✔
5292
}
5293
enum {
5294
  SARRAY_CODE_CAPACITY = 1,
5295
  SARRAY_CODE_ELEMSIZE,
5296
  SARRAY_CODE_SIZE,
5297
  SARRAY_CODE_PDATA
5298
};
5299

5300
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
5301
  const SArray* pArray = (const SArray*)pObj;
×
5302
  int32_t code = TSDB_CODE_SUCCESS;
×
5303
  if (TSDB_CODE_SUCCESS == code) {
×
5304
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
×
5305
  }
5306
  if (TSDB_CODE_SUCCESS == code) {
×
5307
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
×
5308
  }
5309
  if (TSDB_CODE_SUCCESS == code) {
×
5310
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
×
5311
  }
5312
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
×
5313
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
×
5314
  }
5315
  return code;
×
5316
}
5317

5318

5319
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
13,465,840✔
5320
  SNodeList* pList = NULL;
13,465,840✔
5321
  int32_t code = TSDB_CODE_SUCCESS;
13,465,840✔
5322
  code = nodesMakeList(&pList);
13,465,840✔
5323

5324
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
52,360,160✔
5325
    SNode* pNode = NULL;
38,832,617✔
5326
    code = msgToNode(pDecoder, (void**)&pNode);
38,832,617✔
5327
    if (TSDB_CODE_SUCCESS == code) {
38,155,245!
5328
      code = nodesListAppend(pList, pNode);
38,156,942✔
5329
    }
5330
  }
5331
  if (TSDB_CODE_SUCCESS == code) {
13,483,589!
5332
    *pObj = pList;
13,483,589✔
5333
  } else {
5334
    nodesDestroyList(pList);
×
5335
  }
5336
  return code;
13,483,233✔
5337
}
5338

5339
static int32_t msgToSArray(STlv* pTlv, void** pObj){
×
5340
  SArray* pArray = NULL;
×
5341
  uint32_t capacity = 0;
×
5342
  uint32_t elemSize = 0;
×
5343
  uint32_t actualSize;
5344
  int32_t decodeFieldNum = 0;;
×
5345
  int32_t code = TSDB_CODE_SUCCESS;
×
5346
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
×
5347
  STlv*   pTlvTemp = NULL;
×
5348
  STlv*   pDataTlv = NULL;
×
5349

5350
  tlvForEach(&decoder, pTlvTemp, code) {
×
5351
    switch (pTlvTemp->type) {
×
5352
      case SARRAY_CODE_CAPACITY:
×
5353
        code = tlvDecodeI32(pTlvTemp, &capacity);
×
5354
        break;
×
5355
      case SARRAY_CODE_ELEMSIZE:
×
5356
        code = tlvDecodeI32(pTlvTemp, &elemSize);
×
5357
        break;
×
5358
      case SARRAY_CODE_SIZE:
×
5359
        code = tlvDecodeI32(pTlvTemp, &actualSize);
×
5360
        break;
×
5361
      case SARRAY_CODE_PDATA:
×
5362
        if (decodeFieldNum < 3) {
×
5363
          pDataTlv = pTlvTemp;
×
5364
          break;
×
5365
        }
5366
        pArray = taosArrayInit(capacity, elemSize);
×
5367
        if (NULL == pArray) {
×
5368
          return terrno;
×
5369
        }
5370
        pArray->size = actualSize;
×
5371
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5372
          taosArrayDestroy(pArray);
×
5373
          return TSDB_CODE_OUT_OF_MEMORY;
×
5374
        }
5375
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
×
5376
        break;
×
5377
      default:
×
5378
        break;
×
5379
    }
5380
    decodeFieldNum++;
×
5381
  }
5382

5383
  if (pDataTlv != NULL) {
×
5384
    pArray = taosArrayInit(capacity, elemSize);
×
5385
    if (NULL == pArray) {
×
5386
      return terrno;
×
5387
    }
5388
    pArray->size = actualSize;
×
5389
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5390
      taosArrayDestroy(pArray);
×
5391
      return TSDB_CODE_OUT_OF_MEMORY;
×
5392
    }
5393
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
5394
  }
5395
  *pObj = pArray;
×
5396
  return code;
×
5397
}
5398

5399

5400
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
13,464,821✔
5401
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
13,464,821✔
5402
  return msgToNodeList(&decoder, pObj);
13,464,821✔
5403
}
5404

5405
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
56,667✔
5406
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
56,667!
5407
    terrno = TSDB_CODE_FAILED;
×
5408
    return TSDB_CODE_FAILED;
×
5409
  }
5410

5411
  STlvEncoder encoder;
5412
  int32_t     code = initTlvEncoder(&encoder);
56,783✔
5413
  if (TSDB_CODE_SUCCESS == code) {
56,749!
5414
    code = nodeToMsg(pNode, &encoder);
56,752✔
5415
  }
5416
  if (TSDB_CODE_SUCCESS == code) {
56,691!
5417
    endTlvEncode(&encoder, pMsg, pLen);
56,697✔
5418
  }
5419
  clearTlvEncoder(&encoder);
56,688✔
5420

5421
  terrno = code;
56,755✔
5422
  return code;
56,751✔
5423
}
5424

5425
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
1,620,297✔
5426
  if (NULL == pMsg || NULL == pNode) {
1,620,297!
5427
    return TSDB_CODE_SUCCESS;
×
5428
  }
5429

5430
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
1,620,454✔
5431
  int32_t     code = msgToNode(&decoder, (void**)pNode);
1,620,454✔
5432
  if (TSDB_CODE_SUCCESS != code) {
1,618,397!
5433
    nodesDestroyNode(*pNode);
×
5434
    *pNode = NULL;
×
5435
  }
5436

5437
  terrno = code;
1,618,397✔
5438
  return code;
1,618,204✔
5439
}
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