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

taosdata / TDengine / #3531

19 Nov 2024 10:42AM UTC coverage: 60.213% (-0.006%) from 60.219%
#3531

push

travis-ci

web-flow
Merge pull request #28777 from taosdata/fix/3.0/TD-32366

fix:TD-32366/stmt add geometry datatype check

118529 of 252344 branches covered (46.97%)

Branch coverage included in aggregate %.

7 of 48 new or added lines in 3 files covered. (14.58%)

2282 existing lines in 115 files now uncovered.

199096 of 275161 relevant lines covered (72.36%)

6067577.83 hits per line

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

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

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

20
#ifndef htonll
21

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

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

30
#endif
31

32
#define NODES_MSG_DEFAULT_LEN 1024
33
#define TLV_TYPE_ARRAY_ELEM   0
34

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

38
#pragma pack(push, 1)
39

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

46
#pragma pack(pop)
47

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

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

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

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

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

76

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

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

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

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
133,393,563✔
94
  int32_t tlvLen = sizeof(STlv) + len;
133,393,563✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
133,393,563✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
672,587✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
672,587✔
98
    if (NULL == pNewBuf) {
674,026✔
99
      return terrno;
8✔
100
    }
101
    pEncoder->pBuf = pNewBuf;
674,018✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
133,394,994✔
104
  pTlv->type = htons(type);
133,394,994✔
105
  pTlv->len = htonl(len);
133,394,994✔
106
  memcpy(pTlv->value, pValue, len);
133,394,994✔
107
  pEncoder->offset += tlvLen;
133,394,994✔
108
  ++(pEncoder->tlvCount);
133,394,994✔
109
  return TSDB_CODE_SUCCESS;
133,394,994✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
501,684,332✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
501,684,332✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
677,874✔
115
    if (NULL == pNewBuf) {
679,891✔
116
      return terrno;
23✔
117
    }
118
    pEncoder->pBuf = pNewBuf;
679,868✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
679,868✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
501,686,326✔
122
  pEncoder->offset += len;
501,686,326✔
123
  return TSDB_CODE_SUCCESS;
501,686,326✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
54,337,419✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
54,337,419✔
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) {
149,007,694✔
140
  value = htons(value);
149,007,694✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
149,007,694✔
142
}
143

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
73,116,097✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
73,116,097✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
98,114,733✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
98,114,733✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
11,095,329✔
223
  if (NULL == pValue) {
11,095,329✔
224
    return TSDB_CODE_SUCCESS;
894,246✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
10,201,083✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
56,105,256✔
230
  int16_t len = strlen(pValue);
56,105,256✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
56,105,256✔
232
  if (TSDB_CODE_SUCCESS == code) {
56,113,407!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
56,117,795✔
234
  }
235
  return code;
56,016,142✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
205,020,523✔
243
  if (NULL == pObj) {
205,020,523✔
244
    return TSDB_CODE_SUCCESS;
23,317,731✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
181,702,792✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
461,790✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
461,790✔
250
    if (NULL == pNewBuf) {
462,763!
UNCOV
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
462,764✔
254
  }
255

256
  int32_t start = pEncoder->offset;
181,703,766✔
257
  pEncoder->offset += sizeof(STlv);
181,703,766✔
258
  int32_t code = func(pObj, pEncoder);
181,703,766✔
259
  if (TSDB_CODE_SUCCESS == code) {
182,214,599!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
182,616,329✔
261
    pTlv->type = htons(type);
182,616,329✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
182,616,329✔
263
  }
264
  ++(pEncoder->tlvCount);
182,214,599✔
265
  return code;
182,214,599✔
266
}
267

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

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
2,646,760✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
2,646,760✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
4,865,470✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
2,219,047✔
291
  }
292
  return code;
2,646,423✔
293
}
294

295
static int32_t tlvGetNextTlv(STlvDecoder* pDecoder, STlv** pTlv) {
452,199,273✔
296
  if (pDecoder->offset == pDecoder->bufSize) {
452,199,273✔
297
    *pTlv = NULL;
107,030,402✔
298
    return TSDB_CODE_SUCCESS;
107,030,402✔
299
  }
300

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

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
66,355,501✔
312

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

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

335
static int32_t tlvDecodeI8(STlv* pTlv, int8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
51,483,053✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
176,373,383✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
176,373,383✔
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) {
179,349,928✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
179,349,928✔
351
  if (TSDB_CODE_SUCCESS == code) {
178,904,858!
352
    *pValue = ntohs(*pValue);
183,730,154✔
353
  }
354
  return code;
178,904,858✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
51,456,158✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
51,456,158✔
359
  if (TSDB_CODE_SUCCESS == code) {
51,422,231!
360
    *pValue = ntohl(*pValue);
51,430,824✔
361
  }
362
  return code;
51,422,231✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
84,630,859✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
84,630,859✔
367
  if (TSDB_CODE_SUCCESS == code) {
84,453,623!
368
    *pValue = ntohl(*pValue);
84,525,392✔
369
  }
370
  return code;
84,453,623✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
5,943,266✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
5,943,266✔
375
  if (TSDB_CODE_SUCCESS == code) {
5,942,695!
376
    *pValue = ntohll(*pValue);
5,943,225✔
377
  }
378
  return code;
5,942,695✔
379
}
380

381
static int32_t tlvDecodeValueI64(STlvDecoder* pDecoder, int64_t* pValue) {
9,150,000✔
382
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
9,150,000✔
383
  if (TSDB_CODE_SUCCESS == code) {
9,149,007!
384
    *pValue = ntohll(*pValue);
9,150,053✔
385
  }
386
  return code;
9,149,007✔
387
}
388

389
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
23,230,070✔
390

391
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
85,386,473✔
392
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
85,386,473✔
393
}
394

395
static int32_t tlvDecodeU16(STlv* pTlv, uint16_t* pValue) {
36,691✔
396
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
36,691✔
397
  if (TSDB_CODE_SUCCESS == code) {
36,690!
398
    *pValue = ntohs(*pValue);
36,703✔
399
  }
400
  return code;
36,690✔
401
}
402

403
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
2,385,378✔
404
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,385,378✔
405
  if (TSDB_CODE_SUCCESS == code) {
2,385,411!
406
    *pValue = ntohs(*pValue);
2,386,756✔
407
  }
408
  return code;
2,385,411✔
409
}
410

411
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
2,731,270✔
412
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
2,731,270✔
413
  if (TSDB_CODE_SUCCESS == code) {
2,730,665!
414
    *pValue = ntohll(*pValue);
2,730,752✔
415
  }
416
  return code;
2,730,665✔
417
}
418

419
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
19,927,523✔
420
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
19,927,523✔
421
  if (TSDB_CODE_SUCCESS == code) {
19,902,296!
422
    *pValue = ntohll(*pValue);
19,910,688✔
423
  }
424
  return code;
19,902,296✔
425
}
426

427
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
213,969✔
428
  int64_t temp = 0;
213,969✔
429
  int32_t code = tlvDecodeI64(pTlv, &temp);
213,969✔
430
  if (TSDB_CODE_SUCCESS == code) {
214,067!
431
    *pValue = *(double*)&temp;
214,083✔
432
  }
433
  return code;
214,067✔
434
}
435

436
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
1,273,466✔
437
  int64_t temp = 0;
1,273,466✔
438
  int32_t code = tlvDecodeValueI64(pDecoder, &temp);
1,273,466✔
439
  if (TSDB_CODE_SUCCESS == code) {
1,273,794!
440
    *pValue = *(double*)&temp;
1,273,894✔
441
  }
442
  return code;
1,273,794✔
443
}
444

445
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
183,217,965✔
446
  switch (len) {
183,217,965!
447
    case 1:
152,993,819✔
448
      *(int8_t*)pValue = value;
152,993,819✔
449
      break;
152,993,819✔
450
    case 2:
×
451
      *(int16_t*)pValue = value;
×
452
      break;
×
453
    case 4:
31,003,463✔
454
      *(int32_t*)pValue = value;
31,003,463✔
455
      break;
31,003,463✔
456
    default:
×
457
      return TSDB_CODE_FAILED;
×
458
  }
459
  return TSDB_CODE_SUCCESS;
183,997,282✔
460
}
461

462
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
38,881,832✔
463
  int8_t  value = 0;
38,881,832✔
464
  int32_t code = tlvDecodeI8(pTlv, &value);
38,881,832✔
465
  if (TSDB_CODE_SUCCESS == code) {
38,867,318!
466
    code = convertIntegerType(value, pValue, sizeof(bool));
38,867,932✔
467
  }
468
  return code;
38,875,297✔
469
}
470

471
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
114,516,614✔
472
  int8_t  value = 0;
114,516,614✔
473
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
114,516,614✔
474
  if (TSDB_CODE_SUCCESS == code) {
114,499,208!
475
    code = convertIntegerType(value, pValue, sizeof(bool));
114,509,219✔
476
  }
477
  return code;
114,445,000✔
478
}
479

480
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
13,989,115✔
481
  int32_t value = 0;
13,989,115✔
482
  int32_t code = tlvDecodeI32(pTlv, &value);
13,989,115✔
483
  if (TSDB_CODE_SUCCESS == code) {
13,987,284!
484
    code = convertIntegerType(value, pValue, len);
13,987,503✔
485
  }
486
  return code;
13,987,707✔
487
}
488

489
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
17,098,163✔
490
  int32_t value = 0;
17,098,163✔
491
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
17,098,163✔
492
  if (TSDB_CODE_SUCCESS == code) {
17,056,810!
493
    code = convertIntegerType(value, pValue, len);
17,057,734✔
494
  }
495
  return code;
17,047,650✔
496
}
497

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

506
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
66,461,565✔
507
  int16_t len = 0;
66,461,565✔
508
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
66,461,565✔
509
  if (TSDB_CODE_SUCCESS == code) {
67,119,407!
510
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
67,130,157✔
511
  }
512
  return code;
66,671,754✔
513
}
514

515
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
4,492,836✔
516
  *pValue = taosStrndup(pTlv->value, pTlv->len);
4,492,836✔
517
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
4,508,023!
518
}
519

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

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

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

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

548
static int32_t tlvDecodeObjArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize) {
35,539✔
549
  int32_t code = TSDB_CODE_SUCCESS;
35,539✔
550
  int32_t i = 0;
35,539✔
551
  STlv*   pTlv = NULL;
35,539✔
552
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
72,229!
553
  return code;
35,560✔
554
}
555

556
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
2,832,020✔
557
                                   int32_t* pNum) {
558
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
2,832,020✔
559
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
5,218,882✔
560
    code = func(pDecoder, (char*)pArray + i * itemSize);
2,385,290✔
561
  }
562
  return code;
2,833,592✔
563
}
564

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

570
static int32_t tlvDecodeDynObjFromTlv(STlv* pTlv, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
77,523,529✔
571
  int32_t code = makeFunc(pTlv->type, (SNode**)pObj);
77,523,529✔
572
  if (NULL == *pObj) {
77,557,699!
573
    return code;
×
574
  }
575
  return tlvDecodeObjFromTlv(pTlv, toFunc, *pObj);
77,557,699✔
576
}
577

578
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
77,693,558✔
579
  STlv*   pTlv = NULL;
77,693,558✔
580
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
77,693,558✔
581
  if (TSDB_CODE_SUCCESS == code) {
77,540,605!
582
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
77,547,788✔
583
  }
584
  return code;
76,849,378✔
585
}
586

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

589
static int32_t dataTypeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
33,473,191✔
590
  const SDataType* pNode = (const SDataType*)pObj;
33,473,191✔
591

592
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
33,473,191✔
593
  if (TSDB_CODE_SUCCESS == code) {
33,530,786!
594
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
33,535,686✔
595
  }
596
  if (TSDB_CODE_SUCCESS == code) {
33,088,438!
597
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
33,132,219✔
598
  }
599
  if (TSDB_CODE_SUCCESS == code) {
32,799,626!
600
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
32,853,736✔
601
  }
602

603
  return code;
32,839,097✔
604
}
605

606
static int32_t dataTypeToMsg(const void* pObj, STlvEncoder* pEncoder) {
10,333,254✔
607
  const SDataType* pNode = (const SDataType*)pObj;
10,333,254✔
608

609
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
10,333,254✔
610
  if (TSDB_CODE_SUCCESS == code) {
10,334,790!
611
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
10,335,039✔
612
  }
613
  if (TSDB_CODE_SUCCESS == code) {
10,325,591✔
614
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
10,325,270✔
615
  }
616
  if (TSDB_CODE_SUCCESS == code) {
10,301,865!
617
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
10,301,874✔
618
  }
619

620
  return code;
10,318,187✔
621
}
622

623
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
39,118,824✔
624
  SDataType* pNode = (SDataType*)pObj;
39,118,824✔
625

626
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
39,118,824✔
627
  if (TSDB_CODE_SUCCESS == code) {
39,057,057!
628
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
39,059,945✔
629
  }
630
  if (TSDB_CODE_SUCCESS == code) {
38,663,944!
631
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
38,680,212✔
632
  }
633
  if (TSDB_CODE_SUCCESS == code) {
38,497,455!
634
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
38,517,872✔
635
  }
636

637
  return code;
38,485,269✔
638
}
639

640
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
10,975,155✔
641
  SDataType* pNode = (SDataType*)pObj;
10,975,155✔
642

643
  int32_t code = TSDB_CODE_SUCCESS;
10,975,155✔
644
  STlv*   pTlv = NULL;
10,975,155✔
645
  tlvForEach(pDecoder, pTlv, code) {
54,788,997!
646
    switch (pTlv->type) {
43,826,792!
647
      case DATA_TYPE_CODE_TYPE:
10,967,527✔
648
        code = tlvDecodeI8(pTlv, &pNode->type);
10,967,527✔
649
        break;
10,961,560✔
650
      case DATA_TYPE_CODE_PRECISION:
10,957,479✔
651
        code = tlvDecodeU8(pTlv, &pNode->precision);
10,957,479✔
652
        break;
10,953,393✔
653
      case DATA_TYPE_CODE_SCALE:
10,952,610✔
654
        code = tlvDecodeU8(pTlv, &pNode->scale);
10,952,610✔
655
        break;
10,948,625✔
656
      case DATA_TYPE_CODE_BYTES:
10,949,176✔
657
        code = tlvDecodeI32(pTlv, &pNode->bytes);
10,949,176✔
658
        break;
10,950,264✔
659
      default:
×
660
        break;
×
661
    }
662
  }
663

664
  return code;
10,949,480✔
665
}
666

667
enum { EXPR_CODE_RES_TYPE = 1 };
668

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

674
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
10,974,817✔
675
  SExprNode* pNode = (SExprNode*)pObj;
10,974,817✔
676

677
  int32_t code = TSDB_CODE_SUCCESS;
10,974,817✔
678
  STlv*   pTlv = NULL;
10,974,817✔
679
  tlvForEach(pDecoder, pTlv, code) {
21,924,241!
680
    switch (pTlv->type) {
10,976,611!
681
      case EXPR_CODE_RES_TYPE:
10,976,611✔
682
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
10,976,611✔
683
        break;
10,949,424✔
684
      default:
×
685
        break;
×
686
    }
687
  }
688

689
  return code;
10,937,639✔
690
}
691

692
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
693

694
static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
13,158,719✔
695
  const SColumnNode* pNode = (const SColumnNode*)pObj;
13,158,719✔
696

697
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
13,158,719✔
698
  if (TSDB_CODE_SUCCESS == code) {
12,941,313!
699
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
12,949,617✔
700
  }
701
  if (TSDB_CODE_SUCCESS == code) {
12,977,592!
702
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
12,986,741✔
703
  }
704
  if (TSDB_CODE_SUCCESS == code) {
13,022,084!
705
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
13,032,666✔
706
  }
707
  if (TSDB_CODE_SUCCESS == code) {
13,199,933!
708
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
13,211,295✔
709
  }
710
  if (TSDB_CODE_SUCCESS == code) {
13,157,788!
711
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
13,169,928✔
712
  }
713
  if (TSDB_CODE_SUCCESS == code) {
13,098,772!
714
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
13,111,184✔
715
  }
716
  if (TSDB_CODE_SUCCESS == code) {
13,049,162!
717
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
13,065,154✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
13,039,699!
720
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
13,057,140✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
13,015,435!
723
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
13,033,709✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
13,071,190!
726
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
13,098,242✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
13,051,455!
729
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
13,080,854✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
13,046,854!
732
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
13,077,243✔
733
  }  
734
  if (TSDB_CODE_SUCCESS == code) {
12,928,459!
735
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
12,973,940✔
736
  }  
737
  return code;
12,994,493✔
738
}
739

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

744
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
15,237,695✔
745
  SColumnNode* pNode = (SColumnNode*)pObj;
15,237,695✔
746

747
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
15,237,695✔
748
  if (TSDB_CODE_SUCCESS == code) {
15,074,758!
749
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
15,074,991✔
750
  }
751
  if (TSDB_CODE_SUCCESS == code) {
15,059,365!
752
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
15,059,572✔
753
  }
754
  if (TSDB_CODE_SUCCESS == code) {
15,070,908!
755
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
15,071,781✔
756
  }
757
  if (TSDB_CODE_SUCCESS == code) {
15,277,617!
758
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
15,280,768✔
759
  }
760
  if (TSDB_CODE_SUCCESS == code) {
15,225,092!
761
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
15,228,491✔
762
  }
763
  if (TSDB_CODE_SUCCESS == code) {
15,255,568!
764
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
15,258,321✔
765
  }
766
  if (TSDB_CODE_SUCCESS == code) {
15,264,443!
767
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
15,267,549✔
768
  }
769
  if (TSDB_CODE_SUCCESS == code) {
15,266,512!
770
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
15,269,928✔
771
  }
772
  if (TSDB_CODE_SUCCESS == code) {
15,272,927!
773
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
15,276,638✔
774
  }
