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

taosdata / TDengine / #3535

23 Nov 2024 02:07AM UTC coverage: 60.85% (+0.03%) from 60.825%
#3535

push

travis-ci

web-flow
Merge pull request #28893 from taosdata/doc/internal

refact: rename taos lib name

120252 of 252737 branches covered (47.58%)

Branch coverage included in aggregate %.

201187 of 275508 relevant lines covered (73.02%)

15886166.19 hits per line

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

80.49
/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,876,644✔
78
  pEncoder->allocSize = NODES_MSG_DEFAULT_LEN;
1,876,644✔
79
  pEncoder->offset = 0;
1,876,644✔
80
  pEncoder->tlvCount = 0;
1,876,644✔
81
  pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize);
1,876,644✔
82
  return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS;
1,878,577!
83
}
84

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

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

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
143,918,034✔
94
  int32_t tlvLen = sizeof(STlv) + len;
143,918,034✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
143,918,034✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
710,072✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
710,072✔
98
    if (NULL == pNewBuf) {
711,285!
99
      return terrno;
×
100
    }
101
    pEncoder->pBuf = pNewBuf;
711,287✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
143,919,249✔
104
  pTlv->type = htons(type);
143,919,249✔
105
  pTlv->len = htonl(len);
143,919,249✔
106
  memcpy(pTlv->value, pValue, len);
143,919,249✔
107
  pEncoder->offset += tlvLen;
143,919,249✔
108
  ++(pEncoder->tlvCount);
143,919,249✔
109
  return TSDB_CODE_SUCCESS;
143,919,249✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
539,872,493✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
539,872,493✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
727,743✔
115
    if (NULL == pNewBuf) {
729,856!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
729,887✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
729,887✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
539,874,637✔
122
  pEncoder->offset += len;
539,874,637✔
123
  return TSDB_CODE_SUCCESS;
539,874,637✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
59,403,312✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
59,403,312✔
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) {
160,345,886✔
140
  value = htons(value);
160,345,886✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
160,345,886✔
142
}
143

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
79,409,419✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
79,409,419✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
106,683,558✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
106,683,558✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
12,145,518✔
223
  if (NULL == pValue) {
12,145,518✔
224
    return TSDB_CODE_SUCCESS;
960,993✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
11,184,525✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
61,104,714✔
230
  int16_t len = strlen(pValue);
61,104,714✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
61,104,714✔
232
  if (TSDB_CODE_SUCCESS == code) {
61,291,270!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
61,301,171✔
234
  }
235
  return code;
61,172,989✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
223,638,885✔
243
  if (NULL == pObj) {
223,638,885✔
244
    return TSDB_CODE_SUCCESS;
26,180,411✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
197,458,474✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
586,430✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
586,430✔
250
    if (NULL == pNewBuf) {
587,268✔
251
      return terrno;
18✔
252
    }
253
    pEncoder->pBuf = pNewBuf;
587,250✔
254
  }
255

256
  int32_t start = pEncoder->offset;
197,459,294✔
257
  pEncoder->offset += sizeof(STlv);
197,459,294✔
258
  int32_t code = func(pObj, pEncoder);
197,459,294✔
259
  if (TSDB_CODE_SUCCESS == code) {
197,529,334!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
198,050,177✔
261
    pTlv->type = htons(type);
198,050,177✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
198,050,177✔
263
  }
264
  ++(pEncoder->tlvCount);
197,529,334✔
265
  return code;
197,529,334✔
266
}
267

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

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
2,852,811✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
2,852,811✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
5,279,199✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
2,425,928✔
291
  }
292
  return code;
2,853,271✔
293
}
294

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

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

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
718,099,757✔
312

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

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

335
static int32_t tlvDecodeI8(STlv* pTlv, int8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
1,692,712,680✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
912,491,903✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
912,491,903✔
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) {
974,172,185✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
974,172,185✔
351
  if (TSDB_CODE_SUCCESS == code) {
966,464,882!
352
    *pValue = ntohs(*pValue);
1,007,625,704✔
353
  }
354
  return code;
966,464,882✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
996,087,969✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
996,087,969✔
359
  if (TSDB_CODE_SUCCESS == code) {
987,284,926!
360
    *pValue = ntohl(*pValue);
988,793,517✔
361
  }
362
  return code;
987,284,926✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
421,895,306✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
421,895,306✔
367
  if (TSDB_CODE_SUCCESS == code) {
420,247,375!
368
    *pValue = ntohl(*pValue);
420,854,427✔
369
  }
370
  return code;
420,247,375✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
420,928,492✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
420,928,492✔
375
  if (TSDB_CODE_SUCCESS == code) {
420,170,146!
376
    *pValue = ntohll(*pValue);
420,595,162✔
377
  }
378
  return code;
420,170,146✔
379
}
380

381
static int32_t tlvDecodeValueI64(STlvDecoder* pDecoder, int64_t* pValue) {
41,371,725✔
382
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
41,371,725✔
383
  if (TSDB_CODE_SUCCESS == code) {
41,362,269!
384
    *pValue = ntohll(*pValue);
41,369,152✔
385
  }
386
  return code;
41,362,269✔
387
}
388

389
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
862,395,495✔
390

391
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
453,012,041✔
392
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
453,012,041✔
393
}
394

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

403
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
9,312,001✔
404
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
9,312,001✔
405
  if (TSDB_CODE_SUCCESS == code) {
9,312,173!
406
    *pValue = ntohs(*pValue);
9,317,461✔
407
  }
408
  return code;
9,312,173✔
409
}
410

411
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
10,548,991✔
412
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
10,548,991✔
413
  if (TSDB_CODE_SUCCESS == code) {
10,547,003!
414
    *pValue = ntohll(*pValue);
10,547,292✔
415
  }
416
  return code;
10,547,003✔
417
}
418

419
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
106,113,596✔
420
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
106,113,596✔
421
  if (TSDB_CODE_SUCCESS == code) {
105,990,953!
422
    *pValue = ntohll(*pValue);
106,046,195✔
423
  }
424
  return code;
105,990,953✔
425
}
426

427
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
2,310,718✔
428
  int64_t temp = 0;
2,310,718✔
429
  int32_t code = tlvDecodeI64(pTlv, &temp);
2,310,718✔
430
  if (TSDB_CODE_SUCCESS == code) {
2,311,100!
431
    *pValue = *(double*)&temp;
2,311,325✔
432
  }
433
  return code;
2,311,100✔
434
}
435

436
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
5,041,804✔
437
  int64_t temp = 0;
5,041,804✔
438
  int32_t code = tlvDecodeValueI64(pDecoder, &temp);
5,041,804✔
439
  if (TSDB_CODE_SUCCESS == code) {
5,042,649!
440
    *pValue = *(double*)&temp;
5,043,006✔
441
  }
442
  return code;
5,042,649✔
443
}
444

445
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
1,999,878,924✔
446
  switch (len) {
1,999,878,924!
447
    case 1:
1,844,791,053✔
448
      *(int8_t*)pValue = value;
1,844,791,053✔
449
      break;
1,844,791,053✔
450
    case 2:
×
451
      *(int16_t*)pValue = value;
×
452
      break;
×
453
    case 4:
166,114,524✔
454
      *(int32_t*)pValue = value;
166,114,524✔
455
      break;
166,114,524✔
456
    default:
×
457
      return TSDB_CODE_FAILED;
×
458
  }
459
  return TSDB_CODE_SUCCESS;
2,010,905,577✔
460
}
461

462
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
1,275,633,262✔
463
  int8_t  value = 0;
1,275,633,262✔
464
  int32_t code = tlvDecodeI8(pTlv, &value);
1,275,633,262✔
465
  if (TSDB_CODE_SUCCESS == code) {
1,271,077,267!
466
    code = convertIntegerType(value, pValue, sizeof(bool));
1,271,789,282✔
467
  }
468
  return code;
1,277,724,812✔
469
}
470

471
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
589,086,714✔
472
  int8_t  value = 0;
589,086,714✔
473
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
589,086,714✔
474
  if (TSDB_CODE_SUCCESS == code) {
588,724,572!
475
    code = convertIntegerType(value, pValue, sizeof(bool));
588,860,797✔
476
  }
477
  return code;
590,016,865✔
478
}
479

480
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
71,913,449✔
481
  int32_t value = 0;
71,913,449✔
482
  int32_t code = tlvDecodeI32(pTlv, &value);
71,913,449✔
483
  if (TSDB_CODE_SUCCESS == code) {
71,902,943!
484
    code = convertIntegerType(value, pValue, len);
71,904,179✔
485
  }
486
  return code;
71,907,718✔
487
}
488

489
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
95,130,526✔
490
  int32_t value = 0;
95,130,526✔
491
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
95,130,526✔
492
  if (TSDB_CODE_SUCCESS == code) {
94,570,022!
493
    code = convertIntegerType(value, pValue, len);
94,577,297✔
494
  }
495
  return code;
94,534,902✔
496
}
497

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

506
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
369,261,570✔
507
  int16_t len = 0;
369,261,570✔
508
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
369,261,570✔
509
  if (TSDB_CODE_SUCCESS == code) {
375,031,329!
510
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
375,165,129✔
511
  }
512
  return code;
371,097,704✔
513
}
514

515
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
402,974,823✔
516
  *pValue = taosStrndup(pTlv->value, pTlv->len);
402,974,823✔
517
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
427,164,095!
518
}
519

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

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

534
static int32_t tlvDecodeObjFromTlv(STlv* pTlv, FToObject func, void* pObj) {
1,948,915,284✔
535
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
1,948,915,284✔
536
  return func(&decoder, pObj);
1,948,915,284✔
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) {
49,770✔
549
  int32_t code = TSDB_CODE_SUCCESS;
49,770✔
550
  int32_t i = 0;
49,770✔
551
  STlv*   pTlv = NULL;
49,770✔
552
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
100,890!
553
  return code;
49,858✔
554
}
555

556
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
11,301,719✔
557
                                   int32_t* pNum) {
558
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
11,301,719✔
559
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
20,620,117✔
560
    code = func(pDecoder, (char*)pArray + i * itemSize);
9,312,044✔
561
  }
562
  return code;
11,308,073✔
563
}
564

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

570
static int32_t tlvDecodeDynObjFromTlv(STlv* pTlv, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
790,422,675✔
571
  int32_t code = makeFunc(pTlv->type, (SNode**)pObj);
790,422,675✔
572
  if (NULL == *pObj) {
787,313,153!
573
    return code;
×
574
  }
575
  return tlvDecodeObjFromTlv(pTlv, toFunc, *pObj);
787,313,153✔
576
}
577

578
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
793,979,023✔
579
  STlv*   pTlv = NULL;
793,979,023✔
580
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
793,979,023✔
581
  if (TSDB_CODE_SUCCESS == code) {
790,115,909!
582
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
790,395,343✔
583
  }
584
  return code;
779,211,893✔
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) {
36,234,071✔
590
  const SDataType* pNode = (const SDataType*)pObj;
36,234,071✔
591

592
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
36,234,071✔
593
  if (TSDB_CODE_SUCCESS == code) {
36,181,573!
594
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
36,185,912✔
595
  }
596
  if (TSDB_CODE_SUCCESS == code) {
35,845,003!
597
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
35,858,284✔
598
  }
599
  if (TSDB_CODE_SUCCESS == code) {
35,539,756!
600
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
35,611,949✔
601
  }
602

603
  return code;
35,808,602✔
604
}
605

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

609
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
10,942,534✔
610
  if (TSDB_CODE_SUCCESS == code) {
10,915,280!
611
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
10,915,809✔
612
  }
613
  if (TSDB_CODE_SUCCESS == code) {
10,910,846!
614
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
10,911,846✔
615
  }
616
  if (TSDB_CODE_SUCCESS == code) {
10,909,849!
617
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
10,911,728✔
618
  }
619

620
  return code;
10,928,707✔
621
}
622

623
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
213,069,995✔
624
  SDataType* pNode = (SDataType*)pObj;
213,069,995✔
625

626
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
213,069,995✔
627
  if (TSDB_CODE_SUCCESS == code) {
212,390,667!
628
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
212,424,126✔
629
  }
630
  if (TSDB_CODE_SUCCESS == code) {
210,664,288!
631
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
210,673,654✔
632
  }
633
  if (TSDB_CODE_SUCCESS == code) {
209,278,888!
634
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
209,342,345✔
635
  }
636

637
  return code;
209,232,949✔
638
}
639

640
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
451,329,096✔
641
  SDataType* pNode = (SDataType*)pObj;
451,329,096✔
642

643
  int32_t code = TSDB_CODE_SUCCESS;
451,329,096✔
644
  STlv*   pTlv = NULL;
451,329,096✔
645
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
646
    switch (pTlv->type) {
1,762,644,130!
647
      case DATA_TYPE_CODE_TYPE:
447,018,216✔
648
        code = tlvDecodeI8(pTlv, &pNode->type);
447,018,216✔
649
        break;
441,928,978✔
650
      case DATA_TYPE_CODE_PRECISION:
440,297,846✔
651
        code = tlvDecodeU8(pTlv, &pNode->precision);
440,297,846✔
652
        break;
438,042,805✔
653
      case DATA_TYPE_CODE_SCALE:
438,165,737✔
654
        code = tlvDecodeU8(pTlv, &pNode->scale);
438,165,737✔
655
        break;
435,466,945✔
656
      case DATA_TYPE_CODE_BYTES:
437,162,331✔
657
        code = tlvDecodeI32(pTlv, &pNode->bytes);
437,162,331✔
658
        break;
438,151,313✔
659
      default:
×
660
        break;
×
661
    }
662
  }
663

664
  return code;
442,490,178✔
665
}
666

667
enum { EXPR_CODE_RES_TYPE = 1 };
668

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

674
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
452,082,383✔
675
  SExprNode* pNode = (SExprNode*)pObj;
452,082,383✔
676

677
  int32_t code = TSDB_CODE_SUCCESS;
452,082,383✔
678
  STlv*   pTlv = NULL;
452,082,383✔
679
  tlvForEach(pDecoder, pTlv, code) {
890,409,165!
680
    switch (pTlv->type) {
452,078,788!
681
      case EXPR_CODE_RES_TYPE:
452,078,788✔
682
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
452,078,788✔
683
        break;
438,326,782✔
684
      default:
×
685
        break;
×
686
    }
687
  }