775
  if (TSDB_CODE_SUCCESS == code) {
15,319,101!
776
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
15,322,791✔
777
  }
778
  if (TSDB_CODE_SUCCESS == code) {
15,317,492!
779
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
15,322,210✔
780
  }
781
  if (TSDB_CODE_SUCCESS == code) {
15,243,760!
782
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
15,248,967✔
783
  }  
784
  if (TSDB_CODE_SUCCESS == code) {
15,188,075!
785
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
15,195,587✔
786
  }  
787
  return code;
15,314,639✔
788
}
789

790
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
15,258,698✔
791
  SColumnNode* pNode = (SColumnNode*)pObj;
15,258,698✔
792

793
  int32_t code = TSDB_CODE_SUCCESS;
15,258,698✔
794
  STlv*   pTlv = NULL;
15,258,698✔
795
  tlvForEach(pDecoder, pTlv, code) {
30,570,055!
796
    switch (pTlv->type) {
15,252,647!
797
      case COLUMN_CODE_INLINE_ATTRS:
15,252,647✔
798
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
15,252,647✔
799
        break;
15,311,357✔
800
      default:
×
801
        break;
×
802
    }
803
  }
804

805
  return code;
15,302,714✔
806
}
807

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

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

821
  int32_t code = TSDB_CODE_SUCCESS;
5,332,384✔
822
  switch (pNode->node.resType.type) {
5,332,384!
823
    case TSDB_DATA_TYPE_NULL:
×
824
      break;
×
825
    case TSDB_DATA_TYPE_BOOL:
67,408✔
826
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
67,408✔
827
      break;
67,415✔
828
    case TSDB_DATA_TYPE_TINYINT:
4,703,469✔
829
    case TSDB_DATA_TYPE_SMALLINT:
830
    case TSDB_DATA_TYPE_INT:
831
    case TSDB_DATA_TYPE_BIGINT:
832
    case TSDB_DATA_TYPE_TIMESTAMP:
833
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
4,703,469✔
834
      break;
4,703,837✔
835
    case TSDB_DATA_TYPE_UTINYINT:
151✔
836
    case TSDB_DATA_TYPE_USMALLINT:
837
    case TSDB_DATA_TYPE_UINT:
838
    case TSDB_DATA_TYPE_UBIGINT:
839
      code = tlvEncodeU64(pEncoder, VALUE_CODE_DATUM, pNode->datum.u);
151✔
840
      break;
151✔
841
    case TSDB_DATA_TYPE_FLOAT:
209,826✔
842
    case TSDB_DATA_TYPE_DOUBLE:
843
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
209,826✔
844
      break;
209,884✔
845
    case TSDB_DATA_TYPE_VARCHAR:
354,386✔
846
    case TSDB_DATA_TYPE_VARBINARY:
847
    case TSDB_DATA_TYPE_NCHAR:
848
    case TSDB_DATA_TYPE_GEOMETRY:
849
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, varDataTLen(pNode->datum.p));
354,386✔
850
      break;
354,475✔
851
    case TSDB_DATA_TYPE_JSON:
12✔
852
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
12✔
853
      break;
1,188✔
854
    case TSDB_DATA_TYPE_DECIMAL:
×
855
    case TSDB_DATA_TYPE_BLOB:
856
      // todo
857
    default:
858
      break;
×
859
  }
860

861
  return code;
5,334,082✔
862
}
863

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

867
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
5,338,139✔
868
  if (TSDB_CODE_SUCCESS == code) {
5,340,578!
869
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
5,340,750✔
870
  }
871
  if (TSDB_CODE_SUCCESS == code) {
5,340,726!
872
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
5,341,165✔
873
  }
874
  if (TSDB_CODE_SUCCESS == code) {
5,338,644!
875
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
5,339,162✔
876
  }
877
  if (TSDB_CODE_SUCCESS == code) {
5,339,447!
878
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
5,340,032✔
879
  }
880
  if (TSDB_CODE_SUCCESS == code) {
5,335,146!
881
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
5,335,786✔
882
  }
883
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
5,335,455!
884
    code = datumToMsg(pNode, pEncoder);
5,331,366✔
885
  }
886

887
  return code;
5,338,988✔
888
}
889

890
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
5,524,586✔
891
  SValueNode* pNode = (SValueNode*)pObj;
5,524,586✔
892

893
  int32_t code = TSDB_CODE_SUCCESS;
5,524,586✔
894
  switch (pNode->node.resType.type) {
5,524,586!
895
    case TSDB_DATA_TYPE_NULL:
×
896
      break;
×
897
    case TSDB_DATA_TYPE_BOOL:
67,359✔
898
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
67,359✔
899
      *(bool*)&pNode->typeData = pNode->datum.b;
67,405✔
900
      break;
67,405✔
901
    case TSDB_DATA_TYPE_TINYINT:
1,109,140✔
902
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,109,140✔
903
      *(int8_t*)&pNode->typeData = pNode->datum.i;
1,109,282✔
904
      break;
1,109,282✔
905
    case TSDB_DATA_TYPE_SMALLINT:
61,785✔
906
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
61,785✔
907
      *(int16_t*)&pNode->typeData = pNode->datum.i;
61,816✔
908
      break;
61,816✔
909
    case TSDB_DATA_TYPE_INT:
70,163✔
910
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
70,163✔
911
      *(int32_t*)&pNode->typeData = pNode->datum.i;
70,174✔
912
      break;
70,174✔
913
    case TSDB_DATA_TYPE_BIGINT:
3,572,028✔
914
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
3,572,028✔
915
      *(int64_t*)&pNode->typeData = pNode->datum.i;
3,571,919✔
916
      break;
3,571,919✔
917
    case TSDB_DATA_TYPE_TIMESTAMP:
56,961✔
918
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
56,961✔
919
      *(int64_t*)&pNode->typeData = pNode->datum.i;
56,967✔
920
      break;
56,967✔
921
    case TSDB_DATA_TYPE_UTINYINT:
87✔
922
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
87✔
923
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
87✔
924
      break;
87✔
925
    case TSDB_DATA_TYPE_USMALLINT:
15✔
926
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
15✔
927
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
15✔
928
      break;
15✔
929
    case TSDB_DATA_TYPE_UINT:
15✔
930
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
15✔
931
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
15✔
932
      break;
15✔
933
    case TSDB_DATA_TYPE_UBIGINT:
60✔
934
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
60✔
935
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
60✔
936
      break;
60✔
937
    case TSDB_DATA_TYPE_FLOAT:
1,863✔
938
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
1,863✔
939
      *(float*)&pNode->typeData = pNode->datum.d;
1,863✔
940
      break;
1,863✔
941
    case TSDB_DATA_TYPE_DOUBLE:
212,076✔
942
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
212,076✔
943
      *(double*)&pNode->typeData = pNode->datum.d;
212,153✔
944
      break;
212,153✔
945
    case TSDB_DATA_TYPE_NCHAR:
374,092✔
946
    case TSDB_DATA_TYPE_VARCHAR:
947
    case TSDB_DATA_TYPE_VARBINARY:
948
    case TSDB_DATA_TYPE_GEOMETRY: {
949
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
374,092!
950
        code = TSDB_CODE_FAILED;
×
951
        break;
×
952
      }
953
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
374,092✔
954
      if (NULL == pNode->datum.p) {
374,839!
955
        code = terrno;
×
956
        break;
×
957
      }
958
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
374,839✔
959
      if (TSDB_CODE_SUCCESS == code) {
374,778!
960
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
374,779✔
961
      }
962
      break;
374,778✔
963
    }
964
    case TSDB_DATA_TYPE_JSON: {
12✔
965
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
12!
966
        code = TSDB_CODE_FAILED;
×
967
        break;
×
968
      }
969
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
12✔
970
      break;
12✔
971
    }
972
    case TSDB_DATA_TYPE_DECIMAL:
×
973
    case TSDB_DATA_TYPE_BLOB:
974
      // todo
975
    default:
976
      break;
×
977
  }
978

979
  return code;
5,525,476✔
980
}
981

982
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
5,539,497✔
983
  SValueNode* pNode = (SValueNode*)pObj;
5,539,497✔
984

985
  int32_t code = TSDB_CODE_SUCCESS;
5,539,497✔
986
  STlv*   pTlv = NULL;
5,539,497✔
987
  tlvForEach(pDecoder, pTlv, code) {
43,224,875!
988
    switch (pTlv->type) {
37,688,716!
989
      case VALUE_CODE_EXPR_BASE:
5,537,889✔
990
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,537,889✔
991
        break;
5,523,881✔
992
      case VALUE_CODE_LITERAL:
4,493,017✔
993
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
4,493,017✔
994
        break;
4,507,327✔
995
      case VALUE_CODE_FLAG:
5,537,420✔
996
        code = tlvDecodeI32(pTlv, &pNode->flag);
5,537,420✔
997
        break;
5,535,275✔
998
      case VALUE_CODE_TRANSLATE:
5,534,039✔
999
        code = tlvDecodeBool(pTlv, &pNode->translate);
5,534,039✔
1000
        break;
5,531,346✔
1001
      case VALUE_CODE_NOT_RESERVED:
5,530,916✔
1002
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
5,530,916✔
1003
        break;
5,530,959✔
1004
      case VALUE_CODE_IS_NULL:
5,530,573✔
1005
        code = tlvDecodeBool(pTlv, &pNode->isNull);
5,530,573✔
1006
        break;
5,531,340✔
1007
      case VALUE_CODE_DATUM:
5,524,862✔
1008
        code = msgToDatum(pTlv, pNode);
5,524,862✔
1009
        break;
5,525,250✔
1010
      default:
×
1011
        break;
×
1012
    }
1013
  }
1014

1015
  return code;
5,525,037✔
1016
}
1017

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

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

1023
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,442,752✔
1024
  if (TSDB_CODE_SUCCESS == code) {
1,442,151!
1025
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
1,442,177✔
1026
  }
1027
  if (TSDB_CODE_SUCCESS == code) {
1,442,263!
1028
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
1,442,304✔
1029
  }
1030
  if (TSDB_CODE_SUCCESS == code) {
1,439,546!
1031
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
1,439,619✔
1032
  }
1033

1034
  return code;
1,440,048✔
1035
}
1036

1037
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
1,557,214✔
1038
  SOperatorNode* pNode = (SOperatorNode*)pObj;
1,557,214✔
1039

1040
  int32_t code = TSDB_CODE_SUCCESS;
1,557,214✔
1041
  STlv*   pTlv = NULL;
1,557,214✔
1042
  tlvForEach(pDecoder, pTlv, code) {
7,620,411!
1043
    switch (pTlv->type) {
6,063,822!
1044
      case OPERATOR_CODE_EXPR_BASE:
1,557,100✔
1045
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
1,557,100✔
1046
        break;
1,555,053✔
1047
      case OPERATOR_CODE_OP_TYPE:
1,555,147✔
1048
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
1,555,147✔
1049
        break;
1,555,604✔
1050
      case OPERATOR_CODE_LEFT:
1,555,602✔
1051
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
1,555,602✔
1052
        break;
1,557,803✔
1053
      case OPERATOR_CODE_RIGHT:
1,395,973✔
1054
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
1,395,973✔
1055
        break;
1,394,737✔
1056
      default:
×
1057
        break;
×
1058
    }
1059
  }
1060

1061
  return code;
1,554,847✔
1062
}
1063

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

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

1069
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
324,755✔
1070
  if (TSDB_CODE_SUCCESS == code) {
324,806!
1071
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
324,810✔
1072
  }
1073
  if (TSDB_CODE_SUCCESS == code) {
324,858!
1074
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
324,869✔
1075
  }
1076

1077
  return code;
324,549✔
1078
}
1079

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

1083
  int32_t code = TSDB_CODE_SUCCESS;
333,067✔
1084
  STlv*   pTlv = NULL;
333,067✔
1085
  tlvForEach(pDecoder, pTlv, code) {
1,331,832!
1086
    switch (pTlv->type) {
998,615!
1087
      case LOGIC_COND_CODE_EXPR_BASE:
333,063✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
333,063✔
1089
        break;
332,734✔
1090
      case LOGIC_COND_CODE_COND_TYPE:
332,750✔
1091
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
332,750✔
1092
        break;
332,793✔
1093
      case LOGIC_COND_CODE_PARAMETERS:
332,802✔
1094
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
332,802✔
1095
        break;
333,238✔
1096
      default:
×
1097
        break;
×
1098
    }
1099
  }
1100

1101
  return code;
333,098✔
1102
}
1103

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

1118
static int32_t functionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,243,952✔
1119
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
3,243,952✔
1120

1121
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
3,243,952✔
1122
  if (TSDB_CODE_SUCCESS == code) {
3,232,225!
1123
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
3,233,141✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
3,234,987!
1126
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
3,236,085✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
3,229,124!
1129
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
3,230,360✔
1130
  }
1131
  if (TSDB_CODE_SUCCESS == code) {
3,226,860!
1132
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
3,228,291✔
1133
  }
1134
  if (TSDB_CODE_SUCCESS == code) {
3,226,816!
1135
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
3,228,567✔
1136
  }
1137
  if (TSDB_CODE_SUCCESS == code) {
3,232,602!
1138
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
3,234,924✔
1139
  }
1140
  if (TSDB_CODE_SUCCESS == code) {
3,230,156!
1141
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
3,232,652✔
1142
  }  
1143
  if (TSDB_CODE_SUCCESS == code) {
3,230,103!
1144
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
3,233,877✔
1145
  }
1146
  if (TSDB_CODE_SUCCESS == code) {
3,228,855!
1147
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
3,232,827✔
1148
  }
1149
  if (TSDB_CODE_SUCCESS == code) {
3,226,736!
1150
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
3,232,640✔
1151
  }
1152

1153
  return code;
3,235,564✔
1154
}
1155

1156
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
3,546,677✔
1157
  SFunctionNode* pNode = (SFunctionNode*)pObj;
3,546,677✔
1158

1159
  int32_t code = TSDB_CODE_SUCCESS;
3,546,677✔
1160
  STlv*   pTlv = NULL;
3,546,677✔
1161
  tlvForEach(pDecoder, pTlv, code) {
41,806,490!
1162
    switch (pTlv->type) {
38,263,362!
1163
      case FUNCTION_CODE_EXPR_BASE:
3,546,096✔
1164
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
3,546,096✔
1165
        break;
3,537,574✔
1166
      case FUNCTION_CODE_FUNCTION_NAME:
3,537,818✔
1167
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
3,537,818✔
1168
        break;
3,537,892✔
1169
      case FUNCTION_CODE_FUNCTION_ID:
3,537,492✔
1170
        code = tlvDecodeI32(pTlv, &pNode->funcId);
3,537,492✔
1171
        break;
3,537,215✔
1172
      case FUNCTION_CODE_FUNCTION_TYPE:
3,537,284✔
1173
        code = tlvDecodeI32(pTlv, &pNode->funcType);
3,537,284✔
1174
        break;
3,536,471✔
1175
      case FUNCTION_CODE_PARAMETERS:
2,836,336✔
1176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
2,836,336✔
1177
        break;
2,845,153✔
1178
      case FUNCTION_CODE_UDF_BUF_SIZE:
3,547,303✔
1179
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
3,547,303✔
1180
        break;
3,545,970✔
1181
      case FUNCTION_NODE_HAS_PK:
3,545,576✔
1182
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
3,545,576✔
1183
        break;
3,544,447✔
1184
      case FUNCTION_NODE_PK_BYTES:
3,544,099✔
1185
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
3,544,099✔
1186
        break;  
3,543,911✔
1187
      case FUNCTION_CODE_IS_MERGE_FUNC:
3,544,172✔
1188
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
3,544,172✔
1189
        break;
3,543,648✔
1190
      case FUNCTION_CODE_MERGE_FUNC_OF:
3,543,480✔
1191
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
3,543,480✔
1192
        break;
3,543,334✔
1193
      case FUNCTION_CODE_TRIM_TYPE:
3,543,706✔
1194
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
3,543,706✔
1195
        break;
3,544,198✔
1196
      default:
×
1197
        break;
×
1198
    }
1199
  }
1200

1201
  return code;
3,533,555✔
1202
}
1203

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

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

1209
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
317,914✔
1210
  if (TSDB_CODE_SUCCESS == code) {
317,679!
1211
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
317,680✔
1212
  }
1213
  if (TSDB_CODE_SUCCESS == code) {
317,708!
1214
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
317,709✔
1215
  }
1216

1217
  return code;
317,742✔
1218
}
1219

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

1223
  int32_t code = TSDB_CODE_SUCCESS;
327,867✔
1224
  STlv*   pTlv = NULL;
327,867✔
1225
  tlvForEach(pDecoder, pTlv, code) {
1,311,408!
1226
    switch (pTlv->type) {
983,583!
1227
      case ORDER_BY_EXPR_CODE_EXPR:
327,858✔
1228
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
327,858✔
1229
        break;
327,895✔
1230
      case ORDER_BY_EXPR_CODE_ORDER:
327,884✔
1231
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
327,884✔
1232
        break;
327,845✔
1233
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
327,841✔
1234
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
327,841✔
1235
        break;
327,801✔
1236
      default:
×
1237
        break;
×
1238
    }
1239
  }
1240

1241
  return code;
327,779✔
1242
}
1243

1244
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1245

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

1249
  int32_t code = tlvEncodeI64(pEncoder, LIMIT_CODE_LIMIT, pNode->limit);
194,997✔
1250
  if (TSDB_CODE_SUCCESS == code) {
194,980!
1251
    code = tlvEncodeI64(pEncoder, LIMIT_CODE_OFFSET, pNode->offset);
194,990✔
1252
  }
1253

1254
  return code;
194,977✔
1255
}
1256

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

1260
  int32_t code = TSDB_CODE_SUCCESS;
200,755✔
1261
  STlv*   pTlv = NULL;
200,755✔
1262
  tlvForEach(pDecoder, pTlv, code) {
602,147!
1263
    switch (pTlv->type) {
401,462!
1264
      case LIMIT_CODE_LIMIT:
200,763✔
1265
        code = tlvDecodeI64(pTlv, &pNode->limit);
200,763✔
1266
        break;
200,727✔
1267
      case LIMIT_CODE_OFFSET:
200,699✔
1268
        code = tlvDecodeI64(pTlv, &pNode->offset);
200,699✔
1269
        break;
200,665✔
1270
      default:
×
1271
        break;
×
1272
    }
1273
  }
1274

1275
  return code;
200,697✔
1276
}
1277

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

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

1283
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
1,251,910✔
1284
  if (TSDB_CODE_SUCCESS == code) {
1,251,462!
1285
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
1,251,513✔
1286
  }
1287
  if (TSDB_CODE_SUCCESS == code) {
1,251,630!
1288
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
1,251,651✔
1289
  }
1290
  if (TSDB_CODE_SUCCESS == code) {
1,251,634!
1291
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
1,251,738✔
1292
  }
1293

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

1297
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
1,360,469✔
1298
  SName* pNode = (SName*)pObj;
1,360,469✔
1299

1300
  int32_t code = TSDB_CODE_SUCCESS;
1,360,469✔
1301
  STlv*   pTlv = NULL;
1,360,469✔
1302
  tlvForEach(pDecoder, pTlv, code) {
6,803,996!
1303
    switch (pTlv->type) {
5,443,647!
1304
      case NAME_CODE_TYPE:
1,360,907✔
1305
        code = tlvDecodeU8(pTlv, &pNode->type);
1,360,907✔
1306
        break;
1,360,927✔
1307
      case NAME_CODE_ACCT_ID:
1,360,897✔
1308
        code = tlvDecodeI32(pTlv, &pNode->acctId);
1,360,897✔
1309
        break;
1,360,868✔
1310
      case NAME_CODE_DB_NAME:
1,360,997✔
1311
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
1,360,997✔
1312
        break;
1,360,835✔
1313
      case NAME_CODE_TABLE_NAME:
1,360,846✔
1314
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
1,360,846✔
1315
        break;
1,360,897✔
1316
      default:
×
1317
        break;
×
1318
    }
1319
  }
1320

1321
  return code;
1,361,056✔
1322
}
1323

1324
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1325

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

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

1334
  return code;
25,959✔
1335
}
1336

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

1340
  int32_t code = TSDB_CODE_SUCCESS;
26,353✔
1341
  STlv*   pTlv = NULL;
26,353✔
1342
  tlvForEach(pDecoder, pTlv, code) {
79,060!
1343
    switch (pTlv->type) {
52,707!
1344
      case TIME_WINDOW_CODE_START_KEY:
26,354✔
1345
        code = tlvDecodeI64(pTlv, &pNode->skey);
26,354✔
1346
        break;
26,354✔
1347
      case TIME_WINDOW_CODE_END_KEY:
26,353✔
1348
        code = tlvDecodeI64(pTlv, &pNode->ekey);
26,353✔
1349
        break;
26,353✔
1350
      default:
×
1351
        break;
×
1352
    }
1353
  }
1354

1355
  return code;
26,355✔
1356
}
1357

1358
enum { NODE_LIST_CODE_DATA_TYPE = 1, NODE_LIST_CODE_NODE_LIST };
1359

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

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

1368
  return code;
44,739✔
1369
}
1370

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

1374
  int32_t code = TSDB_CODE_SUCCESS;
46,196✔
1375
  STlv*   pTlv = NULL;
46,196✔
1376
  tlvForEach(pDecoder, pTlv, code) {
138,589!
1377
    switch (pTlv->type) {
92,375!
1378
      case NODE_LIST_CODE_DATA_TYPE:
46,197✔
1379
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
46,197✔
1380
        break;
46,175✔
1381
      case NODE_LIST_CODE_NODE_LIST:
46,178✔
1382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
46,178✔
1383
        break;
46,218✔
1384
      default:
×
1385
        break;
×
1386
    }
1387
  }
1388

1389
  return code;
46,203✔
1390
}
1391

1392
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1393

1394
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,298,418✔
1395
  const STargetNode* pNode = (const STargetNode*)pObj;
11,298,418✔
1396

1397
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
11,298,418✔
1398
  if (TSDB_CODE_SUCCESS == code) {
11,229,794!
1399
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
11,231,477✔
1400
  }
1401

1402
  return code;
11,041,541✔
1403
}
1404

1405
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,137,221✔
1406
  const STargetNode* pNode = (const STargetNode*)pObj;
11,137,221✔
1407

1408
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
11,137,221✔
1409
  if (TSDB_CODE_SUCCESS == code) {
11,077,984!
1410
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
11,078,595✔
1411
  }
1412

1413
  return code;
11,067,837✔
1414
}
1415

1416
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
13,099,039✔
1417
  STargetNode* pNode = (STargetNode*)pObj;
13,099,039✔
1418

1419
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
13,099,039✔
1420
  if (TSDB_CODE_SUCCESS == code) {
13,140,220!
1421
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
13,141,067✔
1422
  }
1423

1424
  return code;
13,126,608✔
1425
}
1426

1427
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
13,118,337✔
1428
  STargetNode* pNode = (STargetNode*)pObj;
13,118,337✔
1429

1430
  int32_t code = TSDB_CODE_SUCCESS;
13,118,337✔
1431
  STlv*   pTlv = NULL;
13,118,337✔
1432
  tlvForEach(pDecoder, pTlv, code) {
39,340,638!
1433
    switch (pTlv->type) {
26,221,584!
1434
      case TARGET_CODE_INLINE_ATTRS:
13,106,225✔
1435
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
13,106,225✔
1436
        break;
13,126,010✔
1437
      case TARGET_CODE_EXPR:
13,115,359✔
1438
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
13,115,359✔
1439
        break;
13,096,291✔
1440
      default:
×
1441
        break;
×
1442
    }
1443
  }
1444

1445
  return code;
13,055,054✔
1446
}
1447

1448
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1449

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

1453
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
5,249,339✔
1454
  if (TSDB_CODE_SUCCESS == code) {
5,247,559!
1455
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
5,247,697✔
1456
  }
1457
  if (TSDB_CODE_SUCCESS == code) {
5,246,725!
1458
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
5,246,874✔
1459
  }
1460
  if (TSDB_CODE_SUCCESS == code) {
5,244,290!
1461
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
5,244,574✔
1462
  }
1463

1464
  return code;
5,244,829✔
1465
}
1466

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

1470
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
5,250,805✔
1471
  if (TSDB_CODE_SUCCESS == code) {
5,245,504!
1472
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
5,245,591✔
1473
  }
1474

1475
  return code;
5,240,444✔
1476
}
1477

1478
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
5,649,469✔
1479
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
5,649,469✔
1480

1481
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
5,649,469✔
1482
  if (TSDB_CODE_SUCCESS == code) {
5,653,592!
1483
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
5,653,859✔
1484
  }
1485
  if (TSDB_CODE_SUCCESS == code) {
5,651,095!
1486
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
5,651,430✔
1487
  }
1488
  if (TSDB_CODE_SUCCESS == code) {
5,648,374!
1489
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
5,648,803✔
1490
  }
1491

1492
  return code;
5,647,642✔
1493
}
1494

1495
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
5,650,834✔
1496
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
5,650,834✔
1497

1498
  int32_t code = TSDB_CODE_SUCCESS;
5,650,834✔
1499
  STlv*   pTlv = NULL;
5,650,834✔
1500
  tlvForEach(pDecoder, pTlv, code) {
16,951,128!
1501
    switch (pTlv->type) {
11,298,863!
1502
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
5,650,932✔
1503
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
5,650,932✔
1504
        break;
5,647,646✔
1505
      case DATA_BLOCK_DESC_CODE_SLOTS:
5,647,931✔
1506
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
5,647,931✔
1507
        break;
5,652,648✔
1508
      default:
×
1509
        break;
×
1510
    }
1511
  }
1512

1513
  return code;
5,649,598✔
1514
}
1515

1516
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1517

1518
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
20,579,289✔
1519
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
20,579,289✔
1520

1521
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
20,579,289✔
1522
  if (TSDB_CODE_SUCCESS == code) {
20,506,625!
1523
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
20,508,426✔
1524
  }
1525
  if (TSDB_CODE_SUCCESS == code) {
20,222,039!
1526
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
20,240,192✔
1527
  }
1528
  if (TSDB_CODE_SUCCESS == code) {
20,210,727!
1529
    code = tlvEncodeValueBool(pEncoder, pNode->output);
20,233,855✔
1530
  }
1531
  if (TSDB_CODE_SUCCESS == code) {
20,099,598!
1532
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
20,126,935✔
1533
  }
1534

1535
  return code;
20,095,833✔
1536
}
1537

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

1542
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
23,760,313✔
1543
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
23,760,313✔
1544

1545
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
23,760,313✔
1546
  if (TSDB_CODE_SUCCESS == code) {
23,895,627!
1547
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
23,897,368✔
1548
  }
1549
  if (TSDB_CODE_SUCCESS == code) {
23,471,498!
1550
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
23,472,852✔
1551
  }
1552
  if (TSDB_CODE_SUCCESS == code) {
23,452,650!
1553
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
23,455,087✔
1554
  }
1555
  if (TSDB_CODE_SUCCESS == code) {
23,387,787!
1556
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
23,392,846✔
1557
  }
1558

1559
  return code;
23,405,737✔
1560
}
1561

1562
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
23,800,799✔
1563
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
23,800,799✔
1564

1565
  int32_t code = TSDB_CODE_SUCCESS;
23,800,799✔
1566
  STlv*   pTlv = NULL;
23,800,799✔
1567
  tlvForEach(pDecoder, pTlv, code) {
47,208,776!
1568
    switch (pTlv->type) {
23,784,879!
1569
      case SLOT_DESC_CODE_INLINE_ATTRS:
23,784,879✔
1570
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
23,784,879✔
1571
        break;
23,407,977✔
1572
      default:
×
1573
        break;
×
1574
    }
1575
  }
1576

1577
  return code;
23,412,095✔
1578
}
1579

1580
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1581

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

1585
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
2,218,227✔
1586
  if (TSDB_CODE_SUCCESS == code) {
2,218,494!
1587
    code = tlvEncodeValueU16(pEncoder, pNode->port);
2,218,567✔
1588
  }
1589

1590
  return code;
2,218,723✔
1591
}
1592

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

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

1601
  return code;
36,528✔
1602
}
1603

1604
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
2,384,624✔
1605
  SEp* pNode = (SEp*)pObj;
2,384,624✔
1606

1607
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
2,384,624✔
1608
  if (TSDB_CODE_SUCCESS == code) {
2,386,221!
1609
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
2,386,266✔
1610
  }
1611

1612
  return code;
2,386,688✔
1613
}
1614

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

1618
  int32_t code = TSDB_CODE_SUCCESS;
36,681✔
1619
  STlv*   pTlv = NULL;
36,681✔
1620
  tlvForEach(pDecoder, pTlv, code) {
110,077!
1621
    switch (pTlv->type) {
73,377!
1622
      case EP_CODE_FQDN:
36,687✔
1623
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
36,687✔
1624
        break;
36,691✔
1625
      case EP_CODE_port:
36,690✔
1626
        code = tlvDecodeU16(pTlv, &pNode->port);
36,690✔
1627
        break;
36,705✔
1628
      default:
×
1629
        break;
×
1630
    }
1631
  }
1632

1633
  return code;
36,698✔
1634
}
1635

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

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

1641
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
2,646,330✔
1642
  if (TSDB_CODE_SUCCESS == code) {
2,646,988!
1643
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
2,647,043✔
1644
  }
1645

1646
  return code;
2,646,984✔
1647
}
1648

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

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

1660
  return code;
35,388✔
1661
}
1662

1663
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
2,832,382✔
1664
  SEpSet* pNode = (SEpSet*)pObj;
2,832,382✔
1665

1666
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
2,832,382✔
1667
  if (TSDB_CODE_SUCCESS == code) {
2,832,792✔
1668
    int32_t numOfEps = 0;
2,832,756✔
1669
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
2,832,756✔
1670
    pNode->numOfEps = numOfEps;
2,834,054✔
1671
  }
1672

1673
  return code;
2,834,090✔
1674
}
1675

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

1679
  int32_t code = TSDB_CODE_SUCCESS;
35,545✔
1680
  STlv*   pTlv = NULL;
35,545✔
1681
  tlvForEach(pDecoder, pTlv, code) {
142,205!
1682
    switch (pTlv->type) {
106,645!
1683
      case EP_SET_CODE_IN_USE:
35,548✔
1684
        code = tlvDecodeI8(pTlv, &pNode->inUse);
35,548✔
1685
        break;
35,552✔
1686
      case EP_SET_CODE_NUM_OF_EPS:
35,550✔
1687
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
35,550✔
1688
        break;
35,547✔
1689
      case EP_SET_CODE_EPS:
35,547✔
1690
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
35,547✔
1691
        break;
35,561✔
1692
      default:
×
1693
        break;
×
1694
    }
1695
  }
1696

1697
  return code;
35,553✔
1698
}
1699

1700
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1701

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

1705
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
2,645,925✔
1706
  if (TSDB_CODE_SUCCESS == code) {
2,646,396!
1707
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
2,646,468✔
1708
  }
1709

1710
  return code;
2,647,072✔
1711
}
1712

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

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

1721
  return code;
×
1722
}
1723

1724
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
2,832,108✔
1725
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
2,832,108✔
1726

1727
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
2,832,108✔
1728
  if (TSDB_CODE_SUCCESS == code) {
2,832,773!
1729
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
2,832,881✔
1730
  }
1731

1732
  return code;
2,834,082✔
1733
}
1734

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

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

1751
  return code;
×
1752
}
1753

1754
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1755

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

1759
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
951,225✔
1760
  if (TSDB_CODE_SUCCESS == code) {
951,206!
1761
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
951,206✔
1762
  }
1763
  if (TSDB_CODE_SUCCESS == code) {
951,203✔
1764
    code = tlvEncodeValueU64(pEncoder, pNode->schedId);
951,202✔
1765
  }
1766
  if (TSDB_CODE_SUCCESS == code) {
951,198✔
1767
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
951,197✔
1768
  }
1769
  if (TSDB_CODE_SUCCESS == code) {
951,207✔
1770
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
951,206✔
1771
  }
1772
  if (TSDB_CODE_SUCCESS == code) {
951,209✔
1773
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
951,207✔
1774
  }
1775

1776
  return code;
951,208✔
1777
}
1778

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

1783
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
1,009,516✔
1784
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
1,009,516✔
1785

1786
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
1,009,516✔
1787
  if (TSDB_CODE_SUCCESS == code) {
1,009,720!
1788
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
1,009,720✔
1789
  }
1790
  if (TSDB_CODE_SUCCESS == code) {
1,009,702✔
1791
    code = tlvDecodeValueU64(pDecoder, &pNode->schedId);
1,009,687✔
1792
  }
1793
  if (TSDB_CODE_SUCCESS == code) {
1,009,673✔
1794
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
1,009,663✔
1795
  }
1796
  if (TSDB_CODE_SUCCESS == code) {
1,009,633✔
1797
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
1,009,623✔
1798
  }
1799
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
1,009,557✔
1800
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
1,009,546✔
1801
  }
1802

1803
  return code;
1,009,545✔
1804
}
1805

1806
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
1,009,555✔
1807
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
1,009,555✔
1808

1809
  int32_t code = TSDB_CODE_SUCCESS;
1,009,555✔
1810
  STlv*   pTlv = NULL;
1,009,555✔
1811
  tlvForEach(pDecoder, pTlv, code) {
2,019,100!
1812
    switch (pTlv->type) {
1,009,561!
1813
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
1,009,561✔
1814
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
1,009,561✔
1815
        break;
1,009,545✔
1816
      default:
×
1817
        break;
×
1818
    }
1819
  }
1820

1821
  return code;
1,009,526✔
1822
}
1823

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

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

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

1837
  return code;
6,877✔
1838
}
1839

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

1843
  int32_t code = TSDB_CODE_SUCCESS;
7,267✔
1844
  STlv*   pTlv = NULL;
7,267✔
1845
  tlvForEach(pDecoder, pTlv, code) {
29,068!
1846
    switch (pTlv->type) {
21,801!
1847
      case WHEN_THEN_CODE_EXPR_BASE:
7,267✔
1848
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
7,267✔
1849
        break;
7,267✔
1850
      case WHEN_THEN_CODE_WHEN:
7,267✔
1851
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
7,267✔
1852
        break;
7,267✔
1853
      case WHEN_THEN_CODE_THEN:
7,267✔
1854
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
7,267✔
1855
        break;
7,267✔
1856
      default:
×
1857
        break;
×
1858
    }
1859
  }
1860

1861
  return code;
7,267✔
1862
}
1863

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

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

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

1880
  return code;
5,061✔
1881
}
1882

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

1886
  int32_t code = TSDB_CODE_SUCCESS;
5,274✔
1887
  STlv*   pTlv = NULL;
5,274✔
1888
  tlvForEach(pDecoder, pTlv, code) {
20,461!
1889
    switch (pTlv->type) {
15,187!
1890
      case CASE_WHEN_CODE_EXPR_BASE:
5,274✔
1891
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,274✔
1892
        break;
5,274✔
1893
      case CASE_WHEN_CODE_CASE:
1,188✔
1894
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
1,188✔
1895
        break;
1,188✔
1896
      case CASE_WHEN_CODE_ELSE:
3,451✔
1897
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
3,451✔
1898
        break;
3,451✔
1899
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
5,274✔
1900
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
5,274✔
1901
        break;
5,274✔
1902
      default:
×
1903
        break;
×
1904
    }
1905
  }
1906

1907
  return code;