688

689
  return code;
430,472,849✔
690
}
691

692
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
693

694
static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,549,329✔
695
  const SColumnNode* pNode = (const SColumnNode*)pObj;
14,549,329✔
696

697
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
14,549,329✔
698
  if (TSDB_CODE_SUCCESS == code) {
14,323,051!
699
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
14,329,259✔
700
  }
701
  if (TSDB_CODE_SUCCESS == code) {
14,304,527!
702
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
14,314,413✔
703
  }
704
  if (TSDB_CODE_SUCCESS == code) {
14,259,334!
705
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
14,270,619✔
706
  }
707
  if (TSDB_CODE_SUCCESS == code) {
14,342,870!
708
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
14,358,432✔
709
  }
710
  if (TSDB_CODE_SUCCESS == code) {
14,325,367!
711
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
14,341,936✔
712
  }
713
  if (TSDB_CODE_SUCCESS == code) {
14,396,793!
714
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
14,415,347✔
715
  }
716
  if (TSDB_CODE_SUCCESS == code) {
14,329,450!
717
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
14,350,467✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
14,330,497!
720
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
14,355,972✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
14,324,959!
723
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
14,354,764✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
14,368,541!
726
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
14,416,992✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
14,345,883!
729
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
14,401,096✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
14,350,205!
732
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
14,407,252✔
733
  }  
734
  if (TSDB_CODE_SUCCESS == code) {
14,275,151!
735
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
14,347,061✔
736
  }  
737
  return code;
14,409,815✔
738
}
739

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

744
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
87,225,512✔
745
  SColumnNode* pNode = (SColumnNode*)pObj;
87,225,512✔
746

747
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
87,225,512✔
748
  if (TSDB_CODE_SUCCESS == code) {
86,557,602!
749
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
86,562,779✔
750
  }
751
  if (TSDB_CODE_SUCCESS == code) {
86,482,461!
752
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
86,485,506✔
753
  }
754
  if (TSDB_CODE_SUCCESS == code) {
86,749,337!
755
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
86,763,618✔
756
  }
757
  if (TSDB_CODE_SUCCESS == code) {
88,025,483!
758
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
88,057,728✔
759
  }
760
  if (TSDB_CODE_SUCCESS == code) {
87,372,311!
761
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
87,408,796✔
762
  }
763
  if (TSDB_CODE_SUCCESS == code) {
87,497,385!
764
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
87,524,453✔
765
  }
766
  if (TSDB_CODE_SUCCESS == code) {
87,558,749!
767
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
87,589,770✔
768
  }
769
  if (TSDB_CODE_SUCCESS == code) {
87,603,670!
770
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
87,638,173✔
771
  }
772
  if (TSDB_CODE_SUCCESS == code) {
87,656,186!
773
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
87,694,629✔
774
  }
775
  if (TSDB_CODE_SUCCESS == code) {
88,023,041!
776
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
88,051,733✔
777
  }
778
  if (TSDB_CODE_SUCCESS == code) {
88,029,642!
779
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
88,076,829✔
780
  }
781
  if (TSDB_CODE_SUCCESS == code) {
87,638,943!
782
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
87,691,112✔
783
  }  
784
  if (TSDB_CODE_SUCCESS == code) {
87,377,992!
785
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
87,435,178✔
786
  }  
787
  return code;
88,022,137✔
788
}
789

790
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
87,357,889✔
791
  SColumnNode* pNode = (SColumnNode*)pObj;
87,357,889✔
792

793
  int32_t code = TSDB_CODE_SUCCESS;
87,357,889✔
794
  STlv*   pTlv = NULL;
87,357,889✔
795
  tlvForEach(pDecoder, pTlv, code) {
175,305,961!
796
    switch (pTlv->type) {
87,202,995!
797
      case COLUMN_CODE_INLINE_ATTRS:
87,202,995✔
798
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
87,202,995✔
799
        break;
87,948,072✔
800
      default:
×
801
        break;
×
802
    }
803
  }
804

805
  return code;
87,620,418✔
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,401,127✔
819
  const SValueNode* pNode = (const SValueNode*)pObj;
5,401,127✔
820

821
  int32_t code = TSDB_CODE_SUCCESS;
5,401,127✔
822
  switch (pNode->node.resType.type) {
5,401,127!
823
    case TSDB_DATA_TYPE_NULL:
×
824
      break;
×
825
    case TSDB_DATA_TYPE_BOOL:
65,690✔
826
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
65,690✔
827
      break;
65,699✔
828
    case TSDB_DATA_TYPE_TINYINT:
4,764,722✔
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,764,722✔
834
      break;
4,766,286✔
835
    case TSDB_DATA_TYPE_UTINYINT:
152✔
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);
152✔
840
      break;
152✔
841
    case TSDB_DATA_TYPE_FLOAT:
217,330✔
842
    case TSDB_DATA_TYPE_DOUBLE:
843
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
217,330✔
844
      break;
217,428✔
845
    case TSDB_DATA_TYPE_VARCHAR:
355,342✔
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));
355,342✔
850
      break;
355,399✔
851
    case TSDB_DATA_TYPE_JSON:
12✔
852
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
12✔
853
      break;
727✔
854
    case TSDB_DATA_TYPE_DECIMAL:
×
855
    case TSDB_DATA_TYPE_BLOB:
856
      // todo
857
    default:
858
      break;
×
859
  }
860

861
  return code;
5,403,570✔
862
}
863

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

867
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
5,411,080✔
868
  if (TSDB_CODE_SUCCESS == code) {
5,406,384!
869
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
5,406,525✔
870
  }
871
  if (TSDB_CODE_SUCCESS == code) {
5,406,588!
872
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
5,406,808✔
873
  }
874
  if (TSDB_CODE_SUCCESS == code) {
5,409,747!
875
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
5,410,098✔
876
  }
877
  if (TSDB_CODE_SUCCESS == code) {
5,409,350!
878
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
5,409,463✔
879
  }
880
  if (TSDB_CODE_SUCCESS == code) {
5,404,436!
881
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
5,404,800✔
882
  }
883
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
5,405,631!
884
    code = datumToMsg(pNode, pEncoder);
5,400,092✔
885
  }
886

887
  return code;
5,409,741✔
888
}
889

890
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
415,896,779✔
891
  SValueNode* pNode = (SValueNode*)pObj;
415,896,779✔
892

893
  int32_t code = TSDB_CODE_SUCCESS;
415,896,779✔
894
  switch (pNode->node.resType.type) {
415,896,779!
895
    case TSDB_DATA_TYPE_NULL:
×
896
      break;
×
897
    case TSDB_DATA_TYPE_BOOL:
1,724,154✔
898
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
1,724,154✔
899
      *(bool*)&pNode->typeData = pNode->datum.b;
1,724,495✔
900
      break;
1,724,495✔
901
    case TSDB_DATA_TYPE_TINYINT:
3,462,722✔
902
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
3,462,722✔
903
      *(int8_t*)&pNode->typeData = pNode->datum.i;
3,463,453✔
904
      break;
3,463,453✔
905
    case TSDB_DATA_TYPE_SMALLINT:
1,142,927✔
906
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,142,927✔
907
      *(int16_t*)&pNode->typeData = pNode->datum.i;
1,143,145✔
908
      break;
1,143,145✔
909
    case TSDB_DATA_TYPE_INT:
989,636✔
910
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
989,636✔
911
      *(int32_t*)&pNode->typeData = pNode->datum.i;
989,814✔
912
      break;
989,814✔
913
    case TSDB_DATA_TYPE_BIGINT:
403,151,235✔
914
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
403,151,235✔
915
      *(int64_t*)&pNode->typeData = pNode->datum.i;
404,182,850✔
916
      break;
404,182,850✔
917
    case TSDB_DATA_TYPE_TIMESTAMP:
446,781✔
918
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
446,781✔
919
      *(int64_t*)&pNode->typeData = pNode->datum.i;
446,789✔
920
      break;
446,789✔
921
    case TSDB_DATA_TYPE_UTINYINT:
133✔
922
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
133✔
923
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
133✔
924
      break;
133✔
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:
176,792✔
934
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
176,792✔
935
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
176,828✔
936
      break;
176,828✔
937
    case TSDB_DATA_TYPE_FLOAT:
163,248✔
938
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
163,248✔
939
      *(float*)&pNode->typeData = pNode->datum.d;
163,248✔
940
      break;
163,248✔
941
    case TSDB_DATA_TYPE_DOUBLE:
2,147,192✔
942
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
2,147,192✔
943
      *(double*)&pNode->typeData = pNode->datum.d;
2,147,838✔
944
      break;
2,147,838✔
945
    case TSDB_DATA_TYPE_NCHAR:
2,844,407✔
946
    case TSDB_DATA_TYPE_VARCHAR:
947
    case TSDB_DATA_TYPE_VARBINARY:
948
    case TSDB_DATA_TYPE_GEOMETRY: {
949
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
2,844,407!
950
        code = TSDB_CODE_FAILED;
×
951
        break;
×
952
      }
953
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
2,844,407✔
954
      if (NULL == pNode->datum.p) {
2,847,352!
955
        code = terrno;
×
956
        break;
×
957
      }
958
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
2,847,352✔
959
      if (TSDB_CODE_SUCCESS == code) {
2,846,803!
960
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
2,846,866✔
961
      }
962
      break;
2,846,803✔
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;
416,932,948✔
980
}
981

982
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
422,748,844✔
983
  SValueNode* pNode = (SValueNode*)pObj;
422,748,844✔
984

985
  int32_t code = TSDB_CODE_SUCCESS;
422,748,844✔
986
  STlv*   pTlv = NULL;
422,748,844✔
987
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
988
    switch (pTlv->type) {
2,147,483,647!
989
      case VALUE_CODE_EXPR_BASE:
420,047,346✔
990
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
420,047,346✔
991
        break;
403,699,014✔
992
      case VALUE_CODE_LITERAL:
402,996,827✔
993
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
402,996,827✔
994
        break;
426,473,675✔
995
      case VALUE_CODE_FLAG:
424,768,844✔
996
        code = tlvDecodeI32(pTlv, &pNode->flag);
424,768,844✔
997
        break;
419,509,315✔
998
      case VALUE_CODE_TRANSLATE:
418,045,195✔
999
        code = tlvDecodeBool(pTlv, &pNode->translate);
418,045,195✔
1000
        break;
415,956,930✔
1001
      case VALUE_CODE_NOT_RESERVED:
415,942,134✔
1002
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
415,942,134✔
1003
        break;
415,904,462✔
1004
      case VALUE_CODE_IS_NULL:
415,727,502✔
1005
        code = tlvDecodeBool(pTlv, &pNode->isNull);
415,727,502✔
1006
        break;
416,486,959✔
1007
      case VALUE_CODE_DATUM:
415,668,490✔
1008
        code = msgToDatum(pTlv, pNode);
415,668,490✔
1009
        break;
416,792,785✔
1010
      default:
×
1011
        break;
×
1012
    }
1013
  }
1014

1015
  return code;
409,006,074✔
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,447,762✔
1021
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
1,447,762✔
1022

1023
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,447,762✔
1024
  if (TSDB_CODE_SUCCESS == code) {
1,447,410!
1025
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
1,447,452✔
1026
  }
1027
  if (TSDB_CODE_SUCCESS == code) {
1,447,277!
1028
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
1,447,327✔
1029
  }
1030
  if (TSDB_CODE_SUCCESS == code) {
1,446,523!
1031
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
1,446,600✔
1032
  }
1033

1034
  return code;
1,446,427✔
1035
}
1036

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

1040
  int32_t code = TSDB_CODE_SUCCESS;
16,384,856✔
1041
  STlv*   pTlv = NULL;
16,384,856✔
1042
  tlvForEach(pDecoder, pTlv, code) {
78,989,960!
1043
    switch (pTlv->type) {
62,614,324!
1044
      case OPERATOR_CODE_EXPR_BASE:
16,379,044✔
1045
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
16,379,044✔
1046
        break;
16,328,396✔
1047
      case OPERATOR_CODE_OP_TYPE:
16,337,980✔
1048
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
16,337,980✔
1049
        break;
16,354,369✔
1050
      case OPERATOR_CODE_LEFT:
16,352,010✔
1051
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
16,352,010✔
1052
        break;
16,391,696✔
1053
      case OPERATOR_CODE_RIGHT:
13,545,290✔
1054
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
13,545,290✔
1055
        break;
13,530,643✔
1056
      default:
×
1057
        break;
×
1058
    }
1059
  }
1060

1061
  return code;
16,334,041✔
1062
}
1063

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

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

1069
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
325,098✔
1070
  if (TSDB_CODE_SUCCESS == code) {
325,233!
1071
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
325,244✔
1072
  }
1073
  if (TSDB_CODE_SUCCESS == code) {
325,223✔
1074
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
325,190✔
1075
  }
1076

1077
  return code;
325,074✔
1078
}
1079

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

1083
  int32_t code = TSDB_CODE_SUCCESS;
4,853,112✔
1084
  STlv*   pTlv = NULL;
4,853,112✔
1085
  tlvForEach(pDecoder, pTlv, code) {
19,405,564!
1086
    switch (pTlv->type) {
14,550,969!
1087
      case LOGIC_COND_CODE_EXPR_BASE:
4,852,552✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
4,852,552✔
1089
        break;
4,847,200✔
1090
      case LOGIC_COND_CODE_COND_TYPE:
4,848,239✔
1091
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
4,848,239✔
1092
        break;
4,850,056✔
1093
      case LOGIC_COND_CODE_PARAMETERS:
4,850,178✔
1094
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
4,850,178✔
1095
        break;
4,855,196✔
1096
      default:
×
1097
        break;
×
1098
    }
1099
  }
1100

1101
  return code;
4,852,046✔
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,782,024✔
1119
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
3,782,024✔
1120

1121
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
3,782,024✔
1122
  if (TSDB_CODE_SUCCESS == code) {
3,764,630!
1123
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
3,764,924✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
3,767,252!
1126
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
3,767,778✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
3,770,143!
1129
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
3,770,885✔
1130
  }