5,274✔
1908
}
1909

1910
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
1911

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

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

1920
  return code;
829✔
1921
}
1922

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

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

1941
  return code;
668✔
1942
}
1943

1944

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

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

1960
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
3,559,245✔
1961
  if (TSDB_CODE_SUCCESS == code) {
3,556,331!
1962
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
3,556,465✔
1963
  }
1964
  if (TSDB_CODE_SUCCESS == code) {
3,556,698!
1965
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
3,556,884✔
1966
  }
1967
  if (TSDB_CODE_SUCCESS == code) {
3,557,404!
1968
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
3,557,852✔
1969
  }
1970
  if (TSDB_CODE_SUCCESS == code) {
3,557,880!
1971
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
3,558,647✔
1972
  }
1973
  if (TSDB_CODE_SUCCESS == code) {
3,557,718!
1974
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
3,558,652✔
1975
  }
1976
  if (TSDB_CODE_SUCCESS == code) {
3,558,665!
1977
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
3,559,487✔
1978
  }
1979
  if (TSDB_CODE_SUCCESS == code) {
3,558,247!
1980
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
3,559,139✔
1981
  }
1982
  if (TSDB_CODE_SUCCESS == code) { 
3,557,668!
1983
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
3,558,594✔
1984
  }
1985

1986
  return code;
3,557,331✔
1987
}
1988

1989
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
3,826,968✔
1990
  SPhysiNode* pNode = (SPhysiNode*)pObj;
3,826,968✔
1991

1992
  int32_t code = TSDB_CODE_SUCCESS;
3,826,968✔
1993
  STlv*   pTlv = NULL;
3,826,968✔
1994
  tlvForEach(pDecoder, pTlv, code) {
25,350,590!
1995
    switch (pTlv->type) {
21,523,941!
1996
      case PHY_NODE_CODE_OUTPUT_DESC:
3,827,414✔
1997
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
3,827,414✔
1998
        break;
3,828,066✔
1999
      case PHY_NODE_CODE_CONDITIONS:
411,991✔
2000
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
411,991✔
2001
        break;
411,835✔
2002
      case PHY_NODE_CODE_CHILDREN:
1,774,566✔
2003
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
1,774,566✔
2004
        break;
1,774,995✔
2005
      case PHY_NODE_CODE_LIMIT:
190,193✔
2006
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
190,193✔
2007
        break;
190,077✔
2008
      case PHY_NODE_CODE_SLIMIT:
10,413✔
2009
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
10,413✔
2010
        break;
10,411✔
2011
      case PHY_NODE_CODE_INPUT_TS_ORDER:
3,828,042✔
2012
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
3,828,042✔
2013
        break;
3,827,653✔
2014
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
3,827,580✔
2015
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
3,827,580✔
2016
        break;
3,827,231✔
2017
      case PHY_NODE_CODE_DYNAMIC_OP:
3,827,125✔
2018
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
3,827,125✔
2019
        break;
3,826,677✔
2020
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
3,826,617✔
2021
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
3,826,617✔
2022
        break;
3,826,677✔
2023
      default:
×
2024
        break;
×
2025
    }
2026
  }
2027

2028
  return code;
3,822,365✔
2029
}
2030

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

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

2045
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,251,449✔
2046
  if (TSDB_CODE_SUCCESS == code) {
1,251,840!
2047
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
1,251,918✔
2048
  }
2049
  if (TSDB_CODE_SUCCESS == code) {
1,251,010!
2050
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
1,251,070✔
2051
  }
2052
  if (TSDB_CODE_SUCCESS == code) {
1,250,795!
2053
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
1,250,921✔
2054
  }
2055
  if (TSDB_CODE_SUCCESS == code) {
1,251,598!
2056
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
1,251,778✔
2057
  }
2058
  if (TSDB_CODE_SUCCESS == code) {
1,251,537!
2059
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
1,251,988✔
2060
  }
2061
  if (TSDB_CODE_SUCCESS == code) {
1,251,633!
2062
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
1,252,064✔
2063
  }
2064
  if (TSDB_CODE_SUCCESS == code) {
1,251,082!
2065
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
1,251,598✔
2066
  }
2067

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

2071
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
1,361,067✔
2072
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
1,361,067✔
2073

2074
  int32_t code = TSDB_CODE_SUCCESS;
1,361,067✔
2075
  STlv*   pTlv = NULL;
1,361,067✔
2076
  tlvForEach(pDecoder, pTlv, code) {
11,369,900!
2077
    switch (pTlv->type) {
10,009,002!
2078
      case PHY_SCAN_CODE_BASE_NODE:
1,361,236✔
2079
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,361,236✔
2080
        break;
1,360,783✔
2081
      case PHY_SCAN_CODE_SCAN_COLS:
1,317,126✔
2082
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
1,317,126✔
2083
        break;
1,318,327✔
2084
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
524,052✔
2085
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
524,052✔
2086
        break;
524,314✔
2087
      case PHY_SCAN_CODE_BASE_UID:
1,362,194✔
2088
        code = tlvDecodeU64(pTlv, &pNode->uid);
1,362,194✔
2089
        break;
1,361,679✔
2090
      case PHY_SCAN_CODE_BASE_SUID:
1,361,484✔
2091
        code = tlvDecodeU64(pTlv, &pNode->suid);
1,361,484✔
2092
        break;
1,361,182✔
2093
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
1,361,172✔
2094
        code = tlvDecodeI8(pTlv, &pNode->tableType);
1,361,172✔
2095
        break;
1,360,903✔
2096
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
1,360,849✔
2097
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
1,360,849✔
2098
        break;
1,360,823✔
2099
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
1,360,889✔
2100
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
1,360,889✔
2101
        break;
1,360,822✔
2102
      default:
×
2103
        break;
×
2104
    }
2105
  }
2106

2107
  return code;
1,357,549✔
2108
}
2109

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

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

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

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

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

2129
  int32_t code = TSDB_CODE_SUCCESS;
44,546✔
2130
  STlv*   pTlv = NULL;
44,546✔
2131
  tlvForEach(pDecoder, pTlv, code) {
133,540!
2132
    switch (pTlv->type) {
89,043!
2133
      case PHY_TAG_SCAN_CODE_SCAN:
44,530✔
2134
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
44,530✔
2135
        break;
44,488✔
2136
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
44,513✔
2137
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
44,513✔
2138
        break;
44,506✔
2139
      default:
×
2140
        break;
×
2141
    }
2142
  }
2143

2144
  return code;
44,461✔
2145
}
2146

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

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

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

2176
  return code;
6,233✔
2177
}
2178

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

2182
  int32_t code = TSDB_CODE_SUCCESS;
6,939✔
2183
  STlv*   pTlv = NULL;
6,939✔
2184
  tlvForEach(pDecoder, pTlv, code) {
35,676!
2185
    switch (pTlv->type) {
28,738!
2186
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
6,943✔
2187
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
6,943✔
2188
        break;
6,940✔
2189
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
887✔
2190
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
887✔
2191
        break;
886✔
2192
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
6,942✔
2193
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
6,942✔
2194
        break;
6,943✔
2195
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
6,943✔
2196
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
6,943✔
2197
        break;
6,943✔
2198
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
6,864✔
2199
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
6,864✔
2200
        break;
6,866✔
2201
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
159✔
2202
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
159✔
2203
        break;
159✔
2204

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

2210
  return code;
6,939✔
2211
}
2212

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

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

2225
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
1,166,029✔
2226
  if (TSDB_CODE_SUCCESS == code) {
1,165,723!
2227
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
1,165,800✔
2228
  }
2229
  if (TSDB_CODE_SUCCESS == code) {
1,164,827!
2230
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
1,164,977✔
2231
  }
2232
  if (TSDB_CODE_SUCCESS == code) {
1,164,729!
2233
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
1,164,931✔
2234
  }
2235
  if (TSDB_CODE_SUCCESS == code) {
1,164,572!
2236
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
1,164,843✔
2237
  }
2238
  if (TSDB_CODE_SUCCESS == code) {
1,164,921!
2239
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
1,165,251✔
2240
  }
2241
  if (TSDB_CODE_SUCCESS == code) {
1,164,812!
2242
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
1,165,169✔
2243
  }
2244
  if (TSDB_CODE_SUCCESS == code) {
1,164,625!
2245
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
1,165,002✔
2246
  }
2247
  if (TSDB_CODE_SUCCESS == code) {
1,164,579!
2248
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
1,164,931✔
2249
  }
2250
  if (TSDB_CODE_SUCCESS == code) {
1,164,580!
2251
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
1,164,969✔
2252
  }
2253
  if (TSDB_CODE_SUCCESS == code) {
1,164,463!
2254
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
1,164,898✔
2255
  }
2256
  if (TSDB_CODE_SUCCESS == code) {
1,165,270!
2257
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
1,165,727✔
2258
  }
2259
  if (TSDB_CODE_SUCCESS == code) {
1,165,726!
2260
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
1,166,257✔
2261
  }
2262
  if (TSDB_CODE_SUCCESS == code) {
1,166,164!
2263
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
1,166,735✔
2264
  }
2265
  if (TSDB_CODE_SUCCESS == code) {
1,165,803!
2266
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
1,166,408✔
2267
  }
2268
  if (TSDB_CODE_SUCCESS == code) {
1,165,930!
2269
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
1,166,544✔
2270
  }
2271
  if (TSDB_CODE_SUCCESS == code) {
1,165,461!
2272
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
1,166,088✔
2273
  }
2274
  if (TSDB_CODE_SUCCESS == code) {
1,165,817!
2275
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
1,166,457✔
2276
  }
2277
  if (TSDB_CODE_SUCCESS == code) {
1,165,147!
2278
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
1,165,927✔
2279
  }
2280
  if (TSDB_CODE_SUCCESS == code) {
1,165,042!
2281
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
1,165,856✔
2282
  }
2283
  if (TSDB_CODE_SUCCESS == code) {
1,164,361!
2284
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
1,165,282✔
2285
  }
2286
  return code;
1,165,283✔
2287
}
2288

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

2292
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,166,896✔
2293
  if (TSDB_CODE_SUCCESS == code) {
1,166,163!
2294
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
1,166,223✔
2295
  }
2296
  if (TSDB_CODE_SUCCESS == code) {
1,165,724✔
2297
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
1,165,703✔
2298
  }
2299
  if (TSDB_CODE_SUCCESS == code) {
1,166,062!
2300
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
1,166,114✔
2301
  }
2302
  if (TSDB_CODE_SUCCESS == code) {
1,166,231!
2303
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
1,166,378✔
2304
  }
2305
  if (TSDB_CODE_SUCCESS == code) {
1,166,200!
2306
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
1,166,401✔
2307
  }
2308

2309
  return code;
1,166,197✔
2310
}
2311

2312
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
1,273,567✔
2313
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,273,567✔
2314

2315
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
1,273,567✔
2316
  if (TSDB_CODE_SUCCESS == code) {
1,274,130!
2317
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
1,274,269✔
2318
  }
2319
  if (TSDB_CODE_SUCCESS == code) {
1,273,941!
2320
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
1,274,148✔
2321
  }
2322
  if (TSDB_CODE_SUCCESS == code) {
1,273,740!
2323
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
1,274,122✔
2324
  }
2325
  if (TSDB_CODE_SUCCESS == code) {
1,273,525✔
2326
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
1,273,418✔
2327
  }
2328
  if (TSDB_CODE_SUCCESS == code) {
1,274,061✔
2329
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
1,274,025✔
2330
  }
2331
  if (TSDB_CODE_SUCCESS == code) {
1,274,112✔
2332
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
1,274,087✔
2333
  }
2334
  if (TSDB_CODE_SUCCESS == code) {
1,274,358✔
2335
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
1,274,338✔
2336
  }
2337
  if (TSDB_CODE_SUCCESS == code) {
1,274,284✔
2338
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
1,273,841✔
2339
  }
2340
  if (TSDB_CODE_SUCCESS == code) {
1,274,472✔
2341
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
1,274,053✔
2342
  }
2343
  if (TSDB_CODE_SUCCESS == code) {
1,274,329✔
2344
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
1,273,944✔
2345
  }
2346
  if (TSDB_CODE_SUCCESS == code) {
1,274,744✔
2347
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
1,274,391✔
2348
  }
2349
  if (TSDB_CODE_SUCCESS == code) {
1,274,726✔
2350
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
1,274,195✔
2351
  }
2352
  if (TSDB_CODE_SUCCESS == code) {
1,275,119✔
2353
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
1,274,624✔
2354
  }
2355
  if (TSDB_CODE_SUCCESS == code) {
1,275,058✔
2356
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
1,274,588✔
2357
  }
2358
  if (TSDB_CODE_SUCCESS == code) {
1,275,167✔
2359
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
1,274,721✔
2360
  }
2361
  if (TSDB_CODE_SUCCESS == code) {
1,275,366✔
2362
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
1,274,668✔
2363
  }
2364
  if (TSDB_CODE_SUCCESS == code) {
1,275,532✔
2365
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
1,274,898✔
2366
  }
2367
  if (TSDB_CODE_SUCCESS == code) {
1,275,703✔
2368
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
1,275,076✔
2369
  }
2370
  if (TSDB_CODE_SUCCESS == code) {
1,275,232✔
2371
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
1,274,646✔
2372
  }
2373
  if (TSDB_CODE_SUCCESS == code) {
1,275,184✔
2374
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
1,274,392✔
2375
  }
2376
  return code;
1,274,623✔
2377
}
2378

2379
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
1,274,791✔
2380
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,274,791✔
2381

2382
  int32_t code = TSDB_CODE_SUCCESS;
1,274,791✔
2383
  STlv*   pTlv = NULL;
1,274,791✔
2384
  tlvForEach(pDecoder, pTlv, code) {
4,110,813!
2385
    switch (pTlv->type) {
2,836,917!
2386
      case PHY_TABLE_SCAN_CODE_SCAN:
1,275,066✔
2387
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
1,275,066✔
2388
        break;
1,273,364✔
2389
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
1,274,076✔
2390
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
1,274,076✔
2391
        break;
1,274,604✔
2392
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2393
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2394
        break;
×
2395
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
287,775✔
2396
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
287,775✔
2397
        break;
288,054✔
2398
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2399
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2400
        break;
×
2401
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2402
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2403
        break;
×
2404
      default:
×
2405
        break;
×
2406
    }
2407
  }
2408

2409
  return code;
1,274,401✔
2410
}
2411

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

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

2423
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
35,234✔
2424
  if (TSDB_CODE_SUCCESS == code) {
35,208!
2425
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
35,210✔
2426
  }
2427
  if (TSDB_CODE_SUCCESS == code) {
35,224!
2428
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
35,226✔
2429
  }
2430
  if (TSDB_CODE_SUCCESS == code) {
35,224!
2431
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
35,226✔
2432
  }
2433
  if (TSDB_CODE_SUCCESS == code) {
35,229!
2434
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
35,230✔
2435
  }
2436

2437
  return code;
35,235✔
2438
}
2439

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

2443
  int32_t code = TSDB_CODE_SUCCESS;
35,365✔
2444
  STlv*   pTlv = NULL;
35,365✔
2445
  tlvForEach(pDecoder, pTlv, code) {
212,284!
2446
    switch (pTlv->type) {
176,920!
2447
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
35,382✔
2448
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
35,382✔
2449
        break;
35,376✔
2450
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
35,376✔
2451
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
35,376✔
2452
        break;
35,387✔
2453
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
35,390✔
2454
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
35,390✔
2455
        break;
35,388✔
2456
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
35,387✔
2457
        code = tlvDecodeI32(pTlv, &pNode->accountId);
35,387✔
2458
        break;
35,387✔
2459
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
35,385✔
2460
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
35,385✔
2461
        break;
35,381✔
2462
      default:
×
2463
        break;
×
2464
    }
2465
  }
2466

2467
  return code;
35,369✔
2468
}
2469

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

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

2481
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
520,146✔
2482
  if (TSDB_CODE_SUCCESS == code) {
519,890!
2483
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
519,896✔
2484
  }
2485
  if (TSDB_CODE_SUCCESS == code) {
519,687✔
2486
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
519,683✔
2487
  }
2488
  if (TSDB_CODE_SUCCESS == code) {
519,736!
2489
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
519,737✔
2490
  }
2491
  if (TSDB_CODE_SUCCESS == code) {
519,707!
2492
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
519,709✔
2493
  }
2494

2495
  return code;
519,712✔
2496
}
2497

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

2501
  int32_t code = TSDB_CODE_SUCCESS;
570,202✔
2502
  STlv*   pTlv = NULL;
570,202✔
2503
  tlvForEach(pDecoder, pTlv, code) {
3,421,748!
2504
    switch (pTlv->type) {
2,851,624!
2505
      case PHY_PROJECT_CODE_BASE_NODE:
570,382✔
2506
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
570,382✔
2507
        break;
570,150✔
2508
      case PHY_PROJECT_CODE_PROJECTIONS:
570,221✔
2509
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
570,221✔
2510
        break;
570,499✔
2511
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
570,426✔
2512
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
570,426✔
2513
        break;
570,321✔
2514
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
570,310✔
2515
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
570,310✔
2516
        break;
570,295✔
2517
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
570,285✔
2518
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
570,285✔
2519
        break;
570,281✔
2520
      default:
×
2521
        break;
×
2522
    }
2523
  }
2524

2525
  return code;
569,911✔
2526
}
2527

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

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

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

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

2623
  int32_t code = TSDB_CODE_SUCCESS;
89,773✔
2624
  STlv*   pTlv = NULL;