1131
  if (TSDB_CODE_SUCCESS == code) {
3,769,650!
1132
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
3,770,298✔
1133
  }
1134
  if (TSDB_CODE_SUCCESS == code) {
3,753,633!
1135
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
3,754,683✔
1136
  }
1137
  if (TSDB_CODE_SUCCESS == code) {
3,776,966!
1138
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
3,778,537✔
1139
  }
1140
  if (TSDB_CODE_SUCCESS == code) {
3,775,826!
1141
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
3,777,780✔
1142
  }  
1143
  if (TSDB_CODE_SUCCESS == code) {
3,777,974!
1144
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
3,780,868✔
1145
  }
1146
  if (TSDB_CODE_SUCCESS == code) {
3,774,571!
1147
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
3,777,842✔
1148
  }
1149
  if (TSDB_CODE_SUCCESS == code) {
3,775,336!
1150
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
3,780,030✔
1151
  }
1152

1153
  return code;
3,780,909✔
1154
}
1155

1156
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
11,184,801✔
1157
  SFunctionNode* pNode = (SFunctionNode*)pObj;
11,184,801✔
1158

1159
  int32_t code = TSDB_CODE_SUCCESS;
11,184,801✔
1160
  STlv*   pTlv = NULL;
11,184,801✔
1161
  tlvForEach(pDecoder, pTlv, code) {
130,690,467!
1162
    switch (pTlv->type) {
119,515,548!
1163
      case FUNCTION_CODE_EXPR_BASE:
11,182,637✔
1164
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
11,182,637✔
1165
        break;
11,159,109✔
1166
      case FUNCTION_CODE_FUNCTION_NAME:
11,160,624✔
1167
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
11,160,624✔
1168
        break;
11,162,171✔
1169
      case FUNCTION_CODE_FUNCTION_ID:
11,160,978✔
1170
        code = tlvDecodeI32(pTlv, &pNode->funcId);
11,160,978✔
1171
        break;
11,162,329✔
1172
      case FUNCTION_CODE_FUNCTION_TYPE:
11,162,700✔
1173
        code = tlvDecodeI32(pTlv, &pNode->funcType);
11,162,700✔
1174
        break;
11,159,818✔
1175
      case FUNCTION_CODE_PARAMETERS:
7,772,386✔
1176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
7,772,386✔
1177
        break;
7,792,519✔
1178
      case FUNCTION_CODE_UDF_BUF_SIZE:
11,186,638✔
1179
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
11,186,638✔
1180
        break;
11,182,511✔
1181
      case FUNCTION_NODE_HAS_PK:
11,181,875✔
1182
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
11,181,875✔
1183
        break;
11,179,631✔
1184
      case FUNCTION_NODE_PK_BYTES:
11,178,002✔
1185
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
11,178,002✔
1186
        break;  
11,177,572✔
1187
      case FUNCTION_CODE_IS_MERGE_FUNC:
11,177,474✔
1188
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
11,177,474✔
1189
        break;
11,177,259✔
1190
      case FUNCTION_CODE_MERGE_FUNC_OF:
11,176,466✔
1191
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
11,176,466✔
1192
        break;
11,175,853✔
1193
      case FUNCTION_CODE_TRIM_TYPE:
11,175,768✔
1194
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
11,175,768✔
1195
        break;
11,176,894✔
1196
      default:
×
1197
        break;
×
1198
    }
1199
  }
1200

1201
  return code;
11,158,456✔
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) {
320,409✔
1207
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
320,409✔
1208

1209
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
320,409✔
1210
  if (TSDB_CODE_SUCCESS == code) {
320,329!
1211
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
320,330✔
1212
  }
1213
  if (TSDB_CODE_SUCCESS == code) {
320,362!
1214
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
320,364✔
1215
  }
1216

1217
  return code;
320,363✔
1218
}
1219

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

1223
  int32_t code = TSDB_CODE_SUCCESS;
2,396,195✔
1224
  STlv*   pTlv = NULL;
2,396,195✔
1225
  tlvForEach(pDecoder, pTlv, code) {
9,584,395!
1226
    switch (pTlv->type) {
7,188,384!
1227
      case ORDER_BY_EXPR_CODE_EXPR:
2,396,157✔
1228
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
2,396,157✔
1229
        break;
2,396,274✔
1230
      case ORDER_BY_EXPR_CODE_ORDER:
2,396,203✔
1231
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
2,396,203✔
1232
        break;
2,396,060✔
1233
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
2,396,024✔
1234
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
2,396,024✔
1235
        break;
2,395,866✔
1236
      default:
×
1237
        break;
×
1238
    }
1239
  }
1240

1241
  return code;
2,395,744✔
1242
}
1243

1244
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1245

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

1249
  int32_t code = tlvEncodeI64(pEncoder, LIMIT_CODE_LIMIT, pNode->limit);
201,377✔
1250
  if (TSDB_CODE_SUCCESS == code) {
201,377!
1251
    code = tlvEncodeI64(pEncoder, LIMIT_CODE_OFFSET, pNode->offset);
201,380✔
1252
  }
1253

1254
  return code;
201,377✔
1255
}
1256

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

1260
  int32_t code = TSDB_CODE_SUCCESS;
810,078✔
1261
  STlv*   pTlv = NULL;
810,078✔
1262
  tlvForEach(pDecoder, pTlv, code) {
2,429,979!
1263
    switch (pTlv->type) {
1,620,025!
1264
      case LIMIT_CODE_LIMIT:
810,067✔
1265
        code = tlvDecodeI64(pTlv, &pNode->limit);
810,067✔
1266
        break;
810,022✔
1267
      case LIMIT_CODE_OFFSET:
809,958✔
1268
        code = tlvDecodeI64(pTlv, &pNode->offset);
809,958✔
1269
        break;
809,879✔
1270
      default:
×
1271
        break;
×
1272
    }
1273
  }
1274

1275
  return code;
809,959✔
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,432,854✔
1281
  const SName* pNode = (const SName*)pObj;
1,432,854✔
1282

1283
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
1,432,854✔
1284
  if (TSDB_CODE_SUCCESS == code) {
1,432,862!
1285
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
1,432,919✔
1286
  }
1287
  if (TSDB_CODE_SUCCESS == code) {
1,433,140!
1288
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
1,433,256✔
1289
  }
1290
  if (TSDB_CODE_SUCCESS == code) {
1,433,000!
1291
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
1,433,196✔
1292
  }
1293

1294
  return code;
1,432,705✔
1295
}
1296

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

1300
  int32_t code = TSDB_CODE_SUCCESS;
5,155,914✔
1301
  STlv*   pTlv = NULL;
5,155,914✔
1302
  tlvForEach(pDecoder, pTlv, code) {
25,780,480!
1303
    switch (pTlv->type) {
20,625,258!
1304
      case NAME_CODE_TYPE:
5,156,296✔
1305
        code = tlvDecodeU8(pTlv, &pNode->type);
5,156,296✔
1306
        break;
5,155,839✔
1307
      case NAME_CODE_ACCT_ID:
5,156,185✔
1308
        code = tlvDecodeI32(pTlv, &pNode->acctId);
5,156,185✔
1309
        break;
5,155,983✔
1310
      case NAME_CODE_DB_NAME:
5,156,781✔
1311
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
5,156,781✔
1312
        break;
5,156,298✔
1313
      case NAME_CODE_TABLE_NAME:
5,155,996✔
1314
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
5,155,996✔
1315
        break;
5,156,446✔
1316
      default:
×
1317
        break;
×
1318
    }
1319
  }
1320

1321
  return code;
5,157,222✔
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) {
72,836✔
1327
  const STimeWindow* pNode = (const STimeWindow*)pObj;
72,836✔
1328

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

1334
  return code;
72,840✔
1335
}
1336

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

1340
  int32_t code = TSDB_CODE_SUCCESS;
617,853✔
1341
  STlv*   pTlv = NULL;
617,853✔
1342
  tlvForEach(pDecoder, pTlv, code) {
1,853,544!
1343
    switch (pTlv->type) {
1,235,700!
1344
      case TIME_WINDOW_CODE_START_KEY:
617,854✔
1345
        code = tlvDecodeI64(pTlv, &pNode->skey);
617,854✔
1346
        break;
617,850✔
1347
      case TIME_WINDOW_CODE_END_KEY:
617,846✔
1348
        code = tlvDecodeI64(pTlv, &pNode->ekey);
617,846✔
1349
        break;
617,841✔
1350
      default:
×
1351
        break;
×
1352
    }
1353
  }
1354

1355
  return code;
617,847✔
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) {
46,308✔
1361
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
46,308✔
1362

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

1368
  return code;
46,339✔
1369
}
1370

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

1374
  int32_t code = TSDB_CODE_SUCCESS;
2,979,360✔
1375
  STlv*   pTlv = NULL;
2,979,360✔
1376
  tlvForEach(pDecoder, pTlv, code) {
8,938,865!
1377
    switch (pTlv->type) {
5,957,785!
1378
      case NODE_LIST_CODE_DATA_TYPE:
2,979,515✔
1379
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
2,979,515✔
1380
        break;
2,978,175✔
1381
      case NODE_LIST_CODE_NODE_LIST:
2,978,270✔
1382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
2,978,270✔
1383
        break;
2,981,330✔
1384
      default:
×
1385
        break;
×
1386
    }
1387
  }
1388

1389
  return code;
2,980,586✔
1390
}
1391

1392
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1393

1394
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
12,412,853✔
1395
  const STargetNode* pNode = (const STargetNode*)pObj;
12,412,853✔
1396

1397
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
12,412,853✔
1398
  if (TSDB_CODE_SUCCESS == code) {
12,299,956!
1399
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
12,302,538✔
1400
  }
1401

1402
  return code;
12,227,865✔
1403
}
1404

1405
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
12,371,004✔
1406
  const STargetNode* pNode = (const STargetNode*)pObj;
12,371,004✔
1407

1408
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
12,371,004✔
1409
  if (TSDB_CODE_SUCCESS == code) {
12,258,573!
1410
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
12,259,873✔
1411
  }
1412

1413
  return code;
12,288,678✔
1414
}
1415

1416
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
66,480,760✔
1417
  STargetNode* pNode = (STargetNode*)pObj;
66,480,760✔
1418

1419
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
66,480,760✔
1420
  if (TSDB_CODE_SUCCESS == code) {
66,996,735!
1421
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
67,021,485✔
1422
  }
1423

1424
  return code;
66,981,639✔
1425
}
1426

1427
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
66,628,008✔
1428
  STargetNode* pNode = (STargetNode*)pObj;
66,628,008✔
1429

1430
  int32_t code = TSDB_CODE_SUCCESS;
66,628,008✔
1431
  STlv*   pTlv = NULL;
66,628,008✔
1432
  tlvForEach(pDecoder, pTlv, code) {
200,121,549!
1433
    switch (pTlv->type) {
133,176,225!
1434
      case TARGET_CODE_INLINE_ATTRS:
66,463,195✔
1435
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
66,463,195✔
1436
        break;
66,924,069✔
1437
      case TARGET_CODE_EXPR:
66,713,030✔
1438
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
66,713,030✔
1439
        break;
66,569,472✔
1440
      default:
×
1441
        break;
×
1442
    }
1443
  }
1444

1445
  return code;
66,153,471✔
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,797,212✔
1451
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
5,797,212✔
1452

1453
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
5,797,212✔
1454
  if (TSDB_CODE_SUCCESS == code) {
5,794,984!
1455
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
5,795,193✔
1456
  }
1457
  if (TSDB_CODE_SUCCESS == code) {
5,793,195!
1458
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
5,793,531✔
1459
  }
1460
  if (TSDB_CODE_SUCCESS == code) {
5,791,801!
1461
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
5,792,285✔
1462
  }
1463

1464
  return code;
5,792,175✔
1465
}
1466

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

1470
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
5,798,201✔
1471
  if (TSDB_CODE_SUCCESS == code) {
5,792,509!
1472
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
5,792,635✔
1473
  }
1474

1475
  return code;
5,787,585✔
1476
}
1477

1478
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
24,188,284✔
1479
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
24,188,284✔
1480

1481
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
24,188,284✔
1482
  if (TSDB_CODE_SUCCESS == code) {
24,209,654!
1483
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
24,210,685✔
1484
  }
1485
  if (TSDB_CODE_SUCCESS == code) {
24,190,955!
1486
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
24,192,262✔
1487
  }
1488
  if (TSDB_CODE_SUCCESS == code) {
24,179,722!
1489
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
24,181,490✔
1490
  }
1491

1492
  return code;
24,176,570✔
1493
}
1494

1495
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
24,193,163✔
1496
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
24,193,163✔
1497

1498
  int32_t code = TSDB_CODE_SUCCESS;
24,193,163✔
1499
  STlv*   pTlv = NULL;
24,193,163✔
1500
  tlvForEach(pDecoder, pTlv, code) {
72,564,704!
1501
    switch (pTlv->type) {
48,370,504!
1502
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
24,192,630✔
1503
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
24,192,630✔
1504
        break;
24,176,565✔
1505
      case DATA_BLOCK_DESC_CODE_SLOTS:
24,177,874✔
1506
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
24,177,874✔
1507
        break;
24,194,976✔
1508
      default:
×
1509
        break;
×
1510
    }
1511
  }
1512

1513
  return code;
24,181,812✔
1514
}
1515

1516
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1517

1518
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
22,050,759✔
1519
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
22,050,759✔
1520

1521
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
22,050,759✔
1522
  if (TSDB_CODE_SUCCESS == code) {
21,930,781!
1523
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
21,937,937✔
1524
  }
1525
  if (TSDB_CODE_SUCCESS == code) {
21,839,098!
1526
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
21,853,446✔
1527
  }
1528
  if (TSDB_CODE_SUCCESS == code) {
21,711,001!
1529
    code = tlvEncodeValueBool(pEncoder, pNode->output);
21,728,537✔
1530
  }
1531
  if (TSDB_CODE_SUCCESS == code) {
21,568,958!
1532
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
21,590,603✔
1533
  }
1534

1535
  return code;
21,545,165✔
1536
}
1537

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

1542
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
122,135,411✔
1543
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
122,135,411✔
1544

1545
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
122,135,411✔
1546
  if (TSDB_CODE_SUCCESS == code) {
123,553,817!
1547
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
123,592,196✔
1548
  }
1549
  if (TSDB_CODE_SUCCESS == code) {
120,946,511!
1550
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
120,985,748✔
1551
  }
1552
  if (TSDB_CODE_SUCCESS == code) {
121,480,431!
1553
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
121,528,860✔
1554
  }
1555
  if (TSDB_CODE_SUCCESS == code) {
121,527,935!
1556
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
121,584,654✔
1557
  }
1558

1559
  return code;
121,644,499✔
1560
}
1561

1562
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
122,338,835✔
1563
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
122,338,835✔
1564

1565
  int32_t code = TSDB_CODE_SUCCESS;
122,338,835✔
1566
  STlv*   pTlv = NULL;
122,338,835✔
1567
  tlvForEach(pDecoder, pTlv, code) {
243,934,413!
1568
    switch (pTlv->type) {
122,084,174!
1569
      case SLOT_DESC_CODE_INLINE_ATTRS:
122,084,174✔
1570
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
122,084,174✔
1571
        break;
121,595,578✔
1572
      default:
×
1573
        break;
×
1574
    }
1575
  }
1576

1577
  return code;
121,232,240✔
1578
}
1579

1580
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1581

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

1585
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
2,425,753✔
1586
  if (TSDB_CODE_SUCCESS == code) {
2,426,259!
1587
    code = tlvEncodeValueU16(pEncoder, pNode->port);
2,426,322✔
1588
  }
1589

1590
  return code;
2,426,301✔
1591
}
1592

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

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

1601
  return code;
37,145✔
1602
}
1603

1604
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
9,309,394✔
1605
  SEp* pNode = (SEp*)pObj;
9,309,394✔
1606

1607
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
9,309,394✔
1608
  if (TSDB_CODE_SUCCESS == code) {
9,315,510!
1609
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
9,315,686✔
1610
  }
1611

1612
  return code;
9,317,857✔
1613
}
1614

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

1618
  int32_t code = TSDB_CODE_SUCCESS;
51,088✔
1619
  STlv*   pTlv = NULL;
51,088✔
1620
  tlvForEach(pDecoder, pTlv, code) {
153,414!
1621
    switch (pTlv->type) {
102,237!
1622
      case EP_CODE_FQDN:
51,126✔
1623
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
51,126✔
1624
        break;
51,116✔
1625
      case EP_CODE_port:
51,111✔
1626
        code = tlvDecodeU16(pTlv, &pNode->port);
51,111✔
1627
        break;
51,210✔
1628
      default:
×
1629
        break;
×
1630
    }
1631
  }
1632

1633
  return code;
51,165✔
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,853,248✔
1639
  const SEpSet* pNode = (const SEpSet*)pObj;
2,853,248✔
1640

1641
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
2,853,248✔
1642
  if (TSDB_CODE_SUCCESS == code) {
2,853,205!
1643
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
2,853,283✔
1644
  }
1645

1646
  return code;
2,853,573✔
1647
}
1648

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

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

1660
  return code;
35,825✔
1661
}
1662

1663
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
11,302,387✔
1664
  SEpSet* pNode = (SEpSet*)pObj;
11,302,387✔
1665

1666
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
11,302,387✔
1667
  if (TSDB_CODE_SUCCESS == code) {
11,304,440✔
1668
    int32_t numOfEps = 0;
11,304,289✔
1669
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
11,304,289✔
1670
    pNode->numOfEps = numOfEps;
11,309,911✔
1671
  }
1672

1673
  return code;
11,310,062✔
1674
}
1675

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

1679
  int32_t code = TSDB_CODE_SUCCESS;
49,761✔
1680
  STlv*   pTlv = NULL;
49,761✔
1681
  tlvForEach(pDecoder, pTlv, code) {
199,209!
1682
    switch (pTlv->type) {
149,379!
1683
      case EP_SET_CODE_IN_USE:
49,796✔
1684
        code = tlvDecodeI8(pTlv, &pNode->inUse);
49,796✔
1685
        break;
49,798✔
1686
      case EP_SET_CODE_NUM_OF_EPS:
49,792✔
1687
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
49,792✔
1688
        break;
49,788✔
1689
      case EP_SET_CODE_EPS:
49,791✔
1690
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
49,791✔
1691
        break;
49,862✔
1692
      default:
×
1693
        break;
×
1694
    }
1695
  }
1696

1697
  return code;
49,835✔
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,852,840✔
1703
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
2,852,840✔
1704

1705
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
2,852,840✔
1706
  if (TSDB_CODE_SUCCESS == code) {
2,853,391!
1707
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
2,853,469✔
1708
  }
1709

1710
  return code;
2,853,583✔
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) {
11,302,835✔
1725
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
11,302,835✔
1726

1727
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
11,302,835✔
1728
  if (TSDB_CODE_SUCCESS == code) {
11,304,587!
1729
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
11,305,006✔
1730
  }
1731

1732
  return code;
11,310,062✔
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) {
977,939✔
1757
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
977,939✔
1758

1759
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
977,939✔
1760
  if (TSDB_CODE_SUCCESS == code) {
977,926!
1761
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
977,926✔
1762
  }
1763
  if (TSDB_CODE_SUCCESS == code) {
977,917!
1764
    code = tlvEncodeValueU64(pEncoder, pNode->schedId);
977,917✔
1765
  }
1766
  if (TSDB_CODE_SUCCESS == code) {
977,895!
1767
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
977,897✔
1768
  }
1769
  if (TSDB_CODE_SUCCESS == code) {
977,896!
1770
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
977,898✔
1771
  }
1772
  if (TSDB_CODE_SUCCESS == code) {
977,900!
1773
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
977,901✔
1774
  }
1775

1776
  return code;
977,895✔
1777
}
1778

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

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

1786
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
4,138,732✔
1787
  if (TSDB_CODE_SUCCESS == code) {
4,139,058!
1788
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
4,139,058✔
1789
  }
1790
  if (TSDB_CODE_SUCCESS == code) {
4,138,984✔
1791
    code = tlvDecodeValueU64(pDecoder, &pNode->schedId);
4,138,957✔
1792
  }
1793
  if (TSDB_CODE_SUCCESS == code) {
4,138,871✔
1794
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
4,138,850✔
1795
  }
1796
  if (TSDB_CODE_SUCCESS == code) {
4,138,819✔
1797
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
4,138,804✔
1798
  }
1799
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
4,138,685✔
1800
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
4,138,682✔
1801
  }
1802

1803
  return code;
4,138,669✔
1804
}
1805

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

1809
  int32_t code = TSDB_CODE_SUCCESS;
4,138,753✔
1810
  STlv*   pTlv = NULL;
4,138,753✔
1811
  tlvForEach(pDecoder, pTlv, code) {
8,277,419!
1812
    switch (pTlv->type) {
4,138,739!
1813
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
4,138,739✔
1814
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
4,138,739✔
1815
        break;
4,138,666✔
1816
      default:
×
1817
        break;
×
1818
    }
1819
  }
1820

1821
  return code;
4,138,646✔
1822
}
1823

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

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

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

1837
  return code;
7,252✔
1838
}
1839

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

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

1861
  return code;
7,899✔
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,276✔
1867
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
5,276✔
1868

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

1880
  return code;
5,274✔
1881
}
1882

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

1886
  int32_t code = TSDB_CODE_SUCCESS;
5,575✔
1887
  STlv*   pTlv = NULL;
5,575✔
1888
  tlvForEach(pDecoder, pTlv, code) {
22,213!
1889
    switch (pTlv->type) {
16,638!
1890
      case CASE_WHEN_CODE_EXPR_BASE:
5,576✔
1891
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,576✔
1892
        break;
5,572✔
1893
      case CASE_WHEN_CODE_CASE:
1,068✔
1894
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
1,068✔
1895
        break;
1,068✔
1896
      case CASE_WHEN_CODE_ELSE:
4,421✔
1897
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
4,421✔
1898
        break;
4,422✔
1899
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
5,573✔
1900
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
5,573✔
1901
        break;
5,576✔
1902
      default:
×
1903
        break;
×
1904
    }
1905
  }
1906

1907
  return code;
5,576✔
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,926,494✔
1958
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
3,926,494✔
1959

1960
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
3,926,494✔
1961
  if (TSDB_CODE_SUCCESS == code) {
3,923,535!
1962
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
3,923,651✔
1963
  }
1964
  if (TSDB_CODE_SUCCESS == code) {
3,924,268!
1965
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
3,924,440✔
1966
  }
1967
  if (TSDB_CODE_SUCCESS == code) {
3,925,500!
1968
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
3,925,780✔
1969
  }
1970
  if (TSDB_CODE_SUCCESS == code) {
3,926,203!
1971
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
3,926,582✔
1972
  }
1973
  if (TSDB_CODE_SUCCESS == code) {
3,925,923!
1974
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
3,926,444✔
1975
  }
1976
  if (TSDB_CODE_SUCCESS == code) {
3,925,704!
1977
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
3,926,323✔
1978
  }
1979
  if (TSDB_CODE_SUCCESS == code) {
3,924,915!
1980
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
3,925,622✔
1981
  }
1982
  if (TSDB_CODE_SUCCESS == code) { 
3,925,326!
1983
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
3,925,950✔
1984
  }
1985

1986
  return code;
3,924,959✔
1987
}
1988

1989
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
17,022,827✔
1990
  SPhysiNode* pNode = (SPhysiNode*)pObj;
17,022,827✔
1991

1992
  int32_t code = TSDB_CODE_SUCCESS;
17,022,827✔
1993
  STlv*   pTlv = NULL;
17,022,827✔
1994
  tlvForEach(pDecoder, pTlv, code) {
114,280,183!
1995
    switch (pTlv->type) {
97,258,103!
1996
      case PHY_NODE_CODE_OUTPUT_DESC:
17,023,395✔
1997
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
17,023,395✔
1998
        break;
17,025,792✔
1999
      case PHY_NODE_CODE_CONDITIONS:
3,005,146✔
2000
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
3,005,146✔
2001
        break;
3,004,034✔
2002
      case PHY_NODE_CODE_CHILDREN:
8,316,472✔
2003
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
8,316,472✔
2004
        break;
8,318,410✔
2005
      case PHY_NODE_CODE_LIMIT:
799,045✔
2006
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
799,045✔
2007
        break;
798,771✔
2008
      case PHY_NODE_CODE_SLIMIT:
10,908✔
2009
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
10,908✔
2010
        break;
10,906✔
2011
      case PHY_NODE_CODE_INPUT_TS_ORDER:
17,027,778✔
2012
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
17,027,778✔
2013
        break;
17,026,871✔
2014
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
17,026,740✔
2015
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
17,026,740✔
2016
        break;
17,026,396✔
2017
      case PHY_NODE_CODE_DYNAMIC_OP:
17,025,510✔
2018
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
17,025,510✔
2019
        break;
17,022,975✔
2020
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
17,023,109✔
2021
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
17,023,109✔
2022
        break;
17,023,201✔
2023
      default:
×
2024
        break;
×
2025
    }
2026
  }
2027

2028
  return code;
16,995,203✔
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,432,439✔
2043
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
1,432,439✔
2044

2045
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,432,439✔
2046
  if (TSDB_CODE_SUCCESS == code) {
1,432,799!
2047
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
1,432,863✔
2048
  }
2049
  if (TSDB_CODE_SUCCESS == code) {
1,432,719!
2050
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
1,432,820✔
2051
  }
2052
  if (TSDB_CODE_SUCCESS == code) {
1,432,377!
2053
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
1,432,512✔
2054
  }
2055
  if (TSDB_CODE_SUCCESS == code) {
1,432,954!
2056
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
1,433,090✔
2057
  }
2058
  if (TSDB_CODE_SUCCESS == code) {
1,432,966!
2059
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
1,433,237✔
2060
  }
2061
  if (TSDB_CODE_SUCCESS == code) {
1,432,861!
2062
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
1,433,153✔
2063
  }
2064
  if (TSDB_CODE_SUCCESS == code) {
1,432,535!
2065
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
1,432,910✔
2066
  }
2067

2068
  return code;
1,433,021✔
2069
}
2070

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

2074
  int32_t code = TSDB_CODE_SUCCESS;
5,156,097✔
2075
  STlv*   pTlv = NULL;
5,156,097✔
2076
  tlvForEach(pDecoder, pTlv, code) {
43,272,437!
2077
    switch (pTlv->type) {
38,115,073!
2078
      case PHY_SCAN_CODE_BASE_NODE:
5,156,001✔
2079
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
5,156,001✔
2080
        break;
5,154,519✔
2081
      case PHY_SCAN_CODE_SCAN_COLS:
5,109,810✔
2082
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
5,109,810✔
2083
        break;
5,114,983✔
2084
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
2,059,514✔
2085
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
2,059,514✔
2086
        break;
2,059,936✔
2087
      case PHY_SCAN_CODE_BASE_UID:
5,160,627✔
2088
        code = tlvDecodeU64(pTlv, &pNode->uid);
5,160,627✔
2089
        break;
5,158,856✔
2090
      case PHY_SCAN_CODE_BASE_SUID:
5,158,657✔
2091
        code = tlvDecodeU64(pTlv, &pNode->suid);
5,158,657✔
2092
        break;
5,157,561✔
2093
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
5,157,850✔
2094
        code = tlvDecodeI8(pTlv, &pNode->tableType);
5,157,850✔
2095
        break;
5,156,792✔
2096
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
5,156,286✔
2097
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
5,156,286✔
2098
        break;
5,156,547✔
2099
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
5,156,328✔
2100
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
5,156,328✔
2101
        break;
5,157,146✔
2102
      default:
×
2103
        break;
×
2104
    }
2105
  }
2106

2107
  return code;
5,148,693✔
2108
}
2109

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

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

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

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

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

2129
  int32_t code = TSDB_CODE_SUCCESS;
47,954✔
2130
  STlv*   pTlv = NULL;
47,954✔
2131
  tlvForEach(pDecoder, pTlv, code) {
143,689!
2132
    switch (pTlv->type) {
95,807!
2133
      case PHY_TAG_SCAN_CODE_SCAN:
47,937✔
2134
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
47,937✔
2135
        break;
47,865✔
2136
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
47,870✔
2137
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
47,870✔
2138
        break;
47,870✔
2139
      default:
×
2140
        break;
×
2141
    }
2142
  }