89,773✔
2625
  tlvForEach(pDecoder, pTlv, code) {
1,317,865!
2626
    switch (pTlv->type) {
1,228,102!
2627
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
89,773✔
2628
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
89,773✔
2629
        break;
89,753✔
2630
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
89,749✔
2631
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
89,749✔
2632
        break;
89,746✔
2633
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
89,749✔
2634
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
89,749✔
2635
        break;
89,743✔
2636
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
668✔
2637
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
668✔
2638
        break;
668✔
2639
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
174✔
2640
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
174✔
2641
        break;
174✔
2642
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
89,742✔
2643
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
89,742✔
2644
        break;
89,743✔
2645
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
249✔
2646
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
249✔
2647
        break;
249✔
2648
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
159✔
2649
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
159✔
2650
        break;
159✔
2651
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
89,740✔
2652
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
89,740✔
2653
        break;
89,742✔
2654
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
89,740✔
2655
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
89,740✔
2656
        break;
89,743✔
2657
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
225✔
2658
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
225✔
2659
        break;
225✔
2660
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
225✔
2661
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
225✔
2662
        break;
225✔
2663
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
29,745✔
2664
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
29,745✔
2665
        break;
29,745✔
2666
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
29,874✔
2667
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
29,874✔
2668
        break;
29,874✔
2669
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
89,743✔
2670
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
89,743✔
2671
        break;
89,775✔
2672
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
89,769✔
2673
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
89,769✔
2674
        break;
89,764✔
2675
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
89,762✔
2676
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
89,762✔
2677
        break;
89,754✔
2678
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
89,755✔
2679
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
89,755✔
2680
        break;
89,754✔
2681
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
89,754✔
2682
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
89,754✔
2683
        break;
89,749✔
2684
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
89,754✔
2685
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
89,754✔
2686
        break;
89,753✔
2687
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
89,753✔
2688
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
89,753✔
2689
        break;
89,754✔
2690
      default:
×
2691
        break;
×
2692
    }
2693
  }
2694

2695
  return code;
89,735✔
2696
}
2697

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

2720
};
2721

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

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

2784
  return code;
9,140✔
2785
}
2786

2787

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

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

2860
  return code;
9,149✔
2861
}
2862

2863

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

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

2877
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
635,717✔
2878
  if (TSDB_CODE_SUCCESS == code) {
635,451!
2879
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
635,456✔
2880
  }
2881
  if (TSDB_CODE_SUCCESS == code) {
635,242!
2882
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
635,255✔
2883
  }
2884
  if (TSDB_CODE_SUCCESS == code) {
635,202!
2885
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
635,219✔
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
634,874!
2888
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
634,904✔
2889
  }
2890
  if (TSDB_CODE_SUCCESS == code) {
634,955!
2891
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
634,988✔
2892
  }
2893
  if (TSDB_CODE_SUCCESS == code) {
634,806!
2894
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
634,841✔
2895
  }
2896

2897
  return code;
634,853✔
2898
}
2899

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

2903
  int32_t code = TSDB_CODE_SUCCESS;
695,292✔
2904
  STlv*   pTlv = NULL;
695,292✔
2905
  tlvForEach(pDecoder, pTlv, code) {
4,429,530!
2906
    switch (pTlv->type) {
3,734,310!
2907
      case PHY_AGG_CODE_BASE_NODE:
695,501✔
2908
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
695,501✔
2909
        break;
695,138✔
2910
      case PHY_AGG_CODE_EXPR:
238,507✔
2911
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
238,507✔
2912
        break;
238,685✔
2913
      case PHY_AGG_CODE_GROUP_KEYS:
220,384✔
2914
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
220,384✔
2915
        break;
220,417✔
2916
      case PHY_AGG_CODE_AGG_FUNCS:
493,853✔
2917
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
493,853✔
2918
        break;
494,128✔
2919
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
695,504✔
2920
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
695,504✔
2921
        break;
695,344✔
2922
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
695,311✔
2923
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
695,311✔
2924
        break;
695,284✔
2925
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
695,250✔
2926
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
695,250✔
2927
        break;
695,242✔
2928
      default:
×
2929
        break;
×
2930
    }
2931
  }
2932

2933
  return code;
694,672✔
2934
}
2935

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

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

2948
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
659,035✔
2949
  if (TSDB_CODE_SUCCESS == code) {
659,017!
2950
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
659,017✔
2951
  }
2952
  if (TSDB_CODE_SUCCESS == code) {
659,011!
2953
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
659,012✔
2954
  }
2955
  if (TSDB_CODE_SUCCESS == code) {
659,011!
2956
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
659,013✔
2957
  }
2958
  if (TSDB_CODE_SUCCESS == code) {
659,007✔
2959
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
659,006✔
2960
  }
2961
  if (TSDB_CODE_SUCCESS == code) {
659,006!
2962
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
659,006✔
2963
  }
2964

2965
  return code;
659,014✔
2966
}
2967

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

2971
  int32_t code = TSDB_CODE_SUCCESS;
690,808✔
2972
  STlv*   pTlv = NULL;
690,808✔
2973
  tlvForEach(pDecoder, pTlv, code) {
4,835,381!
2974
    switch (pTlv->type) {
4,144,602!
2975
      case PHY_EXCHANGE_CODE_BASE_NODE:
690,848✔
2976
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
690,848✔
2977
        break;
690,721✔
2978
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
690,750✔
2979
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
690,750✔
2980
        break;
690,728✔
2981
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
690,720✔
2982
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
690,720✔
2983
        break;
690,721✔
2984
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
690,726✔
2985
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
690,726✔
2986
        break;
690,722✔
2987
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
690,720✔
2988
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
690,720✔
2989
        break;
690,872✔
2990
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
690,838✔
2991
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
690,838✔
2992
        break;
690,809✔
2993
      default:
×
2994
        break;
×
2995
    }
2996
  }
2997

2998
  return code;
690,657✔
2999
}
3000

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

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

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

3042
  return code;
77,657✔
3043
}
3044

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

3048
  int32_t code = TSDB_CODE_SUCCESS;
77,184✔
3049
  STlv*   pTlv = NULL;
77,184✔
3050
  tlvForEach(pDecoder, pTlv, code) {
769,536!
3051
    switch (pTlv->type) {
692,359!
3052
      case PHY_MERGE_CODE_BASE_NODE:
77,186✔
3053
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
77,186✔
3054
        break;
77,179✔
3055
      case PHY_MERGE_CODE_MERGE_KEYS:
74,908✔
3056
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
74,908✔
3057
        break;
74,912✔
3058
      case PHY_MERGE_CODE_TARGETS:
77,184✔
3059
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
77,184✔
3060
        break;
77,186✔
3061
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
77,184✔
3062
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
77,184✔
3063
        break;
77,181✔
3064
      case PHY_MERGE_CODE_SRC_GROUP_ID:
77,181✔
3065
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
77,181✔
3066
        break;
77,180✔
3067
      case PHY_MERGE_CODE_GROUP_SORT:
77,181✔
3068
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
77,181✔
3069
        break;
77,180✔
3070
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
77,179✔
3071
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
77,179✔
3072
        break;
77,178✔
3073
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
77,178✔
3074
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
77,178✔
3075
        break;
77,178✔
3076
      case PHY_MERGE_CODE_TYPE:
77,178✔
3077
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
77,178✔
3078
        break;
77,178✔
3079
      default:
×
3080
        break;
×
3081
    }
3082
  }
3083

3084
  return code;
77,158✔
3085
}
3086

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

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

3099
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
163,440✔
3100
  if (TSDB_CODE_SUCCESS == code) {
163,419!
3101
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
163,421✔
3102
  }
3103
  if (TSDB_CODE_SUCCESS == code) {
163,419✔
3104
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
163,416✔
3105
  }
3106
  if (TSDB_CODE_SUCCESS == code) {
163,427✔
3107
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
163,424✔
3108
  }
3109
  if (TSDB_CODE_SUCCESS == code) {
163,404✔
3110
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
163,401✔
3111
  }
3112
  if (TSDB_CODE_SUCCESS == code) {
163,413✔
3113
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
163,410✔
3114
  }
3115

3116
  return code;
163,409✔
3117
}
3118

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

3122
  int32_t code = TSDB_CODE_SUCCESS;
168,331✔
3123
  STlv*   pTlv = NULL;
168,331✔
3124
  tlvForEach(pDecoder, pTlv, code) {
1,010,253!
3125
    switch (pTlv->type) {
841,592!
3126
      case PHY_SORT_CODE_BASE_NODE:
168,350✔
3127
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
168,350✔
3128
        break;
168,335✔
3129
      case PHY_SORT_CODE_EXPR:
120✔
3130
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
120✔
3131
        break;
121✔
3132
      case PHY_SORT_CODE_SORT_KEYS:
168,325✔
3133
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
168,325✔
3134
        break;
168,392✔
3135
      case PHY_SORT_CODE_TARGETS:
168,384✔
3136
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
168,384✔
3137
        break;
168,380✔
3138
      case PHY_SORT_CODE_CALC_GROUPID:
168,369✔
3139
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
168,369✔
3140
        break;
168,352✔
3141
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
168,347✔
3142
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
168,347✔
3143
      default:
168,342✔
3144
        break;
168,342✔
3145
    }
3146
  }
3147

3148
  return code;
168,620✔
3149
}
3150

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

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

3170
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
89,729✔
3171
  if (TSDB_CODE_SUCCESS == code) {
89,679!
3172
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
89,679✔
3173
  }
3174
  if (TSDB_CODE_SUCCESS == code) {
89,682!
3175
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
89,684✔
3176
  }
3177
  if (TSDB_CODE_SUCCESS == code) {
89,637!
3178
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
89,640✔
3179
  }
3180
  if (TSDB_CODE_SUCCESS == code) {
89,608!
3181
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
89,610✔
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
89,611!
3184
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
89,616✔
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
89,688!
3187
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
89,694✔
3188
  }
3189
  if (TSDB_CODE_SUCCESS == code) {
89,679!
3190
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
89,686✔
3191
  }
3192
  if (TSDB_CODE_SUCCESS == code) {
89,646!
3193
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
89,662✔
3194
  }
3195
  if (TSDB_CODE_SUCCESS == code) {
89,659!
3196
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
89,676✔
3197
  }
3198
  if (TSDB_CODE_SUCCESS == code) {
89,655!
3199
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY, pNode->destHasPrimaryKey);
89,672✔
3200
  }
3201

3202
  return code;
89,673✔
3203
}
3204

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

3208
  int32_t code = TSDB_CODE_SUCCESS;
91,484✔
3209
  STlv*   pTlv = NULL;
91,484✔
3210
  tlvForEach(pDecoder, pTlv, code) {
926,802!
3211
    switch (pTlv->type) {
835,320!
3212
      case PHY_WINDOW_CODE_BASE_NODE:
91,487✔
3213
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
91,487✔
3214
        break;
91,467✔
3215
      case PHY_WINDOW_CODE_EXPR:
8,141✔
3216
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
8,141✔
3217
        break;
8,149✔
3218
      case PHY_WINDOW_CODE_FUNCS:
91,465✔
3219
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
91,465✔
3220
        break;
91,499✔
3221
      case PHY_WINDOW_CODE_TS_PK:
91,494✔
3222
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
91,494✔
3223
        break;
91,504✔
3224
      case PHY_WINDOW_CODE_TS_END:
3,903✔
3225
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
3,903✔
3226
        break;
3,903✔
3227
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
91,502✔
3228
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
91,502✔
3229
        break;
91,494✔
3230
      case PHY_WINDOW_CODE_WATERMARK:
91,483✔
3231
        code = tlvDecodeI64(pTlv, &pNode->watermark);
91,483✔
3232
        break;
91,476✔
3233
      case PHY_WINDOW_CODE_DELETE_MARK:
91,469✔
3234
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
91,469✔
3235
        break;
91,464✔
3236
      case PHY_WINDOW_CODE_IG_EXPIRED:
91,463✔
3237
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
91,463✔
3238
        break;
91,459✔
3239
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
91,459✔
3240
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
91,459✔
3241
        break;
91,451✔
3242
      case PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY:
91,454✔
3243
        code = tlvDecodeI8(pTlv, &pNode->destHasPrimaryKey);
91,454✔
3244
        break;
91,452✔
3245
      default:
×
3246
        break;
×
3247
    }
3248
  }
3249

3250
  return code;
91,436✔
3251
}
3252

3253
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS };
3254

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

3258
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
79,869✔
3259
  if (TSDB_CODE_SUCCESS == code) {
79,858!
3260
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
79,860✔
3261
  }
3262
  if (TSDB_CODE_SUCCESS == code) {
79,818!
3263
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
79,825✔
3264
  }
3265
  if (TSDB_CODE_SUCCESS == code) {
79,793!
3266
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
79,803✔
3267
  }
3268
  if (TSDB_CODE_SUCCESS == code) {
79,822!
3269
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
79,828✔
3270
  }
3271

3272
  return code;
79,837✔
3273
}
3274

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

3278
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
79,917✔
3279
  if (TSDB_CODE_SUCCESS == code) {
79,870!
3280
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
79,871✔
3281
  }
3282

3283
  return code;
79,845✔
3284
}
3285

3286
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
81,111✔
3287
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
81,111✔
3288

3289
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
81,111✔
3290
  if (TSDB_CODE_SUCCESS == code) {
81,117!
3291
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
81,117✔
3292
  }
3293
  if (TSDB_CODE_SUCCESS == code) {
81,113!
3294
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
81,113✔
3295
  }
3296
  if (TSDB_CODE_SUCCESS == code) {
81,103!
3297
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
81,103✔
3298
  }
3299
  if (TSDB_CODE_SUCCESS == code) {
81,115✔
3300
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
81,110✔
3301
  }
3302

3303
  return code;
81,110✔
3304
}
3305

3306
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
81,136✔
3307
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
81,136✔
3308

3309
  int32_t code = TSDB_CODE_SUCCESS;
81,136✔
3310
  STlv*   pTlv = NULL;
81,136✔
3311
  tlvForEach(pDecoder, pTlv, code) {
243,355!
3312
    switch (pTlv->type) {
162,263!
3313
      case PHY_INTERVAL_CODE_WINDOW:
81,150✔
3314
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
81,150✔
3315
        break;
81,108✔
3316
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
81,113✔
3317
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
81,113✔
3318
        break;
81,111✔
3319
      default:
×
3320
        break;
×
3321
    }
3322
  }
3323

3324
  return code;
81,091✔
3325
}
3326

3327
enum {
3328
  PHY_FILL_CODE_BASE_NODE = 1,
3329
  PHY_FILL_CODE_MODE,
3330
  PHY_FILL_CODE_FILL_EXPRS,
3331
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3332
  PHY_FILL_CODE_WSTART,
3333
  PHY_FILL_CODE_VALUES,
3334
  PHY_FILL_CODE_TIME_RANGE,
3335
  PHY_FILL_CODE_INPUT_TS_ORDER,
3336
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3337
};
3338

3339
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,381✔
3340
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
14,381✔
3341

3342
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
14,381✔
3343
  if (TSDB_CODE_SUCCESS == code) {
14,374!
3344
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
14,374✔
3345
  }
3346
  if (TSDB_CODE_SUCCESS == code) {
14,375!
3347
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
14,375✔
3348
  }
3349
  if (TSDB_CODE_SUCCESS == code) {
14,373!
3350
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
14,373✔
3351
  }
3352
  if (TSDB_CODE_SUCCESS == code) {
14,374!
3353
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
14,374✔
3354
  }
3355
  if (TSDB_CODE_SUCCESS == code) {
14,370!
3356
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
14,371✔
3357
  }
3358
  if (TSDB_CODE_SUCCESS == code) {
14,370!
3359
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
14,371✔
3360
  }
3361
  if (TSDB_CODE_SUCCESS == code) {
14,371!
3362
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
14,372✔
3363
  }
3364

3365
  return code;
14,373✔
3366
}
3367

3368
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
14,343✔
3369
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
14,343✔
3370

3371
  int32_t code = TSDB_CODE_SUCCESS;
14,343✔
3372
  STlv*   pTlv = NULL;
14,343✔
3373
  tlvForEach(pDecoder, pTlv, code) {
100,565!
3374
    switch (pTlv->type) {
86,223!
3375
      case PHY_FILL_CODE_BASE_NODE:
14,344✔
3376
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
14,344✔
3377
        break;
14,345✔
3378
      case PHY_FILL_CODE_MODE:
14,345✔
3379
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
14,345✔
3380
        break;
14,345✔
3381
      case PHY_FILL_CODE_FILL_EXPRS:
14,346✔
3382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
14,346✔
3383
        break;
14,346✔
3384
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
14,116✔
3385
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
14,116✔
3386
        break;
14,120✔
3387
      case PHY_FILL_CODE_WSTART:
14,348✔
3388
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
14,348✔
3389
        break;
14,340✔
3390
      case PHY_FILL_CODE_VALUES:
343✔
3391
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
343✔
3392
        break;
344✔
3393
      case PHY_FILL_CODE_TIME_RANGE:
14,342✔
3394
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
14,342✔
3395
        break;
14,342✔
3396
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
39✔
3397
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
39✔
3398
        break;
40✔
3399
      default:
×
3400
        break;
×
3401
    }
3402
  }
3403

3404
  return code;
14,335✔
3405
}
3406

3407
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3408

3409
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,902✔
3410
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
3,902✔
3411

3412
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
3,902✔
3413
  if (TSDB_CODE_SUCCESS == code) {
3,902!
3414
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
3,902✔
3415
  }
3416

3417
  return code;
3,902✔
3418
}
3419

3420
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
3,903✔
3421
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
3,903✔
3422

3423
  int32_t code = TSDB_CODE_SUCCESS;
3,903✔
3424
  STlv*   pTlv = NULL;
3,903✔
3425
  tlvForEach(pDecoder, pTlv, code) {
11,709!
3426
    switch (pTlv->type) {
7,806!
3427
      case PHY_SESSION_CODE_WINDOW:
3,903✔
3428
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
3,903✔
3429
        break;
3,903✔
3430
      case PHY_SESSION_CODE_GAP:
3,903✔
3431
        code = tlvDecodeI64(pTlv, &pNode->gap);
3,903✔
3432
        break;
3,903✔
3433
      default:
×
3434
        break;
×
3435
    }
3436
  }
3437

3438
  return code;
3,903✔
3439
}
3440

3441
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY };
3442

3443
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,789✔
3444
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
5,789✔
3445

3446
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
5,789✔
3447
  if (TSDB_CODE_SUCCESS == code) {
5,789!
3448
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
5,789✔
3449
  }
3450

3451
  return code;
5,789✔
3452
}
3453

3454
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
6,327✔
3455
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
6,327✔
3456

3457
  int32_t code = TSDB_CODE_SUCCESS;
6,327✔
3458
  STlv*   pTlv = NULL;
6,327✔
3459
  tlvForEach(pDecoder, pTlv, code) {
18,981!
3460
    switch (pTlv->type) {
12,654!
3461
      case PHY_STATE_CODE_WINDOW:
6,327✔
3462
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
6,327✔
3463
        break;
6,327✔
3464
      case PHY_STATE_CODE_KEY:
6,327✔
3465
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
6,327✔
3466
        break;
6,327✔
3467
      default:
×
3468
        break;
×
3469
    }
3470
  }
3471

3472
  return code;
6,327✔
3473
}
3474

3475
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND };
3476

3477
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
62✔
3478
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
62✔
3479

3480
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
62✔
3481
  if (TSDB_CODE_SUCCESS == code) {
62!
3482
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
62✔
3483
  }
3484
  if (TSDB_CODE_SUCCESS == code) {
62!
3485
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
62✔
3486
  }
3487

3488
  return code;
62✔
3489
}
3490

3491
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
70✔
3492
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
70✔
3493

3494
  int32_t code = TSDB_CODE_SUCCESS;
70✔
3495
  STlv*   pTlv = NULL;
70✔
3496
  tlvForEach(pDecoder, pTlv, code) {
280!
3497
    switch (pTlv->type) {
210!
3498
      case PHY_EVENT_CODE_WINDOW:
70✔
3499
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
70✔
3500
        break;
70✔
3501
      case PHY_EVENT_CODE_START_COND:
70✔
3502
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
70✔
3503
        break;
70✔
3504
      case PHY_EVENT_CODE_END_COND:
70✔
3505
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
70✔
3506
        break;
70✔
3507
      default:
×
3508
        break;
×
3509
    }
3510
  }
3511

3512
  return code;
70✔
3513
}
3514

3515
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3516

3517
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
45✔
3518
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
45✔
3519

3520
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
45✔
3521
  if (TSDB_CODE_SUCCESS == code) {
45!
3522
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
45✔
3523
  }
3524
  if (TSDB_CODE_SUCCESS == code) {
45!
3525
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
45✔
3526
  }
3527

3528
  return code;
45✔
3529
}
3530

3531
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
41✔
3532
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
41✔
3533

3534
  int32_t code = TSDB_CODE_SUCCESS;
41✔
3535
  STlv*   pTlv = NULL;
41✔
3536
  tlvForEach(pDecoder, pTlv, code) {
164!
3537
    switch (pTlv->type) {
123!
3538
      case PHY_COUNT_CODE_WINDOW:
41✔
3539
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
41✔
3540
        break;
41✔
3541
      case PHY_COUNT_CODE_WINDOW_COUNT:
41✔
3542
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
41✔
3543
        break;
41✔
3544
      case PHY_COUNT_CODE_WINDOW_SLIDING:
41✔
3545
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
41✔
3546
        break;
41✔
3547
      default:
×
3548
        break;
×
3549
    }
3550
  }
3551

3552
  return code;
41✔
3553
}
3554

3555
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3556

3557
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3558
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3559

3560
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3561
  if (TSDB_CODE_SUCCESS == code) {
×
3562
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3563
  }
3564
  if (TSDB_CODE_SUCCESS == code) {
×
3565
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3566
  }
3567

3568
  return code;
×
3569
}
3570

3571
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3572
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3573

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

3592
  return code;
×
3593
}
3594

3595
enum {
3596
  PHY_PARTITION_CODE_BASE_NODE = 1,
3597
  PHY_PARTITION_CODE_EXPR,
3598
  PHY_PARTITION_CODE_KEYS,
3599
  PHY_PARTITION_CODE_TARGETS,
3600
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3601
  PHY_PARTITION_CODE_TS_SLOTID
3602
};
3603

3604
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,428✔
3605
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
14,428✔
3606

3607
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
14,428✔
3608
  if (TSDB_CODE_SUCCESS == code) {
14,410!
3609
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
14,410✔
3610
  }
3611
  if (TSDB_CODE_SUCCESS == code) {
14,413✔
3612
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
14,412✔
3613
  }
3614
  if (TSDB_CODE_SUCCESS == code) {
14,410✔
3615
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
14,409✔
3616
  }
3617
  if (TSDB_CODE_SUCCESS == code) {
14,409✔
3618
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
14,408✔
3619
  }
3620
  if (TSDB_CODE_SUCCESS == code) {
14,412✔
3621
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
14,411✔
3622
  }
3623

3624
  return code;
14,413✔
3625
}
3626

3627
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
14,022✔
3628
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
14,022✔
3629

3630
  int32_t code = TSDB_CODE_SUCCESS;
14,022✔
3631
  STlv*   pTlv = NULL;
14,022✔
3632
  tlvForEach(pDecoder, pTlv, code) {
85,300✔
3633
    switch (pTlv->type) {
71,277!
3634
      case PHY_PARTITION_CODE_BASE_NODE:
14,020✔
3635
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
14,020✔
3636
        break;
14,020✔
3637
      case PHY_PARTITION_CODE_EXPR:
1,168✔
3638
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
1,168✔
3639
        break;
1,168✔
3640
      case PHY_PARTITION_CODE_KEYS:
14,020✔
3641
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
14,020✔
3642
        break;
14,025✔
3643
      case PHY_PARTITION_CODE_TARGETS:
14,024✔
3644
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
14,024✔
3645
        break;
14,025✔
3646
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
14,024✔
3647
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
14,024✔
3648
        break;
14,020✔
3649
      case PHY_PARTITION_CODE_TS_SLOTID:
14,021✔
3650
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
14,021✔
3651
        break;
14,020✔
3652
      default:
×
3653
        break;
×
3654
    }
3655
  }
3656

3657
  return code;
14,022✔
3658
}
3659

3660
enum { PHY_STREAM_PARTITION_CODE_BASE_NODE = 1, PHY_STREAM_PARTITION_CODE_TAGS, PHY_STREAM_PARTITION_CODE_SUBTABLE };
3661

3662
static int32_t physiStreamPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3663
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
×
3664

3665
  int32_t code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_BASE_NODE, physiPartitionNodeToMsg, &pNode->part);
×
3666
  if (TSDB_CODE_SUCCESS == code) {
×
3667
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_TAGS, nodeListToMsg, pNode->pTags);
×
3668
  }
3669
  if (TSDB_CODE_SUCCESS == code) {
×
3670
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
×
3671
  }
3672

3673
  return code;
×
3674
}
3675

3676
static int32_t msgToPhysiStreamPartitionNode(STlvDecoder* pDecoder, void* pObj) {
×
3677
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
×
3678

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

3697
  return code;
×
3698
}
3699

3700
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
3701

3702
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
22,216✔
3703
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
22,216✔
3704

3705
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
22,216✔
3706
  if (TSDB_CODE_SUCCESS == code) {
22,214!
3707
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
22,214✔
3708
  }
3709
  if (TSDB_CODE_SUCCESS == code) {
22,215!
3710
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
22,215✔
3711
  }
3712

3713
  return code;
22,208✔
3714
}
3715

3716
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
24,436✔
3717
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
24,436✔
3718

3719
  int32_t code = TSDB_CODE_SUCCESS;
24,436✔
3720
  STlv*   pTlv = NULL;
24,436✔
3721
  tlvForEach(pDecoder, pTlv, code) {
73,422!
3722
    switch (pTlv->type) {
48,986!
3723
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
24,439✔
3724
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
24,439✔
3725
        break;
24,427✔
3726
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
120✔
3727
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
120✔
3728
        break;
120✔
3729
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
24,427✔
3730
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
24,427✔
3731
        break;
24,439✔
3732
      default:
×
3733
        break;
×
3734
    }
3735
  }
3736

3737
  return code;
24,435✔
3738
}
3739

3740
enum {
3741
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
3742
  PHY_INERP_FUNC_CODE_EXPR,
3743
  PHY_INERP_FUNC_CODE_FUNCS,
3744
  PHY_INERP_FUNC_CODE_TIME_RANGE,
3745
  PHY_INERP_FUNC_CODE_INTERVAL,
3746
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
3747
  PHY_INERP_FUNC_CODE_FILL_MODE,
3748
  PHY_INERP_FUNC_CODE_FILL_VALUES,
3749
  PHY_INERP_FUNC_CODE_TIME_SERIES
3750
};
3751

3752
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,362✔
3753
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
2,362✔
3754

3755
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
2,362✔
3756
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3757
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
2,362✔
3758
  }
3759
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3760
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
2,362✔
3761
  }
3762
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3763
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
2,362✔
3764
  }
3765
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3766
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
2,362✔
3767
  }
3768
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3769
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
2,362✔
3770
  }
3771
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3772
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
2,362✔
3773
  }
3774
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3775
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
2,362✔
3776
  }
3777
  if (TSDB_CODE_SUCCESS == code) {
2,362!
3778
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
2,362✔
3779
  }
3780

3781
  return code;
2,362✔
3782
}
3783

3784
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
3,002✔
3785
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
3,002✔
3786

3787
  int32_t code = TSDB_CODE_SUCCESS;
3,002✔
3788
  STlv*   pTlv = NULL;
3,002✔
3789
  tlvForEach(pDecoder, pTlv, code) {
25,472!
3790
    switch (pTlv->type) {
22,470!
3791
      case PHY_INERP_FUNC_CODE_BASE_NODE:
3,002✔
3792
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,002✔
3793
        break;
3,002✔
3794
      case PHY_INERP_FUNC_CODE_EXPR:
611✔
3795
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
611✔
3796
        break;
611✔
3797
      case PHY_INERP_FUNC_CODE_FUNCS:
3,002✔
3798
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
3,002✔
3799
        break;
3,002✔
3800
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
3,002✔
3801
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
3,002✔
3802
        break;
3,002✔
3803
      case PHY_INERP_FUNC_CODE_INTERVAL:
3,002✔
3804
        code = tlvDecodeI64(pTlv, &pNode->interval);
3,002✔
3805
        break;
3,002✔
3806
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
3,002✔
3807
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
3,002✔
3808
        break;
3,002✔
3809
      case PHY_INERP_FUNC_CODE_FILL_MODE:
3,002✔
3810
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
3,002✔
3811
        break;
3,002✔
3812
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
845✔
3813
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
845✔
3814
        break;
845✔
3815
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
3,002✔
3816
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
3,002✔
3817
        break;
3,002✔
3818
      default:
×
3819
        break;
×
3820
    }
3821
  }
3822

3823
  return code;
3,002✔
3824
}
3825

3826
enum {
3827
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
3828
  PHY_FORECAST_FUNC_CODE_EXPR,
3829
  PHY_FORECAST_FUNC_CODE_FUNCS,
3830
};
3831

3832
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3833
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3834

3835
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
3836
  if (TSDB_CODE_SUCCESS == code) {
×
3837
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
3838
  }
3839
  if (TSDB_CODE_SUCCESS == code) {
×
3840
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
3841
  }
3842

3843
  return code;
×
3844
}
3845

3846
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
3847
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3848

3849
  int32_t code = TSDB_CODE_SUCCESS;
×
3850
  STlv*   pTlv = NULL;
×
3851
  tlvForEach(pDecoder, pTlv, code) {
×
3852
    switch (pTlv->type) {
×
3853
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
×
3854
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
×
3855
        break;
×
3856
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
3857
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
3858
        break;
×
3859
      case PHY_FORECAST_FUNC_CODE_FUNCS:
×
3860
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
×
3861
        break;
×
3862
      default:
×
3863
        break;
×
3864
    }
3865
  }
3866

3867
  return code;
×
3868
}
3869

3870
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
3871

3872
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,694,135✔
3873
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
1,694,135✔
3874
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
1,694,135✔
3875
}
3876

3877
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
1,822,929✔
3878
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
1,822,929✔
3879

3880
  int32_t code = TSDB_CODE_SUCCESS;
1,822,929✔
3881
  STlv*   pTlv = NULL;
1,822,929✔
3882
  tlvForEach(pDecoder, pTlv, code) {
3,646,220!
3883
    switch (pTlv->type) {
1,822,927!
3884
      case PHY_DATA_SINK_CODE_INPUT_DESC:
1,822,927✔
3885
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
1,822,927✔
3886
        break;
1,823,291✔
3887
      default:
×
3888
        break;
×
3889
    }
3890
  }
3891

3892
  return code;
1,823,047✔
3893
}
3894

3895
enum { PHY_DISPATCH_CODE_SINK = 1 };
3896

3897
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,684,905✔
3898
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
1,684,905✔
3899
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,684,905✔
3900
}
3901

3902
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
1,813,297✔
3903
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
1,813,297✔
3904

3905
  int32_t code = TSDB_CODE_SUCCESS;
1,813,297✔
3906
  STlv*   pTlv = NULL;
1,813,297✔
3907
  tlvForEach(pDecoder, pTlv, code) {
3,626,932!
3908
    switch (pTlv->type) {
1,814,223!
3909
      case PHY_DISPATCH_CODE_SINK:
1,814,223✔
3910
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,814,223✔
3911
        break;
1,813,635✔
3912
      default:
×
3913
        break;
×
3914
    }
3915
  }
3916

3917
  return code;
1,811,873✔
3918
}
3919

3920
enum {
3921
  PHY_QUERY_INSERT_CODE_SINK = 1,
3922
  PHY_QUERY_INSERT_CODE_COLS,
3923
  PHY_QUERY_INSERT_CODE_TABLE_ID,
3924
  PHY_QUERY_INSERT_CODE_STABLE_ID,
3925
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
3926
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
3927
  PHY_QUERY_INSERT_CODE_VG_ID,
3928
  PHY_QUERY_INSERT_CODE_EP_SET,
3929
  PHY_QUERY_INSERT_CODE_EXPLAIN
3930
};
3931

3932
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
162✔
3933
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
162✔
3934

3935
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
162✔
3936
  if (TSDB_CODE_SUCCESS == code) {
162!
3937
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
162✔
3938
  }
3939
  if (TSDB_CODE_SUCCESS == code) {
162!
3940
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
162✔
3941
  }
3942
  if (TSDB_CODE_SUCCESS == code) {
162!
3943
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
162✔
3944
  }
3945
  if (TSDB_CODE_SUCCESS == code) {
162!
3946
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
162✔
3947
  }
3948
  if (TSDB_CODE_SUCCESS == code) {
162!
3949
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
162✔
3950
  }
3951
  if (TSDB_CODE_SUCCESS == code) {
162!
3952
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
162✔
3953
  }
3954
  if (TSDB_CODE_SUCCESS == code) {
162!
3955
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
162✔
3956
  }
3957
  if (TSDB_CODE_SUCCESS == code) {
162!
3958
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
162✔
3959
  }
3960

3961
  return code;
162✔
3962
}
3963

3964
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
169✔
3965
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
169✔
3966

3967
  int32_t code = TSDB_CODE_SUCCESS;
169✔
3968
  STlv*   pTlv = NULL;
169✔
3969
  tlvForEach(pDecoder, pTlv, code) {
1,690!
3970
    switch (pTlv->type) {
1,521!
3971
      case PHY_QUERY_INSERT_CODE_SINK:
169✔
3972
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
169✔
3973
        break;
169✔
3974
      case PHY_QUERY_INSERT_CODE_COLS:
169✔
3975
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
169✔
3976
        break;
169✔
3977
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
169✔
3978
        code = tlvDecodeU64(pTlv, &pNode->tableId);
169✔
3979
        break;
169✔
3980
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
169✔
3981
        code = tlvDecodeU64(pTlv, &pNode->stableId);
169✔
3982
        break;
169✔
3983
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
169✔
3984
        code = tlvDecodeI8(pTlv, &pNode->tableType);
169✔
3985
        break;
169✔
3986
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
169✔
3987
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
169✔
3988
        break;
169✔
3989
      case PHY_QUERY_INSERT_CODE_VG_ID:
169✔
3990
        code = tlvDecodeI32(pTlv, &pNode->vgId);
169✔
3991
        break;
169✔
3992
      case PHY_QUERY_INSERT_CODE_EP_SET:
169✔
3993
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
169✔
3994
        break;
169✔
3995
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
169✔
3996
        code = tlvDecodeBool(pTlv, &pNode->explain);
169✔
3997
        break;
169✔
3998
      default:
×
3999
        break;
×
4000
    }
4001
  }
4002

4003
  return code;
169✔
4004
}
4005

4006
enum {
4007
  PHY_DELETER_CODE_SINK = 1,
4008
  PHY_DELETER_CODE_TABLE_ID,
4009
  PHY_DELETER_CODE_TABLE_TYPE,
4010
  PHY_DELETER_CODE_TABLE_FNAME,
4011
  PHY_DELETER_CODE_TS_COL_NAME,
4012
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4013
  PHY_DELETER_CODE_AFFECTED_ROWS,
4014
  PHY_DELETER_CODE_START_TS,
4015
  PHY_DELETER_CODE_END_TS
4016
};
4017

4018
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,225✔
4019
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
9,225✔
4020

4021
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
9,225✔
4022
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4023
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
9,225✔
4024
  }
4025
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4026
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
9,225✔
4027
  }
4028
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4029
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
9,225✔
4030
  }
4031
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4032
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
9,225✔
4033
  }
4034
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4035
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
9,225✔
4036
  }