2143

2144
  return code;
47,865✔
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) {
8,550✔
2157
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
8,550✔
2158

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

2176
  return code;
8,539✔
2177
}
2178

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

2182
  int32_t code = TSDB_CODE_SUCCESS;
12,912✔
2183
  STlv*   pTlv = NULL;
12,912✔
2184
  tlvForEach(pDecoder, pTlv, code) {
67,361!
2185
    switch (pTlv->type) {
54,456!
2186
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
12,915✔
2187
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
12,915✔
2188
        break;
12,899✔
2189
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
2,719✔
2190
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
2,719✔
2191
        break;
2,724✔
2192
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
12,912✔
2193
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
12,912✔
2194
        break;
12,914✔
2195
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
12,915✔
2196
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
12,915✔
2197
        break;
12,916✔
2198
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
12,836✔
2199
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
12,836✔
2200
        break;
12,837✔
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;
12,894✔
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,344,319✔
2223
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,344,319✔
2224

2225
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
1,344,319✔
2226
  if (TSDB_CODE_SUCCESS == code) {
1,344,147!
2227
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
1,344,213✔
2228
  }
2229
  if (TSDB_CODE_SUCCESS == code) {
1,343,571!
2230
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
1,343,590✔
2231
  }
2232
  if (TSDB_CODE_SUCCESS == code) {
1,343,506!
2233
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
1,343,582✔
2234
  }
2235
  if (TSDB_CODE_SUCCESS == code) {
1,343,569!
2236
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
1,343,738✔
2237
  }
2238
  if (TSDB_CODE_SUCCESS == code) {
1,343,556!
2239
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
1,343,794✔
2240
  }
2241
  if (TSDB_CODE_SUCCESS == code) {
1,343,478!
2242
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
1,343,510✔
2243
  }
2244
  if (TSDB_CODE_SUCCESS == code) {
1,343,537!
2245
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
1,343,618✔
2246
  }
2247
  if (TSDB_CODE_SUCCESS == code) {
1,343,601!
2248
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
1,343,731✔
2249
  }
2250
  if (TSDB_CODE_SUCCESS == code) {
1,343,878!
2251
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
1,344,091✔
2252
  }
2253
  if (TSDB_CODE_SUCCESS == code) {
1,343,681!
2254
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
1,343,802✔
2255
  }
2256
  if (TSDB_CODE_SUCCESS == code) {
1,343,608!
2257
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
1,343,770✔
2258
  }
2259
  if (TSDB_CODE_SUCCESS == code) {
1,343,281!
2260
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
1,343,526✔
2261
  }
2262
  if (TSDB_CODE_SUCCESS == code) {
1,343,192!
2263
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
1,343,504✔
2264
  }
2265
  if (TSDB_CODE_SUCCESS == code) {
1,343,616!
2266
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
1,343,819✔
2267
  }
2268
  if (TSDB_CODE_SUCCESS == code) {
1,343,408!
2269
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
1,343,658✔
2270
  }
2271
  if (TSDB_CODE_SUCCESS == code) {
1,343,458!
2272
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
1,343,756✔
2273
  }
2274
  if (TSDB_CODE_SUCCESS == code) {
1,343,213!
2275
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
1,343,621✔
2276
  }
2277
  if (TSDB_CODE_SUCCESS == code) {
1,343,148!
2278
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
1,343,499✔
2279
  }
2280
  if (TSDB_CODE_SUCCESS == code) {
1,343,182!
2281
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
1,343,661✔
2282
  }
2283
  if (TSDB_CODE_SUCCESS == code) {
1,342,997!
2284
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
1,343,635✔
2285
  }
2286
  return code;
1,343,607✔
2287
}
2288

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

2292
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,344,638✔
2293
  if (TSDB_CODE_SUCCESS == code) {
1,344,592!
2294
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
1,344,649✔
2295
  }
2296
  if (TSDB_CODE_SUCCESS == code) {
1,344,087!
2297
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
1,344,153✔
2298
  }
2299
  if (TSDB_CODE_SUCCESS == code) {
1,344,236!
2300
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
1,344,348✔
2301
  }
2302
  if (TSDB_CODE_SUCCESS == code) {
1,344,439!
2303
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
1,344,604✔
2304
  }
2305
  if (TSDB_CODE_SUCCESS == code) {
1,344,451!
2306
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
1,344,716✔
2307
  }
2308

2309
  return code;
1,344,678✔
2310
}
2311

2312
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
5,040,858✔
2313
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
5,040,858✔
2314

2315
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
5,040,858✔
2316
  if (TSDB_CODE_SUCCESS == code) {
5,042,306!
2317
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
5,042,955✔
2318
  }
2319
  if (TSDB_CODE_SUCCESS == code) {
5,041,081!
2320
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
5,042,147✔
2321
  }
2322
  if (TSDB_CODE_SUCCESS == code) {
5,040,990!
2323
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
5,042,556✔
2324
  }
2325
  if (TSDB_CODE_SUCCESS == code) {
5,040,963!
2326
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
5,041,204✔
2327
  }
2328
  if (TSDB_CODE_SUCCESS == code) {
5,042,884!
2329
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
5,043,461✔
2330
  }
2331
  if (TSDB_CODE_SUCCESS == code) {
5,042,724!
2332
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
5,043,389✔
2333
  }
2334
  if (TSDB_CODE_SUCCESS == code) {
5,044,669!
2335
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
5,045,389✔
2336
  }
2337
  if (TSDB_CODE_SUCCESS == code) {
5,044,180✔
2338
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
5,043,400✔
2339
  }
2340
  if (TSDB_CODE_SUCCESS == code) {
5,043,749✔
2341
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
5,043,087✔
2342
  }
2343
  if (TSDB_CODE_SUCCESS == code) {
5,043,218✔
2344
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
5,042,701✔
2345
  }
2346
  if (TSDB_CODE_SUCCESS == code) {
5,045,230✔
2347
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
5,044,897✔
2348
  }
2349
  if (TSDB_CODE_SUCCESS == code) {
5,045,300✔
2350
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
5,043,756✔
2351
  }
2352
  if (TSDB_CODE_SUCCESS == code) {
5,046,692✔
2353
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
5,045,244✔
2354
  }
2355
  if (TSDB_CODE_SUCCESS == code) {
5,045,767✔
2356
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
5,044,383✔
2357
  }
2358
  if (TSDB_CODE_SUCCESS == code) {
5,046,511✔
2359
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
5,045,163✔
2360
  }
2361
  if (TSDB_CODE_SUCCESS == code) {
5,047,741✔
2362
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
5,045,609✔
2363
  }
2364
  if (TSDB_CODE_SUCCESS == code) {
5,047,816✔
2365
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
5,046,213✔
2366
  }
2367
  if (TSDB_CODE_SUCCESS == code) {
5,048,521✔
2368
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
5,046,948✔
2369
  }
2370
  if (TSDB_CODE_SUCCESS == code) {
5,048,072✔
2371
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
5,046,531✔
2372
  }
2373
  if (TSDB_CODE_SUCCESS == code) {
5,048,130✔
2374
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
5,045,647✔
2375
  }
2376
  return code;
5,046,525✔
2377
}
2378

2379
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
5,043,996✔
2380
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
5,043,996✔
2381

2382
  int32_t code = TSDB_CODE_SUCCESS;
5,043,996✔
2383
  STlv*   pTlv = NULL;
5,043,996✔
2384
  tlvForEach(pDecoder, pTlv, code) {
15,519,516!
2385
    switch (pTlv->type) {
10,475,745!
2386
      case PHY_TABLE_SCAN_CODE_SCAN:
5,044,444✔
2387
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
5,044,444✔
2388
        break;
5,040,741✔
2389
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
5,042,939✔
2390
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
5,042,939✔
2391
        break;
5,046,224✔
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:
388,362✔
2396
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
388,362✔
2397
        break;
388,555✔
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;
5,044,199✔
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,644✔
2421
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
35,644✔
2422

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

2437
  return code;
35,664✔
2438
}
2439

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

2443
  int32_t code = TSDB_CODE_SUCCESS;
49,528✔
2444
  STlv*   pTlv = NULL;
49,528✔
2445
  tlvForEach(pDecoder, pTlv, code) {
297,134!
2446
    switch (pTlv->type) {
247,637!
2447
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
49,556✔
2448
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
49,556✔
2449
        break;
49,473✔
2450
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
49,482✔
2451
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
49,482✔
2452
        break;
49,545✔
2453
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
49,540✔
2454
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
49,540✔
2455
        break;
49,532✔
2456
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
49,528✔
2457
        code = tlvDecodeI32(pTlv, &pNode->accountId);
49,528✔
2458
        break;
49,524✔
2459
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
49,531✔
2460
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
49,531✔
2461
        break;
49,532✔
2462
      default:
×
2463
        break;
×
2464
    }
2465
  }
2466

2467
  return code;
49,495✔
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) {
522,662✔
2479
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
522,662✔
2480

2481
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
522,662✔
2482
  if (TSDB_CODE_SUCCESS == code) {
522,639!
2483
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
522,644✔
2484
  }
2485
  if (TSDB_CODE_SUCCESS == code) {
522,607!
2486
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
522,617✔
2487
  }
2488
  if (TSDB_CODE_SUCCESS == code) {
522,638!
2489
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
522,657✔
2490
  }
2491
  if (TSDB_CODE_SUCCESS == code) {
522,609!
2492
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
522,618✔
2493
  }
2494

2495
  return code;
522,582✔
2496
}
2497

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

2501
  int32_t code = TSDB_CODE_SUCCESS;
1,652,922✔
2502
  STlv*   pTlv = NULL;
1,652,922✔
2503
  tlvForEach(pDecoder, pTlv, code) {
9,918,394!
2504
    switch (pTlv->type) {
8,265,350!
2505
      case PHY_PROJECT_CODE_BASE_NODE:
1,653,077✔
2506
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,653,077✔
2507
        break;
1,652,728✔
2508
      case PHY_PROJECT_CODE_PROJECTIONS:
1,652,806✔
2509
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
1,652,806✔
2510
        break;
1,653,515✔
2511
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
1,653,380✔
2512
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
1,653,380✔
2513
        break;
1,653,166✔
2514
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
1,653,084✔
2515
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,653,084✔
2516
        break;
1,652,999✔
2517
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
1,653,003✔
2518
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
1,653,003✔
2519
        break;
1,653,064✔
2520
      default:
×
2521
        break;
×
2522
    }
2523
  }
2524

2525
  return code;
1,652,603✔
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,435✔
2553
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
82,435✔
2554

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

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

2623
  int32_t code = TSDB_CODE_SUCCESS;
89,764✔
2624
  STlv*   pTlv = NULL;
89,764✔
2625
  tlvForEach(pDecoder, pTlv, code) {
1,318,068!
2626
    switch (pTlv->type) {
1,228,302!
2627
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
89,770✔
2628
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
89,770✔
2629
        break;
89,768✔
2630
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
89,764✔
2631
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
89,764✔
2632
        break;
89,770✔
2633
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
89,771✔
2634
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
89,771✔
2635
        break;
89,770✔
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,769✔
2643
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
89,769✔
2644
        break;
89,765✔
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,760✔
2652
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
89,760✔
2653
        break;
89,762✔
2654
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
89,764✔
2655
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
89,764✔
2656
        break;
89,764✔
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,759✔
2664
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
29,759✔
2665
        break;
29,759✔
2666
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
29,888✔
2667
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
29,888✔
2668
        break;
29,888✔
2669
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
89,766✔
2670
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
89,766✔
2671
        break;
89,781✔
2672
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
89,779✔
2673
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
89,779✔
2674
        break;
89,775✔
2675
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
89,771✔
2676
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
89,771✔
2677
        break;
89,765✔
2678
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
89,765✔
2679
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
89,765✔
2680
        break;
89,762✔
2681
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
89,760✔
2682
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
89,760✔
2683
        break;
89,757✔
2684
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
89,758✔
2685
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
89,758✔
2686
        break;
89,761✔
2687
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
89,758✔
2688
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
89,758✔
2689
        break;
89,757✔
2690
      default:
×
2691
        break;
×
2692
    }
2693
  }
2694

2695
  return code;
89,743✔
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) {
807,614✔
2875
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
807,614✔
2876

2877
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
807,614✔
2878
  if (TSDB_CODE_SUCCESS == code) {
807,472!
2879
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
807,490✔
2880
  }
2881
  if (TSDB_CODE_SUCCESS == code) {
807,332✔
2882
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
807,285✔
2883
  }
2884
  if (TSDB_CODE_SUCCESS == code) {
807,349✔
2885
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
807,314✔
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
807,115✔
2888
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
807,088✔
2889
  }
2890
  if (TSDB_CODE_SUCCESS == code) {
807,228✔
2891
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
807,210✔
2892
  }
2893
  if (TSDB_CODE_SUCCESS == code) {
807,094✔
2894
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
807,073✔
2895
  }
2896

2897
  return code;
806,990✔
2898
}
2899

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

2903
  int32_t code = TSDB_CODE_SUCCESS;
1,079,846✔
2904
  STlv*   pTlv = NULL;
1,079,846✔
2905
  tlvForEach(pDecoder, pTlv, code) {
6,787,844!
2906
    switch (pTlv->type) {
5,708,229!
2907
      case PHY_AGG_CODE_BASE_NODE:
1,080,094✔
2908
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,080,094✔
2909
        break;
1,079,527✔
2910
      case PHY_AGG_CODE_EXPR:
270,777✔
2911
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
270,777✔
2912
        break;
270,952✔
2913
      case PHY_AGG_CODE_GROUP_KEYS:
276,343✔
2914
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
276,343✔
2915
        break;
276,422✔
2916
      case PHY_AGG_CODE_AGG_FUNCS:
841,327✔
2917
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
841,327✔
2918
        break;
841,758✔
2919
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
1,080,215✔
2920
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
1,080,215✔
2921
        break;
1,079,937✔
2922
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
1,079,850✔
2923
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
1,079,850✔
2924
        break;
1,079,727✔
2925
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
1,079,623✔
2926
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
1,079,623✔
2927
        break;
1,079,675✔
2928
      default:
×
2929
        break;
×
2930
    }
2931
  }