4037
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4038
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
9,225✔
4039
  }
4040
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4041
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
9,225✔
4042
  }
4043
  if (TSDB_CODE_SUCCESS == code) {
9,225!
4044
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
9,225✔
4045
  }
4046

4047
  return code;
9,225✔
4048
}
4049

4050
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
9,008✔
4051
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
9,008✔
4052

4053
  int32_t code = TSDB_CODE_SUCCESS;
9,008✔
4054
  STlv*   pTlv = NULL;
9,008✔
4055
  tlvForEach(pDecoder, pTlv, code) {
90,080!
4056
    switch (pTlv->type) {
81,072!
4057
      case PHY_DELETER_CODE_SINK:
9,008✔
4058
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
9,008✔
4059
        break;
9,008✔
4060
      case PHY_DELETER_CODE_TABLE_ID:
9,008✔
4061
        code = tlvDecodeU64(pTlv, &pNode->tableId);
9,008✔
4062
        break;
9,008✔
4063
      case PHY_DELETER_CODE_TABLE_TYPE:
9,008✔
4064
        code = tlvDecodeI8(pTlv, &pNode->tableType);
9,008✔
4065
        break;
9,008✔
4066
      case PHY_DELETER_CODE_TABLE_FNAME:
9,008✔
4067
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
9,008✔
4068
        break;
9,008✔
4069
      case PHY_DELETER_CODE_TS_COL_NAME:
9,008✔
4070
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
9,008✔
4071
        break;
9,008✔
4072
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
9,008✔
4073
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
9,008✔
4074
        break;
9,008✔
4075
      case PHY_DELETER_CODE_AFFECTED_ROWS:
9,008✔
4076
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
9,008✔
4077
        break;
9,008✔
4078
      case PHY_DELETER_CODE_START_TS:
9,008✔
4079
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
9,008✔
4080
        break;
9,008✔
4081
      case PHY_DELETER_CODE_END_TS:
9,008✔
4082
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
9,008✔
4083
        break;
9,008✔
4084
      default:
×
4085
        break;
×
4086
    }
4087
  }
4088

4089
  return code;
9,008✔
4090
}
4091

4092
enum {
4093
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4094
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4095
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4096
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4097
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4098
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4099
};
4100

4101
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,140✔
4102
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
9,140✔
4103

4104
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,140✔
4105
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4106
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
9,140✔
4107
  }
4108
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4109
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
9,140✔
4110
  }
4111
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4112
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
9,140✔
4113
  }
4114
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4115
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
9,140✔
4116
  }
4117
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4118
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
9,140✔
4119
  }
4120

4121
  return code;
9,140✔
4122
}
4123

4124
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
9,149✔
4125
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
9,149✔
4126

4127
  int32_t code = TSDB_CODE_SUCCESS;
9,149✔
4128
  STlv*   pTlv = NULL;
9,149✔
4129
  tlvForEach(pDecoder, pTlv, code) {
54,894!
4130
    switch (pTlv->type) {
45,745!
4131
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
9,149✔
4132
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,149✔
4133
        break;
9,149✔
4134
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4135
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4136
        break;
×
4137
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
9,149✔
4138
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
9,149✔
4139
        break;    
9,149✔
4140
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
9,149✔
4141
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
9,149✔
4142
        break;    
9,149✔
4143
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
9,149✔
4144
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
9,149✔
4145
        break;    
9,149✔
4146
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
9,149✔
4147
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
9,149✔
4148
        break;    
9,149✔
4149
      default:
×
4150
        break;
×
4151
    }
4152
  }
4153

4154
  return code;
9,149✔
4155
}
4156

4157

4158
enum {
4159
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4160
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4161
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4162
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4163
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4164
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4165
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4166
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4167
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4168
};
4169

4170
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,140✔
4171
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
9,140✔
4172

4173
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,140✔
4174
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4175
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
9,140✔
4176
  }
4177
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4178
    switch (pNode->qType) {
9,140!
4179
      case DYN_QTYPE_STB_HASH: {
9,140✔
4180
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
9,140✔
4181
        if (TSDB_CODE_SUCCESS == code) {
9,140!
4182
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
9,140✔
4183
        }
4184
        if (TSDB_CODE_SUCCESS == code) {
9,140!
4185
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
9,140✔
4186
        }
4187
        if (TSDB_CODE_SUCCESS == code) {
9,140!
4188
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
9,140✔
4189
        }
4190
        if (TSDB_CODE_SUCCESS == code) {
9,140!
4191
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
9,140✔
4192
        }
4193
        if (TSDB_CODE_SUCCESS == code) {
9,140!
4194
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
9,140✔
4195
        }
4196
        if (TSDB_CODE_SUCCESS == code) {
9,140!
4197
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
9,140✔
4198
        }
4199
        break;
9,140✔
4200
      }
4201
      default:
×
4202
        return TSDB_CODE_INVALID_PARA;
×
4203
    }
4204
  }
4205
  return code;
9,140✔
4206
}
4207

4208
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
9,149✔
4209
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
9,149✔
4210

4211
  int32_t code = TSDB_CODE_SUCCESS;
9,149✔
4212
  STlv*   pTlv = NULL;
9,149✔
4213
  tlvForEach(pDecoder, pTlv, code) {
91,490!
4214
    switch (pTlv->type) {
82,341!
4215
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
9,149✔
4216
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,149✔
4217
        break;
9,149✔
4218
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
9,149✔
4219
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
9,149✔
4220
        break;
9,149✔
4221
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
9,149✔
4222
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
9,149✔
4223
        break;
9,149✔
4224
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
9,149✔
4225
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
9,149✔
4226
        break;
9,149✔
4227
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
9,149✔
4228
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
9,149✔
4229
        break;
9,149✔
4230
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
9,149✔
4231
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
9,149✔
4232
        break;
9,149✔
4233
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
9,149✔
4234
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
9,149✔
4235
        break;      
9,149✔
4236
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
9,149✔
4237
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
9,149✔
4238
        break;
9,149✔
4239
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
9,149✔
4240
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
9,149✔
4241
        break;      
9,149✔
4242
      default:
×
4243
        break;
×
4244
    }
4245
  }
4246

4247
  return code;
9,149✔
4248
}
4249

4250

4251

4252
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4253

4254
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,696,595✔
4255
  const SSubplanId* pNode = (const SSubplanId*)pObj;
1,696,595✔
4256

4257
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
1,696,595✔
4258
  if (TSDB_CODE_SUCCESS == code) {
1,696,415!
4259
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
1,696,565✔
4260
  }
4261
  if (TSDB_CODE_SUCCESS == code) {
1,696,611✔
4262
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
1,696,217✔
4263
  }
4264

4265
  return code;
1,696,256✔
4266
}
4267

4268
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4269
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4270

4271
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4272
  if (TSDB_CODE_SUCCESS == code) {
×
4273
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4274
  }
4275
  if (TSDB_CODE_SUCCESS == code) {
×
4276
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4277
  }
4278

4279
  return code;
×
4280
}
4281

4282
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
1,822,815✔
4283
  SSubplanId* pNode = (SSubplanId*)pObj;
1,822,815✔
4284

4285
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
1,822,815✔
4286
  if (TSDB_CODE_SUCCESS == code) {
1,823,183!
4287
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
1,823,531✔
4288
  }
4289
  if (TSDB_CODE_SUCCESS == code) {
1,822,962✔
4290
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
1,822,660✔
4291
  }
4292

4293
  return code;
1,822,883✔
4294
}
4295

4296
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4297
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4298

4299
  int32_t code = TSDB_CODE_SUCCESS;
×
4300
  STlv*   pTlv = NULL;
×
4301
  tlvForEach(pDecoder, pTlv, code) {
×
4302
    switch (pTlv->type) {
×
4303
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4304
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4305
        break;
×
4306
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4307
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4308
        break;
×
4309
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4310
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4311
        break;
×
4312
      default:
×
4313
        break;
×
4314
    }
4315
  }
4316

4317
  return code;
×
4318
}
4319

4320
enum {
4321
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4322
  SUBPLAN_CODE_ROOT_NODE,
4323
  SUBPLAN_CODE_DATA_SINK,
4324
  SUBPLAN_CODE_TAG_COND,
4325
  SUBPLAN_CODE_TAG_INDEX_COND
4326
};
4327

4328
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,696,638✔
4329
  const SSubplan* pNode = (const SSubplan*)pObj;
1,696,638✔
4330

4331
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
1,696,638✔
4332
  if (TSDB_CODE_SUCCESS == code) {
1,696,276!
4333
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
1,696,313✔
4334
  }
4335
  if (TSDB_CODE_SUCCESS == code) {
1,696,100!
4336
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
1,696,261✔
4337
  }
4338
  if (TSDB_CODE_SUCCESS == code) {
1,695,691!
4339
    code = tlvEncodeValueI32(pEncoder, pNode->level);
1,695,919✔
4340
  }
4341
  if (TSDB_CODE_SUCCESS == code) {
1,695,216!
4342
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
1,695,229✔
4343
  }
4344
  if (TSDB_CODE_SUCCESS == code) {
1,695,612!
4345
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
1,695,732✔
4346
  }
4347
  if (TSDB_CODE_SUCCESS == code) {
1,695,410!
4348
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
1,695,578✔
4349
  }
4350
  if (TSDB_CODE_SUCCESS == code) {
1,695,880!
4351
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
1,696,120✔
4352
  }
4353
  if (TSDB_CODE_SUCCESS == code) {
1,695,603!
4354
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
1,695,642✔
4355
  }
4356
  if (TSDB_CODE_SUCCESS == code) {
1,695,202!
4357
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
1,695,278✔
4358
  }
4359
  if (TSDB_CODE_SUCCESS == code) {
1,695,014!
4360
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
1,695,169✔
4361
  }
4362
  if (TSDB_CODE_SUCCESS == code) {
1,694,898!
4363
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
1,695,221✔
4364
  }
4365

4366
  return code;
1,695,138✔
4367
}
4368

4369
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,696,771✔
4370
  const SSubplan* pNode = (const SSubplan*)pObj;
1,696,771✔
4371

4372
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
1,696,771✔
4373
  if (TSDB_CODE_SUCCESS == code) {
1,695,577!
4374
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
1,695,646✔
4375
  }
4376
  if (TSDB_CODE_SUCCESS == code) {
1,694,293!
4377
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
1,694,322✔
4378
  }
4379
  if (TSDB_CODE_SUCCESS == code) {
1,693,447!
4380
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
1,693,696✔
4381
  }
4382
  if (TSDB_CODE_SUCCESS == code) {
1,693,629!
4383
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
1,693,910✔
4384
  }
4385

4386
  return code;
1,693,855✔
4387
}
4388

4389
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
1,823,337✔
4390
  SSubplan* pNode = (SSubplan*)pObj;
1,823,337✔
4391

4392
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
1,823,337✔
4393
  if (TSDB_CODE_SUCCESS == code) {
1,822,860!
4394
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
1,822,896✔
4395
  }
4396
  if (TSDB_CODE_SUCCESS == code) {
1,822,646✔
4397
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
1,822,308✔
4398
  }
4399
  if (TSDB_CODE_SUCCESS == code) {
1,822,997✔
4400
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
1,822,719✔
4401
  }
4402
  if (TSDB_CODE_SUCCESS == code) {
1,822,744✔
4403
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
1,822,514✔
4404
  }
4405
  if (TSDB_CODE_SUCCESS == code) {
1,823,853✔
4406
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
1,823,752✔
4407
  }
4408
  if (TSDB_CODE_SUCCESS == code) {
1,823,968✔
4409
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
1,823,317✔
4410
  }
4411
  if (TSDB_CODE_SUCCESS == code) {
1,825,036✔
4412
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
1,824,402✔
4413
  }
4414
  if (TSDB_CODE_SUCCESS == code) {
1,824,347✔
4415
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
1,823,811✔
4416
  }
4417
  if (TSDB_CODE_SUCCESS == code) {
1,823,826✔
4418
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
1,823,301✔
4419
  }
4420
  if (TSDB_CODE_SUCCESS == code) {
1,823,800✔
4421
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
1,822,841✔
4422
  }
4423
  if (TSDB_CODE_SUCCESS == code) {
1,823,840✔
4424
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
1,822,929✔
4425
  }
4426
  return code;
1,822,960✔
4427
}
4428

4429
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
1,823,092✔
4430
  SSubplan* pNode = (SSubplan*)pObj;
1,823,092✔
4431

4432
  int32_t code = TSDB_CODE_SUCCESS;
1,823,092✔
4433
  STlv*   pTlv = NULL;
1,823,092✔
4434
  tlvForEach(pDecoder, pTlv, code) {
7,372,380!
4435
    switch (pTlv->type) {
5,551,039!
4436
      case SUBPLAN_CODE_INLINE_ATTRS:
1,823,383✔
4437
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
1,823,383✔
4438
        break;
1,822,371✔
4439
      case SUBPLAN_CODE_ROOT_NODE:
1,823,008✔
4440
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
1,823,008✔
4441
        break;
1,822,009✔
4442
      case SUBPLAN_CODE_DATA_SINK:
1,821,956✔
4443
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
1,821,956✔
4444
        break;
1,822,145✔
4445
      case SUBPLAN_CODE_TAG_COND:
73,538✔
4446
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
73,538✔
4447
        break;
73,607✔
4448
      case SUBPLAN_CODE_TAG_INDEX_COND:
9,154✔
4449
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
9,154✔
4450
        break;
9,156✔
4451
      default:
×
4452
        break;
×
4453
    }
4454
  }
4455

4456
  return code;
1,821,707✔
4457
}
4458

4459
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4460

4461
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4462
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4463

4464
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
×
4465
  if (TSDB_CODE_SUCCESS == code) {
×
4466
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
×
4467
  }
4468

4469
  return code;
×
4470
}
4471

4472
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4473
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4474

4475
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
×
4476
  if (TSDB_CODE_SUCCESS == code) {
×
4477
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
×
4478
  }
4479

4480
  return code;
×
4481
}
4482

4483
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
×
4484
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4485

4486
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
×
4487
  if (TSDB_CODE_SUCCESS == code) {
×
4488
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
×
4489
  }
4490

4491
  return code;
×
4492
}
4493

4494
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
×
4495
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4496

4497
  int32_t code = TSDB_CODE_SUCCESS;
×
4498
  STlv*   pTlv = NULL;
×
4499
  tlvForEach(pDecoder, pTlv, code) {
×
4500
    switch (pTlv->type) {
×
4501
      case QUERY_PLAN_CODE_INLINE_ATTRS:
×
4502
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
×
4503
        break;
×
4504
      case QUERY_PLAN_CODE_SUBPLANS:
×
4505
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
×
4506
        break;
×
4507
      default:
×
4508
        break;
×
4509
    }
4510
  }
4511

4512
  return code;
×
4513
}
4514

4515
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
67,585,113✔
4516
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4517
  int32_t code = TSDB_CODE_SUCCESS;