2932

2933
  return code;
1,079,141✔
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) {
668,647✔
2946
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
668,647✔
2947

2948
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
668,647✔
2949
  if (TSDB_CODE_SUCCESS == code) {
668,623!
2950
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
668,623✔
2951
  }
2952
  if (TSDB_CODE_SUCCESS == code) {
668,618✔
2953
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
668,611✔
2954
  }
2955
  if (TSDB_CODE_SUCCESS == code) {
668,631✔
2956
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
668,624✔
2957
  }
2958
  if (TSDB_CODE_SUCCESS == code) {
668,636✔
2959
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
668,630✔
2960
  }
2961
  if (TSDB_CODE_SUCCESS == code) {
668,612✔
2962
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
668,606✔
2963
  }
2964

2965
  return code;
668,612✔
2966
}
2967

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

2971
  int32_t code = TSDB_CODE_SUCCESS;
3,553,712✔
2972
  STlv*   pTlv = NULL;
3,553,712✔
2973
  tlvForEach(pDecoder, pTlv, code) {
24,874,954!
2974
    switch (pTlv->type) {
21,321,370!
2975
      case PHY_EXCHANGE_CODE_BASE_NODE:
3,553,698✔
2976
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,553,698✔
2977
        break;
3,553,480✔
2978
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
3,553,507✔
2979
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
3,553,507✔
2980
        break;
3,553,470✔
2981
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
3,553,477✔
2982
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
3,553,477✔
2983
        break;
3,553,460✔
2984
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
3,553,491✔
2985
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
3,553,491✔
2986
        break;
3,553,535✔
2987
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
3,553,531✔
2988
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
3,553,531✔
2989
        break;
3,553,710✔
2990
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
3,553,666✔
2991
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
3,553,666✔
2992
        break;
3,553,587✔
2993
      default:
×
2994
        break;
×
2995
    }
2996
  }
2997

2998
  return code;
3,553,257✔
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) {
78,600✔
3014
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
78,600✔
3015

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

3042
  return code;
78,600✔
3043
}
3044

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

3048
  int32_t code = TSDB_CODE_SUCCESS;
1,383,253✔
3049
  STlv*   pTlv = NULL;
1,383,253✔
3050
  tlvForEach(pDecoder, pTlv, code) {
13,829,455!
3051
    switch (pTlv->type) {
12,446,196!
3052
      case PHY_MERGE_CODE_BASE_NODE:
1,383,253✔
3053
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,383,253✔
3054
        break;
1,383,243✔
3055
      case PHY_MERGE_CODE_MERGE_KEYS:
1,380,296✔
3056
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
1,380,296✔
3057
        break;
1,380,317✔
3058
      case PHY_MERGE_CODE_TARGETS:
1,383,255✔
3059
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
1,383,255✔
3060
        break;
1,383,255✔
3061
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
1,383,243✔
3062
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
1,383,243✔
3063
        break;
1,383,227✔
3064
      case PHY_MERGE_CODE_SRC_GROUP_ID:
1,383,227✔
3065
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
1,383,227✔
3066
        break;
1,383,220✔
3067
      case PHY_MERGE_CODE_GROUP_SORT:
1,383,227✔
3068
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
1,383,227✔
3069
        break;
1,383,231✔
3070
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
1,383,232✔
3071
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,383,232✔
3072
        break;
1,383,229✔
3073
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
1,383,228✔
3074
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
1,383,228✔
3075
        break;
1,383,239✔
3076
      case PHY_MERGE_CODE_TYPE:
1,383,235✔
3077
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
1,383,235✔
3078
        break;
1,383,241✔
3079
      default:
×
3080
        break;
×
3081
    }
3082
  }
3083

3084
  return code;
1,383,142✔
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) {
164,367✔
3097
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
164,367✔
3098

3099
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
164,367✔
3100
  if (TSDB_CODE_SUCCESS == code) {
164,365!
3101
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
164,365✔
3102
  }
3103
  if (TSDB_CODE_SUCCESS == code) {
164,368!
3104
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
164,369✔
3105
  }
3106
  if (TSDB_CODE_SUCCESS == code) {
164,376!
3107
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
164,378✔
3108
  }
3109
  if (TSDB_CODE_SUCCESS == code) {
164,358!
3110
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
164,360✔
3111
  }
3112
  if (TSDB_CODE_SUCCESS == code) {
164,359!
3113
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
164,362✔
3114
  }
3115

3116
  return code;
164,361✔
3117
}
3118

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

3122
  int32_t code = TSDB_CODE_SUCCESS;
874,592✔
3123
  STlv*   pTlv = NULL;
874,592✔
3124
  tlvForEach(pDecoder, pTlv, code) {
5,248,506!
3125
    switch (pTlv->type) {
4,373,271!
3126
      case PHY_SORT_CODE_BASE_NODE:
874,583✔
3127
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
874,583✔
3128
        break;
874,530✔
3129
      case PHY_SORT_CODE_EXPR:
959✔
3130
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
959✔
3131
        break;
961✔
3132
      case PHY_SORT_CODE_SORT_KEYS:
874,515✔
3133
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
874,515✔
3134
        break;
874,652✔
3135
      case PHY_SORT_CODE_TARGETS:
874,637✔
3136
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
874,637✔
3137
        break;
874,650✔
3138
      case PHY_SORT_CODE_CALC_GROUPID:
874,618✔
3139
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
874,618✔
3140
        break;
874,576✔
3141
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
874,558✔
3142
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
874,558✔
3143
      default:
874,545✔
3144
        break;
874,545✔
3145
    }
3146
  }
3147

3148
  return code;
875,119✔
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,865✔
3168
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
89,865✔
3169

3170
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
89,865✔
3171
  if (TSDB_CODE_SUCCESS == code) {
89,857!
3172
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
89,858✔
3173
  }
3174
  if (TSDB_CODE_SUCCESS == code) {
89,839!
3175
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
89,840✔
3176
  }
3177
  if (TSDB_CODE_SUCCESS == code) {
89,814!
3178
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
89,817✔
3179
  }
3180
  if (TSDB_CODE_SUCCESS == code) {
89,793!
3181
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
89,796✔
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
89,807!
3184
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
89,810✔
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
89,835✔
3187
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
89,833✔
3188
  }
3189
  if (TSDB_CODE_SUCCESS == code) {
89,834✔
3190
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
89,833✔
3191
  }
3192
  if (TSDB_CODE_SUCCESS == code) {
89,835!
3193
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
89,840✔
3194
  }
3195
  if (TSDB_CODE_SUCCESS == code) {
89,822!
3196
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
89,828✔
3197
  }
3198
  if (TSDB_CODE_SUCCESS == code) {
89,823!
3199
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY, pNode->destHasPrimaryKey);
89,827✔
3200
  }
3201

3202
  return code;
89,837✔
3203
}
3204

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

3208
  int32_t code = TSDB_CODE_SUCCESS;
2,506,101✔
3209
  STlv*   pTlv = NULL;
2,506,101✔
3210
  tlvForEach(pDecoder, pTlv, code) {
25,176,073!
3211
    switch (pTlv->type) {
22,669,099!
3212
      case PHY_WINDOW_CODE_BASE_NODE:
2,506,249✔
3213
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
2,506,249✔
3214
        break;
2,505,652✔
3215
      case PHY_WINDOW_CODE_EXPR:
8,588✔
3216
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
8,588✔
3217
        break;
8,591✔
3218
      case PHY_WINDOW_CODE_FUNCS:
2,505,569✔
3219
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
2,505,569✔
3220
        break;
2,507,838✔
3221
      case PHY_WINDOW_CODE_TS_PK:
2,507,641✔
3222
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
2,507,641✔
3223
        break;
2,507,868✔
3224
      case PHY_WINDOW_CODE_TS_END:
101,203✔
3225
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
101,203✔
3226
        break;
101,203✔
3227
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
2,507,446✔
3228
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
2,507,446✔
3229
        break;
2,506,893✔
3230
      case PHY_WINDOW_CODE_WATERMARK:
2,506,522✔
3231
        code = tlvDecodeI64(pTlv, &pNode->watermark);
2,506,522✔
3232
        break;
2,506,310✔
3233
      case PHY_WINDOW_CODE_DELETE_MARK:
2,506,551✔
3234
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
2,506,551✔
3235
        break;
2,506,335✔
3236
      case PHY_WINDOW_CODE_IG_EXPIRED:
2,506,630✔
3237
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
2,506,630✔
3238
        break;
2,506,201✔
3239
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
2,506,113✔
3240
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
2,506,113✔
3241
        break;
2,506,594✔
3242
      case PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY:
2,506,587✔
3243
        code = tlvDecodeI8(pTlv, &pNode->destHasPrimaryKey);
2,506,587✔
3244
        break;
2,506,487✔
3245
      default:
×
3246
        break;
×
3247
    }
3248
  }
3249

3250
  return code;
2,506,227✔
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) {
80,325✔
3256
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
80,325✔
3257

3258
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
80,325✔
3259
  if (TSDB_CODE_SUCCESS == code) {
80,311!
3260
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
80,314✔
3261
  }
3262
  if (TSDB_CODE_SUCCESS == code) {
80,306✔
3263
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
80,304✔
3264
  }
3265
  if (TSDB_CODE_SUCCESS == code) {
80,296!
3266
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
80,304✔
3267
  }
3268
  if (TSDB_CODE_SUCCESS == code) {
80,298!
3269
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
80,307✔
3270
  }
3271

3272
  return code;
80,291✔
3273
}
3274

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

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

3283
  return code;
80,298✔
3284
}
3285

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

3289
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
2,045,411✔
3290
  if (TSDB_CODE_SUCCESS == code) {
2,045,928!
3291
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
2,045,994✔
3292
  }
3293
  if (TSDB_CODE_SUCCESS == code) {
2,045,573!
3294
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
2,045,690✔
3295
  }
3296
  if (TSDB_CODE_SUCCESS == code) {
2,045,481!
3297
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
2,045,618✔
3298
  }
3299
  if (TSDB_CODE_SUCCESS == code) {
2,046,068✔
3300
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
2,045,760✔
3301
  }
3302

3303
  return code;
2,046,152✔
3304
}
3305

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

3309
  int32_t code = TSDB_CODE_SUCCESS;
2,045,570✔
3310
  STlv*   pTlv = NULL;
2,045,570✔
3311
  tlvForEach(pDecoder, pTlv, code) {
6,137,303!
3312
    switch (pTlv->type) {
4,091,785!
3313
      case PHY_INTERVAL_CODE_WINDOW:
2,046,104✔
3314
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
2,046,104✔
3315
        break;
2,045,633✔
3316
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
2,045,681✔
3317
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
2,045,681✔
3318
        break;
2,046,100✔
3319
      default:
×
3320
        break;
×
3321
    }
3322
  }
3323

3324
  return code;
2,045,355✔
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,553✔
3340
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
14,553✔
3341

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

3365
  return code;
14,557✔
3366
}
3367

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

3371
  int32_t code = TSDB_CODE_SUCCESS;
493,042✔
3372
  STlv*   pTlv = NULL;
493,042✔
3373
  tlvForEach(pDecoder, pTlv, code) {
3,629,931!
3374
    switch (pTlv->type) {
3,136,896!
3375
      case PHY_FILL_CODE_BASE_NODE:
493,046✔
3376
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
493,046✔
3377
        break;
493,033✔
3378
      case PHY_FILL_CODE_MODE:
493,036✔
3379
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
493,036✔
3380
        break;
493,039✔
3381
      case PHY_FILL_CODE_FILL_EXPRS:
493,038✔
3382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
493,038✔
3383
        break;
493,049✔
3384
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
99,761✔
3385
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
99,761✔
3386
        break;
99,761✔
3387
      case PHY_FILL_CODE_WSTART:
493,045✔
3388
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
493,045✔
3389
        break;
493,045✔
3390
      case PHY_FILL_CODE_VALUES:
401,799✔
3391
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
401,799✔
3392
        break;
401,798✔
3393
      case PHY_FILL_CODE_TIME_RANGE:
493,042✔
3394
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
493,042✔
3395
        break;
493,034✔
3396
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
170,129✔
3397
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
170,129✔
3398
        break;
170,130✔
3399
      default:
×
3400
        break;
×
3401
    }
3402
  }
3403

3404
  return code;
493,006✔
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,915✔
3410
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
3,915✔
3411

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

3417
  return code;
3,915✔
3418
}
3419

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

3423
  int32_t code = TSDB_CODE_SUCCESS;
101,207✔
3424
  STlv*   pTlv = NULL;
101,207✔
3425
  tlvForEach(pDecoder, pTlv, code) {
303,605!
3426
    switch (pTlv->type) {
202,407!
3427
      case PHY_SESSION_CODE_WINDOW:
101,207✔
3428
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
101,207✔
3429
        break;
101,198✔
3430
      case PHY_SESSION_CODE_GAP:
101,200✔
3431
        code = tlvDecodeI64(pTlv, &pNode->gap);
101,200✔
3432
        break;
101,200✔
3433
      default:
×
3434
        break;
×
3435
    }
3436
  }
3437

3438
  return code;
101,200✔
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,479✔
3444
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
5,479✔
3445

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

3451
  return code;
5,479✔
3452
}
3453

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

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

3472
  return code;
74,530✔
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) {
279,190✔
3492
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
279,190✔
3493

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

3512
  return code;
279,191✔
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) {
5,710✔
3532
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
5,710✔
3533

3534
  int32_t code = TSDB_CODE_SUCCESS;
5,710✔
3535
  STlv*   pTlv = NULL;
5,710✔
3536
  tlvForEach(pDecoder, pTlv, code) {
22,716✔
3537
    switch (pTlv->type) {
17,050!
3538
      case PHY_COUNT_CODE_WINDOW:
5,712✔
3539
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
5,712✔
3540
        break;
5,673✔
3541
      case PHY_COUNT_CODE_WINDOW_COUNT:
5,670✔
3542
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
5,670✔
3543
        break;
5,666✔
3544
      case PHY_COUNT_CODE_WINDOW_SLIDING:
5,668✔
3545
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
5,668✔
3546
        break;
5,667✔
3547
      default:
×
3548
        break;
×
3549
    }
3550
  }
3551

3552
  return code;
5,675✔
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,432✔
3605
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
14,432✔
3606

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

3624
  return code;
14,433✔
3625
}
3626

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

3630
  int32_t code = TSDB_CODE_SUCCESS;
24,749✔
3631
  STlv*   pTlv = NULL;
24,749✔
3632
  tlvForEach(pDecoder, pTlv, code) {
152,243!
3633
    switch (pTlv->type) {
127,485!
3634
      case PHY_PARTITION_CODE_BASE_NODE:
24,744✔
3635
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
24,744✔
3636
        break;
24,724✔
3637
      case PHY_PARTITION_CODE_EXPR:
3,812✔
3638
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
3,812✔
3639
        break;
3,813✔
3640
      case PHY_PARTITION_CODE_KEYS:
24,720✔
3641
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
24,720✔
3642
        break;
24,750✔
3643
      case PHY_PARTITION_CODE_TARGETS:
24,743✔
3644
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
24,743✔
3645
        break;
24,756✔
3646
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
24,745✔
3647
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
24,745✔
3648
        break;
24,732✔
3649
      case PHY_PARTITION_CODE_TS_SLOTID:
24,721✔
3650
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
24,721✔
3651
        break;
24,719✔
3652
      default:
×
3653
        break;
×
3654
    }
3655
  }
3656

3657
  return code;
24,714✔
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,228✔
3703
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
22,228✔
3704

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

3713
  return code;
22,226✔
3714
}
3715

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

3719
  int32_t code = TSDB_CODE_SUCCESS;
120,613✔
3720
  STlv*   pTlv = NULL;
120,613✔
3721
  tlvForEach(pDecoder, pTlv, code) {
361,965!
3722
    switch (pTlv->type) {
241,347!
3723
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
120,616✔
3724
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
120,616✔
3725
        break;
120,611✔
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:
120,611✔
3730
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
120,611✔
3731
        break;
120,621✔
3732
      default:
×
3733
        break;
×
3734
    }
3735
  }
3736

3737
  return code;
120,618✔
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,407✔
3753
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
2,407✔
3754

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

3781
  return code;
2,407✔
3782
}
3783

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

3787
  int32_t code = TSDB_CODE_SUCCESS;
64,720✔
3788
  STlv*   pTlv = NULL;
64,720✔
3789
  tlvForEach(pDecoder, pTlv, code) {
570,674!
3790
    switch (pTlv->type) {
505,954!
3791
      case PHY_INERP_FUNC_CODE_BASE_NODE:
64,720✔
3792
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
64,720✔
3793
        break;
64,720✔
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:
64,720✔
3798
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
64,720✔
3799
        break;
64,720✔
3800
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
64,720✔
3801
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
64,720✔
3802
        break;
64,720✔
3803
      case PHY_INERP_FUNC_CODE_INTERVAL:
64,720✔
3804
        code = tlvDecodeI64(pTlv, &pNode->interval);
64,720✔
3805
        break;
64,720✔
3806
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
64,720✔
3807
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
64,720✔
3808
        break;
64,720✔
3809
      case PHY_INERP_FUNC_CODE_FILL_MODE:
64,720✔
3810
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
64,720✔
3811
        break;
64,720✔
3812
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
52,303✔
3813
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
52,303✔
3814
        break;
52,303✔
3815
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
64,720✔
3816
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
64,720✔
3817
        break;
64,720✔
3818
      default:
×
3819
        break;
×
3820
    }
3821
  }
3822

3823
  return code;
64,720✔
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,874,948✔
3873
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
1,874,948✔
3874
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
1,874,948✔
3875
}
3876

3877
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
7,164,630✔
3878
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
7,164,630✔
3879

3880
  int32_t code = TSDB_CODE_SUCCESS;
7,164,630✔
3881
  STlv*   pTlv = NULL;
7,164,630✔
3882
  tlvForEach(pDecoder, pTlv, code) {
14,331,459!
3883
    switch (pTlv->type) {
7,166,053!
3884
      case PHY_DATA_SINK_CODE_INPUT_DESC:
7,166,053✔
3885
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
7,166,053✔
3886
        break;
7,166,829✔
3887
      default:
×
3888
        break;
×
3889
    }
3890
  }
3891

3892
  return code;
7,164,531✔
3893
}
3894

3895
enum { PHY_DISPATCH_CODE_SINK = 1 };
3896

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

3902
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
7,103,186✔
3903
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
7,103,186✔
3904

3905
  int32_t code = TSDB_CODE_SUCCESS;
7,103,186✔
3906
  STlv*   pTlv = NULL;
7,103,186✔
3907
  tlvForEach(pDecoder, pTlv, code) {
14,207,700!
3908
    switch (pTlv->type) {
7,106,986!
3909
      case PHY_DISPATCH_CODE_SINK:
7,106,986✔
3910
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
7,106,986✔
3911
        break;
7,104,514✔
3912
      default:
×
3913
        break;
×
3914
    }
3915
  }
3916

3917
  return code;
7,099,022✔
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) {
306✔
3965
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
306✔
3966

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

4003
  return code;
306✔
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) {
55,874✔
4019
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
55,874✔
4020

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

4047
  return code;
55,875✔
4048
}
4049

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

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

4089
  return code;
60,088✔
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,876,292✔
4255
  const SSubplanId* pNode = (const SSubplanId*)pObj;
1,876,292✔
4256

4257
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
1,876,292✔
4258
  if (TSDB_CODE_SUCCESS == code) {
1,876,088!
4259
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
1,876,161✔
4260
  }
4261
  if (TSDB_CODE_SUCCESS == code) {
1,876,573!
4262
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
1,876,808✔
4263
  }
4264

4265
  return code;
1,876,526✔
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) {
7,163,498✔
4283
  SSubplanId* pNode = (SSubplanId*)pObj;
7,163,498✔
4284

4285
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
7,163,498✔
4286
  if (TSDB_CODE_SUCCESS == code) {
7,163,640!
4287
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
7,164,458✔
4288
  }
4289
  if (TSDB_CODE_SUCCESS == code) {
7,163,961✔
4290
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
7,162,031✔
4291
  }
4292

4293
  return code;
7,163,341✔
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,876,296✔
4329
  const SSubplan* pNode = (const SSubplan*)pObj;
1,876,296✔
4330

4331
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
1,876,296✔
4332
  if (TSDB_CODE_SUCCESS == code) {
1,876,496!
4333
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
1,876,539✔
4334
  }
4335
  if (TSDB_CODE_SUCCESS == code) {
1,875,816✔
4336
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
1,875,694✔
4337
  }
4338
  if (TSDB_CODE_SUCCESS == code) {
1,875,705✔
4339
    code = tlvEncodeValueI32(pEncoder, pNode->level);
1,875,652✔
4340
  }
4341
  if (TSDB_CODE_SUCCESS == code) {
1,875,592!
4342
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
1,875,613✔
4343
  }
4344
  if (TSDB_CODE_SUCCESS == code) {
1,875,806!
4345
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
1,875,951✔
4346
  }
4347
  if (TSDB_CODE_SUCCESS == code) {
1,875,638!
4348
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
1,875,754✔
4349
  }
4350
  if (TSDB_CODE_SUCCESS == code) {
1,875,705!
4351
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
1,875,859✔
4352
  }
4353
  if (TSDB_CODE_SUCCESS == code) {
1,875,391!
4354
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
1,875,593✔
4355
  }
4356
  if (TSDB_CODE_SUCCESS == code) {
1,875,156!
4357
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
1,875,403✔
4358
  }
4359
  if (TSDB_CODE_SUCCESS == code) {
1,874,998!
4360
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
1,875,093✔
4361
  }
4362
  if (TSDB_CODE_SUCCESS == code) {
1,874,939!
4363
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
1,875,229✔
4364
  }
4365

4366
  return code;
1,875,021✔
4367
}
4368

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

4372
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
1,876,439✔
4373
  if (TSDB_CODE_SUCCESS == code) {
1,875,512!
4374
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
1,875,615✔
4375
  }
4376
  if (TSDB_CODE_SUCCESS == code) {
1,875,011!
4377
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
1,875,175✔
4378
  }
4379
  if (TSDB_CODE_SUCCESS == code) {
1,873,821!
4380
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
1,874,199✔
4381
  }
4382
  if (TSDB_CODE_SUCCESS == code) {
1,874,010!
4383
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
1,874,443✔
4384
  }
4385

4386
  return code;
1,874,545✔
4387
}
4388

4389
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
7,164,728✔
4390
  SSubplan* pNode = (SSubplan*)pObj;
7,164,728✔
4391

4392
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
7,164,728✔
4393
  if (TSDB_CODE_SUCCESS == code) {
7,163,183!
4394
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
7,163,488✔
4395
  }
4396
  if (TSDB_CODE_SUCCESS == code) {
7,162,266✔
4397
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
7,161,366✔
4398
  }
4399
  if (TSDB_CODE_SUCCESS == code) {
7,163,575✔
4400
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
7,162,802✔
4401
  }
4402
  if (TSDB_CODE_SUCCESS == code) {
7,163,024✔
4403
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
7,162,466✔
4404
  }
4405
  if (TSDB_CODE_SUCCESS == code) {
7,168,637✔
4406
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
7,168,360✔
4407
  }
4408
  if (TSDB_CODE_SUCCESS == code) {
7,168,794✔
4409
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
7,165,626✔
4410
  }
4411
  if (TSDB_CODE_SUCCESS == code) {
7,174,154✔
4412
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
7,171,138✔
4413
  }
4414
  if (TSDB_CODE_SUCCESS == code) {
7,171,789✔
4415
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
7,168,920✔
4416
  }
4417
  if (TSDB_CODE_SUCCESS == code) {
7,169,632✔
4418
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
7,166,952✔
4419
  }
4420
  if (TSDB_CODE_SUCCESS == code) {
7,169,636✔
4421
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
7,164,556✔
4422
  }
4423
  if (TSDB_CODE_SUCCESS == code) {
7,171,016✔
4424
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
7,165,982✔
4425
  }
4426
  return code;
7,165,979✔
4427
}
4428

4429
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
7,164,745✔
4430
  SSubplan* pNode = (SSubplan*)pObj;
7,164,745✔
4431

4432
  int32_t code = TSDB_CODE_SUCCESS;
7,164,745✔
4433
  STlv*   pTlv = NULL;
7,164,745✔
4434
  tlvForEach(pDecoder, pTlv, code) {
30,037,841!
4435
    switch (pTlv->type) {
22,876,752!
4436
      case SUBPLAN_CODE_INLINE_ATTRS:
7,165,536✔
4437
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
7,165,536✔
4438
        break;
7,163,276✔
4439
      case SUBPLAN_CODE_ROOT_NODE:
7,165,166✔
4440
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
7,165,166✔
4441
        break;
7,163,088✔
4442
      case SUBPLAN_CODE_DATA_SINK:
7,163,250✔
4443
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
7,163,250✔
4444
        break;
7,163,678✔
4445
      case SUBPLAN_CODE_TAG_COND:
1,342,008✔
4446
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
1,342,008✔
4447
        break;
1,342,266✔
4448
      case SUBPLAN_CODE_TAG_INDEX_COND:
40,792✔
4449
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
40,792✔
4450
        break;
40,788✔
4451
      default:
×
4452
        break;
×
4453
    }
4454
  }
4455

4456
  return code;