67,585,113✔
4518
  switch (nodeType(pObj)) {
67,585,113!
4519
    case QUERY_NODE_COLUMN:
13,178,316✔
4520
      code = columnNodeToMsg(pObj, pEncoder);
13,178,316✔
4521
      break;
12,998,691✔
4522
    case QUERY_NODE_VALUE:
5,337,515✔
4523
      code = valueNodeToMsg(pObj, pEncoder);
5,337,515✔
4524
      break;
5,338,906✔
4525
    case QUERY_NODE_OPERATOR:
1,442,640✔
4526
      code = operatorNodeToMsg(pObj, pEncoder);
1,442,640✔
4527
      break;
1,440,011✔
4528
    case QUERY_NODE_LOGIC_CONDITION:
324,659✔
4529
      code = logicConditionNodeToMsg(pObj, pEncoder);
324,659✔
4530
      break;
324,542✔
4531
    case QUERY_NODE_FUNCTION:
3,240,034✔
4532
      code = functionNodeToMsg(pObj, pEncoder);
3,240,034✔
4533
      break;
3,235,188✔
4534
    case QUERY_NODE_ORDER_BY_EXPR:
317,922✔
4535
      code = orderByExprNodeToMsg(pObj, pEncoder);
317,922✔
4536
      break;
317,741✔
4537
    case QUERY_NODE_LIMIT:
194,998✔
4538
      code = limitNodeToMsg(pObj, pEncoder);
194,998✔
4539
      break;
194,972✔
4540
    case QUERY_NODE_NODE_LIST:
44,708✔
4541
      code = nodeListNodeToMsg(pObj, pEncoder);
44,708✔
4542
      break;
44,736✔
4543
    case QUERY_NODE_TARGET:
11,142,247✔
4544
      code = targetNodeToMsg(pObj, pEncoder);
11,142,247✔
4545
      break;
11,070,535✔
4546
    case QUERY_NODE_DATABLOCK_DESC:
5,250,915✔
4547
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
5,250,915✔
4548
      break;
5,240,274✔
4549
    case QUERY_NODE_SLOT_DESC:
20,412,033✔
4550
      code = slotDescNodeToMsg(pObj, pEncoder);
20,412,033✔
4551
      break;
20,144,380✔
4552
    case QUERY_NODE_DOWNSTREAM_SOURCE:
951,234✔
4553
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
951,234✔
4554
      break;
951,208✔
4555
    case QUERY_NODE_LEFT_VALUE:
47,074✔
4556
      break;
47,074✔
4557
    case QUERY_NODE_WHEN_THEN:
6,877✔
4558
      code = whenThenNodeToMsg(pObj, pEncoder);
6,877✔
4559
      break;
6,877✔
4560
    case QUERY_NODE_CASE_WHEN:
5,061✔
4561
      code = caseWhenNodeToMsg(pObj, pEncoder);
5,061✔
4562
      break;
5,061✔
4563
    case QUERY_NODE_WINDOW_OFFSET:
829✔
4564
      code = windowOffsetNodeToMsg(pObj, pEncoder);
829✔
4565
      break;
829✔
4566
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
43,917✔
4567
      code = physiTagScanNodeToMsg(pObj, pEncoder);
43,917✔
4568
      break;
44,239✔
4569
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
13✔
4570
      code = physiScanNodeToMsg(pObj, pEncoder);
13✔
4571
      break;
13✔
4572
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
6,240✔
4573
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4574
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
6,240✔
4575
      break;
6,233✔
4576
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,166,923✔
4577
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4578
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4579
      code = physiTableScanNodeToMsg(pObj, pEncoder);
1,166,923✔
4580
      break;
1,165,999✔
4581
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
35,231✔
4582
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
35,231✔
4583
      break;
35,231✔
4584
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
520,156✔
4585
      code = physiProjectNodeToMsg(pObj, pEncoder);
520,156✔
4586
      break;
519,703✔
4587
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
82,431✔
4588
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
82,431✔
4589
      break;
82,415✔
4590
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
9,140✔
4591
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
9,140✔
4592
      break;
9,140✔
4593
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
635,968✔
4594
      code = physiAggNodeToMsg(pObj, pEncoder);
635,968✔
4595
      break;
634,840✔
4596
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
659,038✔
4597
      code = physiExchangeNodeToMsg(pObj, pEncoder);
659,038✔
4598
      break;
659,011✔
4599
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
77,660✔
4600
      code = physiMergeNodeToMsg(pObj, pEncoder);
77,660✔
4601
      break;
77,656✔
4602
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
163,457✔
4603
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4604
      code = physiSortNodeToMsg(pObj, pEncoder);
163,457✔
4605
      break;
163,407✔
4606
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
79,925✔
4607
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4608
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4609
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4610
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4611
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4612
      code = physiIntervalNodeToMsg(pObj, pEncoder);
79,925✔
4613
      break;
79,840✔
4614
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
14,380✔
4615
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4616
      code = physiFillNodeToMsg(pObj, pEncoder);
14,380✔
4617
      break;
14,372✔
4618
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
3,902✔
4619
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4620
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4621
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4622
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
3,902✔
4623
      break;
3,902✔
4624
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
5,789✔
4625
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4626
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
5,789✔
4627
      break;
5,789✔
4628
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
62✔
4629
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4630
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
62✔
4631
      break;
62✔
4632
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
45✔
4633
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4634
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
45✔
4635
      break;
45✔
4636
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4637
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
4638
      break;
×
4639
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
14,428✔
4640
      code = physiPartitionNodeToMsg(pObj, pEncoder);
14,428✔
4641
      break;
14,413✔
4642
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4643
      code = physiStreamPartitionNodeToMsg(pObj, pEncoder);
×
4644
      break;
×
4645
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
22,218✔
4646
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
22,218✔
4647
      break;
22,206✔
4648
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
2,362✔
4649
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4650
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
2,362✔
4651
      break;
2,362✔
4652
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4653
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
4654
      break;
×
4655
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,684,765✔
4656
      code = physiDispatchNodeToMsg(pObj, pEncoder);
1,684,765✔
4657
      break;
1,684,144✔
4658
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
162✔
4659
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
162✔
4660
      break;
162✔
4661
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
9,225✔
4662
      code = physiDeleteNodeToMsg(pObj, pEncoder);
9,225✔
4663
      break;
9,225✔
4664
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
9,140✔
4665
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
9,140✔
4666
      break;
9,140✔
4667
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,140✔
4668
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
9,140✔
4669
      break;
9,140✔
4670
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,696,605✔
4671
      code = subplanToMsg(pObj, pEncoder);
1,696,605✔
4672
      break;
1,693,887✔
4673
    case QUERY_NODE_PHYSICAL_PLAN:
×
4674
      code = queryPlanToMsg(pObj, pEncoder);
×
4675
      break;
×
4676
    default:
×
4677
      break;
×
4678
  }
4679
  if (TSDB_CODE_SUCCESS != code) {
67,043,330!
4680
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
4681
  }
4682
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4683
  return code;
67,181,755✔
4684
}
4685

4686
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
77,525,544✔
4687
  int32_t code = TSDB_CODE_SUCCESS;
77,525,544✔
4688
  switch (nodeType(pObj)) {
77,525,544!
4689
    case QUERY_NODE_COLUMN:
15,259,629✔
4690
      code = msgToColumnNode(pDecoder, pObj);
15,259,629✔
4691
      break;
15,299,437✔
4692
    case QUERY_NODE_VALUE:
5,539,822✔
4693
      code = msgToValueNode(pDecoder, pObj);
5,539,822✔
4694
      break;
5,529,972✔
4695
    case QUERY_NODE_OPERATOR:
1,557,458✔
4696
      code = msgToOperatorNode(pDecoder, pObj);
1,557,458✔
4697
      break;
1,555,995✔
4698
    case QUERY_NODE_LOGIC_CONDITION:
333,159✔
4699
      code = msgToLogicConditionNode(pDecoder, pObj);
333,159✔
4700
      break;
333,117✔
4701
    case QUERY_NODE_FUNCTION:
3,547,024✔
4702
      code = msgToFunctionNode(pDecoder, pObj);
3,547,024✔
4703
      break;
3,543,719✔
4704
    case QUERY_NODE_ORDER_BY_EXPR:
327,902✔
4705
      code = msgToOrderByExprNode(pDecoder, pObj);
327,902✔
4706
      break;
327,790✔
4707
    case QUERY_NODE_LIMIT:
200,788✔
4708
      code = msgToLimitNode(pDecoder, pObj);
200,788✔
4709
      break;
200,651✔
4710
    case QUERY_NODE_NODE_LIST:
46,205✔
4711
      code = msgToNodeListNode(pDecoder, pObj);
46,205✔
4712
      break;
46,215✔
4713
    case QUERY_NODE_TARGET:
13,119,876✔
4714
      code = msgToTargetNode(pDecoder, pObj);
13,119,876✔
4715
      break;
13,074,183✔
4716
    case QUERY_NODE_DATABLOCK_DESC:
5,651,271✔
4717
      code = msgToDataBlockDescNode(pDecoder, pObj);
5,651,271✔
4718
      break;
5,651,142✔
4719
    case QUERY_NODE_SLOT_DESC:
23,803,247✔
4720
      code = msgToSlotDescNode(pDecoder, pObj);
23,803,247✔
4721
      break;
23,417,464✔
4722
    case QUERY_NODE_DOWNSTREAM_SOURCE:
1,009,590✔
4723
      code = msgToDownstreamSourceNode(pDecoder, pObj);
1,009,590✔
4724
    case QUERY_NODE_LEFT_VALUE:
1,057,719✔
4725
      break;
1,057,719✔
4726
    case QUERY_NODE_WHEN_THEN:
7,267✔
4727
      code = msgToWhenThenNode(pDecoder, pObj);
7,267✔
4728
      break;
7,267✔
4729
    case QUERY_NODE_CASE_WHEN:
5,274✔
4730
      code = msgToCaseWhenNode(pDecoder, pObj);
5,274✔
4731
      break;
5,274✔
4732
    case QUERY_NODE_WINDOW_OFFSET:
668✔
4733
      code = msgToWindowOffsetNode(pDecoder, pObj);
668✔
4734
      break;
668✔
4735
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
44,546✔
4736
      code = msgToPhysiTagScanNode(pDecoder, pObj);
44,546✔
4737
      break;
44,495✔
4738
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
9✔
4739
      code = msgToPhysiScanNode(pDecoder, pObj);
9✔
4740
      break;
9✔
4741
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
6,943✔
4742
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4743
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
6,943✔
4744
      break;
6,944✔
4745
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,275,208✔
4746
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4747
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4748
      code = msgToPhysiTableScanNode(pDecoder, pObj);
1,275,208✔
4749
      break;
1,274,565✔
4750
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
35,378✔
4751
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
35,378✔
4752
      break;
35,374✔
4753
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
570,308✔
4754
      code = msgToPhysiProjectNode(pDecoder, pObj);
570,308✔
4755
      break;
570,202✔
4756
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
89,775✔
4757
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
89,775✔
4758
      break;
89,750✔
4759
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
9,149✔
4760
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
9,149✔
4761
      break;
9,149✔
4762
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
695,453✔
4763
      code = msgToPhysiAggNode(pDecoder, pObj);
695,453✔
4764
      break;
695,083✔
4765
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
690,855✔
4766
      code = msgToPhysiExchangeNode(pDecoder, pObj);
690,855✔
4767
      break;
690,780✔
4768
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
77,185✔
4769
      code = msgToPhysiMergeNode(pDecoder, pObj);
77,185✔
4770
      break;
77,178✔
4771
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
168,351✔
4772
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4773
      code = msgToPhysiSortNode(pDecoder, pObj);
168,351✔
4774
      break;
168,333✔
4775
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
81,144✔
4776
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4777
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4778
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4779
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4780
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4781
      code = msgToPhysiIntervalNode(pDecoder, pObj);
81,144✔
4782
      break;
81,106✔
4783
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
14,344✔
4784
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4785
      code = msgToPhysiFillNode(pDecoder, pObj);
14,344✔
4786
      break;
14,341✔
4787
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
3,903✔
4788
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4789
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4790
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4791
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
3,903✔
4792
      break;
3,903✔
4793
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
6,327✔
4794
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4795
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
6,327✔
4796
      break;
6,327✔
4797
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
70✔
4798
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4799
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
70✔
4800
      break;
70✔
4801
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
41✔
4802
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4803
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
41✔
4804
      break;
41✔
4805
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4806
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
4807
      break;
×
4808
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
14,023✔
4809
      code = msgToPhysiPartitionNode(pDecoder, pObj);
14,023✔
4810
      break;
14,018✔
4811
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4812
      code = msgToPhysiStreamPartitionNode(pDecoder, pObj);
×
4813
      break;
×
4814
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
24,438✔
4815
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
24,438✔
4816
      break;
24,437✔
4817
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
3,002✔
4818
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4819
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
3,002✔
4820
      break;
3,002✔
4821
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4822
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
4823
      break;
×
4824
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,813,944✔
4825
      code = msgToPhysiDispatchNode(pDecoder, pObj);
1,813,944✔
4826
      break;
1,812,902✔
4827
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
169✔
4828
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
169✔
4829
      break;
169✔
4830
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
9,008✔
4831
      code = msgToPhysiDeleteNode(pDecoder, pObj);
9,008✔
4832
      break;
9,008✔
4833
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
9,149✔
4834
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
9,149✔
4835
      break;
9,149✔
4836
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,149✔
4837
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
9,149✔
4838
      break;
9,149✔
4839
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,823,120✔
4840
      code = msgToSubplan(pDecoder, pObj);
1,823,120✔
4841
      break;
1,822,172✔
4842
    case QUERY_NODE_PHYSICAL_PLAN:
×
4843
      code = msgToQueryPlan(pDecoder, pObj);
×
4844
      break;
×
4845
    default:
×
4846
      break;
×
4847
  }
4848
  if (TSDB_CODE_SUCCESS != code) {
77,522,269!
4849
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
4850
  }
4851
  return code;
76,857,009✔
4852
}
4853

4854
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
67,559,642✔
4855
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
67,559,642✔
4856
}
4857

4858
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
77,715,485✔
4859
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
77,715,485✔
4860
}
4861

4862
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
26,567,469✔
4863
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
26,567,469✔
4864
  return msgToNode(&decoder, pObj);
26,567,469✔
4865
}
4866

4867
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,588,240✔
4868
  const SNodeList* pList = (const SNodeList*)pObj;
14,588,240✔
4869

4870
  SNode* pNode = NULL;
14,588,240✔
4871
  FOREACH(pNode, pList) {
57,142,307!
4872
    int32_t code = nodeToMsg(pNode, pEncoder);
42,877,293✔
4873
    if (TSDB_CODE_SUCCESS != code) {
42,554,067!
4874
      return code;
×
4875
    }
4876
  }
4877

4878
  return TSDB_CODE_SUCCESS;
14,265,014✔
4879
}
4880
enum {
4881
  SARRAY_CODE_CAPACITY = 1,
4882
  SARRAY_CODE_ELEMSIZE,
4883
  SARRAY_CODE_SIZE,
4884
  SARRAY_CODE_PDATA
4885
};
4886

4887
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
153✔
4888
  const SArray* pArray = (const SArray*)pObj;
153✔
4889
  int32_t code = TSDB_CODE_SUCCESS;
153✔
4890
  if (TSDB_CODE_SUCCESS == code) {
153!
4891
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
153✔
4892
  }
4893
  if (TSDB_CODE_SUCCESS == code) {
153!
4894
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
153✔
4895
  }
4896
  if (TSDB_CODE_SUCCESS == code) {
153!
4897
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
153✔
4898
  }
4899
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
153!
4900
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
153✔
4901
  }
4902
  return code;
154✔
4903
}
4904

4905

4906
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
15,769,700✔
4907
  SNodeList* pList = NULL;
15,769,700✔
4908
  int32_t code = TSDB_CODE_SUCCESS;
15,769,700✔
4909
  code = nodesMakeList(&pList);
15,769,700✔
4910

4911
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
65,419,384✔
4912
    SNode* pNode = NULL;
49,568,470✔
4913
    code = msgToNode(pDecoder, (void**)&pNode);
49,568,470✔
4914
    if (TSDB_CODE_SUCCESS == code) {
48,901,382!
4915
      code = nodesListAppend(pList, pNode);
48,904,825✔
4916
    }
4917
  }
4918
  if (TSDB_CODE_SUCCESS == code) {
15,796,594!
4919
    *pObj = pList;
15,796,594✔
4920
  } else {
4921
    nodesDestroyList(pList);
×
4922
  }
4923
  return code;
15,795,692✔
4924
}
4925

4926
static int32_t msgToSArray(STlv* pTlv, void** pObj){
159✔
4927
  SArray* pArray = NULL;
159✔
4928
  uint32_t capacity = 0;
159✔
4929
  uint32_t elemSize = 0;
159✔
4930
  uint32_t actualSize;
4931
  int32_t decodeFieldNum = 0;;
159✔
4932
  int32_t code = TSDB_CODE_SUCCESS;
159✔
4933
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
159✔
4934
  STlv*   pTlvTemp = NULL;
159✔
4935
  STlv*   pDataTlv = NULL;
159✔
4936

4937
  tlvForEach(&decoder, pTlvTemp, code) {
793!
4938
    switch (pTlvTemp->type) {
633!
4939
      case SARRAY_CODE_CAPACITY:
159✔
4940
        code = tlvDecodeI32(pTlvTemp, &capacity);
159✔
4941
        break;
159✔
4942
      case SARRAY_CODE_ELEMSIZE:
158✔
4943
        code = tlvDecodeI32(pTlvTemp, &elemSize);
158✔
4944
        break;
158✔
4945
      case SARRAY_CODE_SIZE:
158✔
4946
        code = tlvDecodeI32(pTlvTemp, &actualSize);
158✔
4947
        break;
158✔
4948
      case SARRAY_CODE_PDATA:
158✔
4949
        if (decodeFieldNum < 3) {
158!
4950
          pDataTlv = pTlvTemp;
×
4951
          break;
×
4952
        }
4953
        pArray = taosArrayInit(capacity, elemSize);
158✔
4954
        if (NULL == pArray) {
159!
4955
          return terrno;
×
4956
        }
4957
        pArray->size = actualSize;
159✔
4958
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
159!
4959
          taosArrayDestroy(pArray);
×
4960
          return TSDB_CODE_OUT_OF_MEMORY;
×
4961
        }
4962
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
159✔
4963
        break;
159✔
4964
      default:
×
4965
        break;
×
4966
    }
4967
    decodeFieldNum++;
634✔
4968
  }
4969

4970
  if (pDataTlv != NULL) {
160!
4971
    pArray = taosArrayInit(capacity, elemSize);
×
4972
    if (NULL == pArray) {
×
4973
      return terrno;
×
4974
    }
4975
    pArray->size = actualSize;
×
4976
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
4977
      taosArrayDestroy(pArray);
×
4978
      return TSDB_CODE_OUT_OF_MEMORY;
×
4979
    }
4980
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
4981
  }
4982
  *pObj = pArray;
159✔
4983
  return code;
159✔
4984
}
4985

4986

4987
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
15,768,990✔
4988
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
15,768,990✔
4989
  return msgToNodeList(&decoder, pObj);
15,768,990✔
4990
}
4991

4992
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
1,696,794✔
4993
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
1,696,794!
4994
    terrno = TSDB_CODE_FAILED;
×
4995
    return TSDB_CODE_FAILED;
×
4996
  }
4997

4998
  STlvEncoder encoder;
4999
  int32_t     code = initTlvEncoder(&encoder);
1,698,637✔
5000
  if (TSDB_CODE_SUCCESS == code) {
1,698,901!
5001
    code = nodeToMsg(pNode, &encoder);
1,698,910✔
5002
  }
5003
  if (TSDB_CODE_SUCCESS == code) {
1,694,248!
5004
    endTlvEncode(&encoder, pMsg, pLen);
1,694,353✔
5005
  }
5006
  clearTlvEncoder(&encoder);
1,694,219✔
5007

5008
  terrno = code;
1,694,640✔
5009
  return code;
1,694,763✔
5010
}
5011

5012
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
1,822,861✔
5013
  if (NULL == pMsg || NULL == pNode) {
1,822,861!
5014
    return TSDB_CODE_SUCCESS;
×
5015
  }
5016

5017
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
1,824,031✔
5018
  int32_t     code = msgToNode(&decoder, (void**)pNode);
1,824,031✔
5019
  if (TSDB_CODE_SUCCESS != code) {
1,821,975!
5020
    nodesDestroyNode(*pNode);
×
5021
    *pNode = NULL;
×
5022
  }
5023

5024
  terrno = code;
1,821,975✔
5025
  return code;
1,821,665✔
5026
}
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