7,160,294✔
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) {
73,464,341✔
4516
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4517
  int32_t code = TSDB_CODE_SUCCESS;
73,464,341✔
4518
  switch (nodeType(pObj)) {
73,464,341!
4519
    case QUERY_NODE_COLUMN:
14,601,390✔
4520
      code = columnNodeToMsg(pObj, pEncoder);
14,601,390✔
4521
      break;
14,434,914✔
4522
    case QUERY_NODE_VALUE:
5,410,403✔
4523
      code = valueNodeToMsg(pObj, pEncoder);
5,410,403✔
4524
      break;
5,409,545✔
4525
    case QUERY_NODE_OPERATOR:
1,447,822✔
4526
      code = operatorNodeToMsg(pObj, pEncoder);
1,447,822✔
4527
      break;
1,446,391✔
4528
    case QUERY_NODE_LOGIC_CONDITION:
325,111✔
4529
      code = logicConditionNodeToMsg(pObj, pEncoder);
325,111✔
4530
      break;
325,073✔
4531
    case QUERY_NODE_FUNCTION:
3,776,608✔
4532
      code = functionNodeToMsg(pObj, pEncoder);
3,776,608✔
4533
      break;
3,780,057✔
4534
    case QUERY_NODE_ORDER_BY_EXPR:
320,414✔
4535
      code = orderByExprNodeToMsg(pObj, pEncoder);
320,414✔
4536
      break;
320,365✔
4537
    case QUERY_NODE_LIMIT:
201,415✔
4538
      code = limitNodeToMsg(pObj, pEncoder);
201,415✔
4539
      break;
201,376✔
4540
    case QUERY_NODE_NODE_LIST:
46,315✔
4541
      code = nodeListNodeToMsg(pObj, pEncoder);
46,315✔
4542
      break;
46,339✔
4543
    case QUERY_NODE_TARGET:
12,384,502✔
4544
      code = targetNodeToMsg(pObj, pEncoder);
12,384,502✔
4545
      break;
12,292,010✔
4546
    case QUERY_NODE_DATABLOCK_DESC:
5,798,215✔
4547
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
5,798,215✔
4548
      break;
5,787,529✔
4549
    case QUERY_NODE_SLOT_DESC:
21,918,381✔
4550
      code = slotDescNodeToMsg(pObj, pEncoder);
21,918,381✔
4551
      break;
21,638,600✔
4552
    case QUERY_NODE_DOWNSTREAM_SOURCE:
977,951✔
4553
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
977,951✔
4554
      break;
977,899✔
4555
    case QUERY_NODE_LEFT_VALUE:
57,401✔
4556
      break;
57,401✔
4557
    case QUERY_NODE_WHEN_THEN:
7,254✔
4558
      code = whenThenNodeToMsg(pObj, pEncoder);
7,254✔
4559
      break;
7,252✔
4560
    case QUERY_NODE_CASE_WHEN:
5,276✔
4561
      code = caseWhenNodeToMsg(pObj, pEncoder);
5,276✔
4562
      break;
5,274✔
4563
    case QUERY_NODE_WINDOW_OFFSET:
829✔
4564
      code = windowOffsetNodeToMsg(pObj, pEncoder);
829✔
4565
      break;
829✔
4566
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
44,151✔
4567
      code = physiTagScanNodeToMsg(pObj, pEncoder);
44,151✔
4568
      break;
44,367✔
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:
8,549✔
4573
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4574
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
8,549✔
4575
      break;
8,540✔
4576
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,344,831✔
4577
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4578
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4579
      code = physiTableScanNodeToMsg(pObj, pEncoder);
1,344,831✔
4580
      break;
1,344,571✔
4581
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
35,662✔
4582
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
35,662✔
4583
      break;
35,663✔
4584
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
522,798✔
4585
      code = physiProjectNodeToMsg(pObj, pEncoder);
522,798✔
4586
      break;
522,578✔
4587
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
82,434✔
4588
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
82,434✔
4589
      break;
82,416✔
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:
807,846✔
4594
      code = physiAggNodeToMsg(pObj, pEncoder);
807,846✔
4595
      break;
806,967✔
4596
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
668,644✔
4597
      code = physiExchangeNodeToMsg(pObj, pEncoder);
668,644✔
4598
      break;
668,611✔
4599
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
78,601✔
4600
      code = physiMergeNodeToMsg(pObj, pEncoder);
78,601✔
4601
      break;
78,600✔
4602
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
164,372✔
4603
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4604
      code = physiSortNodeToMsg(pObj, pEncoder);
164,372✔
4605
      break;
164,360✔
4606
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
80,366✔
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);
80,366✔
4613
      break;
80,294✔
4614
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
14,555✔
4615
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4616
      code = physiFillNodeToMsg(pObj, pEncoder);
14,555✔
4617
      break;
14,557✔
4618
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
3,915✔
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,915✔
4623
      break;
3,915✔
4624
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
5,479✔
4625
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4626
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
5,479✔
4627
      break;
5,479✔
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,432✔
4640
      code = physiPartitionNodeToMsg(pObj, pEncoder);
14,432✔
4641
      break;
14,433✔
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,229✔
4646
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
22,229✔
4647
      break;
22,225✔
4648
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
2,407✔
4649
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4650
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
2,407✔
4651
      break;
2,407✔
4652
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4653
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
4654
      break;
×
4655
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,819,040✔
4656
      code = physiDispatchNodeToMsg(pObj, pEncoder);
1,819,040✔
4657
      break;
1,817,880✔
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:
55,874✔
4662
      code = physiDeleteNodeToMsg(pObj, pEncoder);
55,874✔
4663
      break;
55,875✔
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,876,586✔
4671
      code = subplanToMsg(pObj, pEncoder);
1,876,586✔
4672
      break;
1,874,535✔
4673
    case QUERY_NODE_PHYSICAL_PLAN:
×
4674
      code = queryPlanToMsg(pObj, pEncoder);
×
4675
      break;
×
4676
    default:
×
4677
      break;
×
4678
  }
4679
  if (TSDB_CODE_SUCCESS != code) {
72,911,410!
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;
72,829,449✔
4684
}
4685

4686
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
787,778,820✔
4687
  int32_t code = TSDB_CODE_SUCCESS;
787,778,820✔
4688
  switch (nodeType(pObj)) {
787,778,820!
4689
    case QUERY_NODE_COLUMN:
87,277,543✔
4690
      code = msgToColumnNode(pDecoder, pObj);
87,277,543✔
4691
      break;
87,671,099✔
4692
    case QUERY_NODE_VALUE:
421,175,050✔
4693
      code = msgToValueNode(pDecoder, pObj);
421,175,050✔
4694
      break;
415,177,234✔
4695
    case QUERY_NODE_OPERATOR:
16,383,457✔
4696
      code = msgToOperatorNode(pDecoder, pObj);
16,383,457✔
4697
      break;
16,362,611✔
4698
    case QUERY_NODE_LOGIC_CONDITION:
4,853,596✔
4699
      code = msgToLogicConditionNode(pDecoder, pObj);
4,853,596✔
4700
      break;
4,853,763✔
4701
    case QUERY_NODE_FUNCTION:
11,185,469✔
4702
      code = msgToFunctionNode(pDecoder, pObj);
11,185,469✔
4703
      break;
11,175,100✔
4704
    case QUERY_NODE_ORDER_BY_EXPR:
2,396,240✔
4705
      code = msgToOrderByExprNode(pDecoder, pObj);
2,396,240✔
4706
      break;
2,395,816✔
4707
    case QUERY_NODE_LIMIT:
810,196✔
4708
      code = msgToLimitNode(pDecoder, pObj);
810,196✔
4709
      break;
809,870✔
4710
    case QUERY_NODE_NODE_LIST:
2,979,932✔
4711
      code = msgToNodeListNode(pDecoder, pObj);
2,979,932✔
4712
      break;
2,980,830✔
4713
    case QUERY_NODE_TARGET:
66,620,087✔
4714
      code = msgToTargetNode(pDecoder, pObj);
66,620,087✔
4715
      break;
66,373,532✔
4716
    case QUERY_NODE_DATABLOCK_DESC:
24,193,451✔
4717
      code = msgToDataBlockDescNode(pDecoder, pObj);
24,193,451✔
4718
      break;
24,189,009✔
4719
    case QUERY_NODE_SLOT_DESC:
122,295,673✔
4720
      code = msgToSlotDescNode(pDecoder, pObj);
122,295,673✔
4721
      break;
121,350,263✔
4722
    case QUERY_NODE_DOWNSTREAM_SOURCE:
4,138,782✔
4723
      code = msgToDownstreamSourceNode(pDecoder, pObj);
4,138,782✔
4724
    case QUERY_NODE_LEFT_VALUE:
4,199,755✔
4725
      break;
4,199,755✔
4726
    case QUERY_NODE_WHEN_THEN:
7,899✔
4727
      code = msgToWhenThenNode(pDecoder, pObj);
7,899✔
4728
      break;
7,898✔
4729
    case QUERY_NODE_CASE_WHEN:
5,576✔
4730
      code = msgToCaseWhenNode(pDecoder, pObj);
5,576✔
4731
      break;
5,575✔
4732
    case QUERY_NODE_WINDOW_OFFSET:
668✔
4733
      code = msgToWindowOffsetNode(pDecoder, pObj);
668✔
4734
      break;
668✔
4735
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
47,947✔
4736
      code = msgToPhysiTagScanNode(pDecoder, pObj);
47,947✔
4737
      break;
47,839✔
4738
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
3,239✔
4739
      code = msgToPhysiScanNode(pDecoder, pObj);
3,239✔
4740
      break;
3,232✔
4741
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
12,911✔
4742
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4743
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
12,911✔
4744
      break;
12,910✔
4745
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
5,045,024✔
4746
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4747
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4748
      code = msgToPhysiTableScanNode(pDecoder, pObj);
5,045,024✔
4749
      break;
5,042,944✔
4750
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
49,548✔
4751
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
49,548✔
4752
      break;
49,482✔
4753
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
1,653,067✔
4754
      code = msgToPhysiProjectNode(pDecoder, pObj);
1,653,067✔
4755
      break;
1,652,873✔
4756
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
89,769✔
4757
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
89,769✔
4758
      break;
89,753✔
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:
1,080,049✔
4763
      code = msgToPhysiAggNode(pDecoder, pObj);
1,080,049✔
4764
      break;
1,079,338✔
4765
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
3,553,741✔
4766
      code = msgToPhysiExchangeNode(pDecoder, pObj);
3,553,741✔
4767
      break;
3,553,514✔
4768
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
1,383,258✔
4769
      code = msgToPhysiMergeNode(pDecoder, pObj);
1,383,258✔
4770
      break;
1,383,240✔
4771
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
874,593✔
4772
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4773
      code = msgToPhysiSortNode(pDecoder, pObj);
874,593✔
4774
      break;
874,526✔
4775
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
2,045,554✔
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);
2,045,554✔
4782
      break;
2,045,149✔
4783
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
493,043✔
4784
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4785
      code = msgToPhysiFillNode(pDecoder, pObj);
493,043✔
4786
      break;
493,037✔
4787
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
101,207✔
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);
101,207✔
4792
      break;
101,201✔
4793
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
74,529✔
4794
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4795
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
74,529✔
4796
      break;
74,529✔
4797
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
279,191✔
4798
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4799
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
279,191✔
4800
      break;
279,190✔
4801
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
5,711✔
4802
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4803
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
5,711✔
4804
      break;
5,668✔
4805
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4806
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
4807
      break;
×
4808
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
24,750✔
4809
      code = msgToPhysiPartitionNode(pDecoder, pObj);
24,750✔
4810
      break;
24,713✔
4811
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4812
      code = msgToPhysiStreamPartitionNode(pDecoder, pObj);
×
4813
      break;
×
4814
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
120,612✔
4815
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
120,612✔
4816
      break;
120,618✔
4817
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
64,720✔
4818
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4819
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
64,720✔
4820
      break;
64,720✔
4821
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4822
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
4823
      break;
×
4824
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
7,105,011✔
4825
      code = msgToPhysiDispatchNode(pDecoder, pObj);
7,105,011✔
4826
      break;
7,101,939✔
4827
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
306✔
4828
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
306✔
4829
      break;
306✔
4830
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
60,090✔
4831
      code = msgToPhysiDeleteNode(pDecoder, pObj);
60,090✔
4832
      break;
60,092✔
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:
7,165,153✔
4840
      code = msgToSubplan(pDecoder, pObj);
7,165,153✔
4841
      break;
7,163,788✔
4842
    case QUERY_NODE_PHYSICAL_PLAN:
×
4843
      code = msgToQueryPlan(pDecoder, pObj);
×
4844
      break;
×
4845
    default:
×
4846
      break;
×
4847
  }
4848
  if (TSDB_CODE_SUCCESS != code) {
788,905,071!
4849
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
4850
  }
4851
  return code;
779,496,273✔
4852
}
4853

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

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

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

4867
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
16,251,900✔
4868
  const SNodeList* pList = (const SNodeList*)pObj;
16,251,900✔
4869

4870
  SNode* pNode = NULL;
16,251,900✔
4871
  FOREACH(pNode, pList) {
62,208,995!
4872
    int32_t code = nodeToMsg(pNode, pEncoder);
46,281,815✔
4873
    if (TSDB_CODE_SUCCESS != code) {
45,957,095!
4874
      return code;
×
4875
    }
4876
  }
4877

4878
  return TSDB_CODE_SUCCESS;
15,927,180✔
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) {
154✔
4888
  const SArray* pArray = (const SArray*)pObj;
154✔
4889
  int32_t code = TSDB_CODE_SUCCESS;
154✔
4890
  if (TSDB_CODE_SUCCESS == code) {
154!
4891
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
154✔
4892
  }
4893
  if (TSDB_CODE_SUCCESS == code) {
154!
4894
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
154✔
4895
  }
4896
  if (TSDB_CODE_SUCCESS == code) {
154!
4897
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
154✔
4898
  }
4899
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
154!
4900
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
154✔
4901
  }
4902
  return code;
154✔
4903
}
4904

4905

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

4911
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
717,779,073✔
4912
    SNode* pNode = NULL;
643,279,986✔
4913
    code = msgToNode(pDecoder, (void**)&pNode);
643,279,986✔
4914
    if (TSDB_CODE_SUCCESS == code) {
629,026,256!
4915
      code = nodesListAppend(pList, pNode);
629,137,100✔
4916
    }
4917
  }
4918
  if (TSDB_CODE_SUCCESS == code) {
70,416,190!
4919
    *pObj = pList;
70,416,190✔
4920
  } else {
4921
    nodesDestroyList(pList);
×
4922
  }
4923
  return code;
70,413,777✔
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) {
795!
4938
    switch (pTlvTemp->type) {
636!
4939
      case SARRAY_CODE_CAPACITY:
159✔
4940
        code = tlvDecodeI32(pTlvTemp, &capacity);
159✔
4941
        break;
159✔
4942
      case SARRAY_CODE_ELEMSIZE:
159✔
4943
        code = tlvDecodeI32(pTlvTemp, &elemSize);
159✔
4944
        break;
159✔
4945
      case SARRAY_CODE_SIZE:
159✔
4946
        code = tlvDecodeI32(pTlvTemp, &actualSize);
159✔
4947
        break;
159✔
4948
      case SARRAY_CODE_PDATA:
159✔
4949
        if (decodeFieldNum < 3) {
159!
4950
          pDataTlv = pTlvTemp;
×
4951
          break;
×
4952
        }
4953
        pArray = taosArrayInit(capacity, elemSize);
159✔
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++;
636✔
4968
  }
4969

4970
  if (pDataTlv != NULL) {
159!
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) {
70,343,479✔
4988
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
70,343,479✔
4989
  return msgToNodeList(&decoder, pObj);
70,343,479✔
4990
}
4991

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

4998
  STlvEncoder encoder;
4999
  int32_t     code = initTlvEncoder(&encoder);
1,878,397✔
5000
  if (TSDB_CODE_SUCCESS == code) {
1,878,636!
5001
    code = nodeToMsg(pNode, &encoder);
1,878,645✔
5002
  }
5003
  if (TSDB_CODE_SUCCESS == code) {
1,874,406!
5004
    endTlvEncode(&encoder, pMsg, pLen);
1,874,426✔
5005
  }
5006
  clearTlvEncoder(&encoder);
1,874,338✔
5007

5008
  terrno = code;
1,874,601✔
5009
  return code;
1,874,553✔
5010
}
5011

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

5017
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
7,169,633✔
5018
  int32_t     code = msgToNode(&decoder, (void**)pNode);
7,169,633✔
5019
  if (TSDB_CODE_SUCCESS != code) {
7,163,018!
5020
    nodesDestroyNode(*pNode);
×
5021
    *pNode = NULL;
×
5022
  }
5023

5024
  terrno = code;
7,163,018✔
5025
  return code;
7,161,950✔
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