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

taosdata / TDengine / #4831

31 Oct 2025 03:37AM UTC coverage: 58.771% (-0.02%) from 58.792%
#4831

push

travis-ci

SallyHuo-TAOS
Merge remote-tracking branch 'origin/cover/3.0' into cover/3.0

# Conflicts:
#	test/ci/run.sh

149876 of 324176 branches covered (46.23%)

Branch coverage included in aggregate %.

199031 of 269498 relevant lines covered (73.85%)

239378092.09 hits per line

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

78.08
/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,288,852,219✔
78
  pEncoder->allocSize = NODES_MSG_DEFAULT_LEN;
1,288,852,219✔
79
  pEncoder->offset = 0;
1,289,525,855✔
80
  pEncoder->tlvCount = 0;
1,289,507,975✔
81
  pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize);
1,288,489,884!
82
  return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS;
1,285,274,291!
83
}
84

85
static void clearTlvEncoder(STlvEncoder* pEncoder) { taosMemoryFree(pEncoder->pBuf); }
1,285,867,152!
86

87
static void endTlvEncode(STlvEncoder* pEncoder, char** pMsg, int32_t* pLen) {
1,286,635,350✔
88
  *pMsg = pEncoder->pBuf;
1,286,635,350✔
89
  pEncoder->pBuf = NULL;
1,287,810,336✔
90
  *pLen = pEncoder->offset;
1,287,674,620✔
91
}
1,286,489,303✔
92

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
2,147,483,647✔
94
  int32_t tlvLen = sizeof(STlv) + len;
2,147,483,647✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
2,147,483,647✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
714,422,368✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
714,476,732!
98
    if (NULL == pNewBuf) {
712,803,968!
99
      return terrno;
×
100
    }
101
    pEncoder->pBuf = pNewBuf;
712,803,968✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
2,147,483,647✔
104
  pTlv->type = htons(type);
2,147,483,647✔
105
  pTlv->len = htonl(len);
2,147,483,647✔
106
  memcpy(pTlv->value, pValue, len);
2,147,483,647!
107
  pEncoder->offset += tlvLen;
2,147,483,647✔
108
  ++(pEncoder->tlvCount);
2,147,483,647✔
109
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
2,147,483,647✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
2,147,483,647✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
512,571,670!
115
    if (NULL == pNewBuf) {
511,844,449!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
511,844,449✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
511,750,530✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
2,147,483,647!
122
  pEncoder->offset += len;
2,147,483,647✔
123
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
2,147,483,647✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
2,147,483,647✔
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) {
2,147,483,647✔
140
  value = htons(value);
2,147,483,647✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
2,147,483,647✔
142
}
143

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

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

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

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

164
static int32_t tlvEncodeU8(STlvEncoder* pEncoder, int16_t type, uint8_t value) {
2,147,483,647✔
165
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
2,147,483,647✔
166
}
167

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

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

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

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

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

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

198
static int32_t tlvEncodeValueDouble(STlvEncoder* pEncoder, double value) {
790,778,533✔
199
  int64_t temp = *(int64_t*)&value;
790,778,533✔
200
  temp = htonll(temp);
791,934,431✔
201
  return tlvEncodeValueImpl(pEncoder, &temp, sizeof(temp));
791,934,431✔
202
}
203

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

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

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

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

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
2,147,483,647✔
223
  if (NULL == pValue) {
2,147,483,647✔
224
    return TSDB_CODE_SUCCESS;
400,239,488✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
2,147,483,647!
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
2,147,483,647✔
230
  int16_t len = strlen(pValue);
2,147,483,647!
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
2,147,483,647✔
232
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
2,147,483,647✔
234
  }
235
  return code;
2,147,483,647✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
2,147,483,647✔
243
  if (NULL == pObj) {
2,147,483,647✔
244
    return TSDB_CODE_SUCCESS;
2,147,483,647✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
2,147,483,647✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
416,108,849✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
415,662,592!
250
    if (NULL == pNewBuf) {
415,647,046!
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
415,647,046✔
254
  }
255

256
  int32_t start = pEncoder->offset;
2,147,483,647✔
257
  pEncoder->offset += sizeof(STlv);
2,147,483,647✔
258
  int32_t code = func(pObj, pEncoder);
2,147,483,647✔
259
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
2,147,483,647✔
261
    pTlv->type = htons(type);
2,147,483,647✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
2,147,483,647✔
263
  }
264
  ++(pEncoder->tlvCount);
2,147,483,647✔
265
  return code;
2,147,483,647✔
266
}
267

268
static int32_t tlvEncodeObjArray(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pArray, int32_t itemSize,
179,035,218✔
269
                                 int32_t num) {
270
  int32_t code = TSDB_CODE_SUCCESS;
179,035,218✔
271
  if (num > 0) {
179,035,218!
272
    int32_t start = pEncoder->offset;
179,064,162✔
273
    pEncoder->offset += sizeof(STlv);
179,099,576✔
274
    for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
374,148,497✔
275
      code = tlvEncodeObj(pEncoder, TLV_TYPE_ARRAY_ELEM, func, (const char*)pArray + i * itemSize);
194,979,925✔
276
    }
277
    if (TSDB_CODE_SUCCESS == code) {
179,168,572✔
278
      STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
179,032,119✔
279
      pTlv->type = htons(type);
179,058,791✔
280
      pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
179,068,534✔
281
    }
282
  }
283
  return code;
178,993,339✔
284
}
285

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
1,982,947,953✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
1,982,947,953✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
2,147,483,647✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
1,930,759,745✔
291
  }
292
  return code;
1,984,169,741✔
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;
2,147,483,647✔
298
    return TSDB_CODE_SUCCESS;
2,147,483,647✔
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; }
2,147,483,647✔
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);
2,147,483,647!
325
    return TSDB_CODE_SUCCESS;
2,147,483,647✔
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)); }
2,147,483,647✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
2,147,483,647✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,147,483,647✔
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) {
2,147,483,647✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,147,483,647✔
351
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
352
    *pValue = ntohs(*pValue);
2,147,483,647✔
353
  }
354
  return code;
2,147,483,647✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
2,147,483,647✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
2,147,483,647✔
359
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
360
    *pValue = ntohl(*pValue);
2,147,483,647✔
361
  }
362
  return code;
2,147,483,647✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
2,147,483,647✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,147,483,647✔
367
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
368
    *pValue = ntohl(*pValue);
2,147,483,647✔
369
  }
370
  return code;
2,147,483,647✔
371
}
372

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

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

394
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
2,147,483,647✔
395

396
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
2,147,483,647✔
397
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,147,483,647✔
398
}
399

400
static int32_t tlvDecodeU16(STlv* pTlv, uint16_t* pValue) {
59,652,437✔
401
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
59,652,437✔
402
  if (TSDB_CODE_SUCCESS == code) {
59,660,481!
403
    *pValue = ntohs(*pValue);
59,662,908✔
404
  }
405
  return code;
59,652,152✔
406
}
407

408
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
1,641,537,575✔
409
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
1,641,537,575✔
410
  if (TSDB_CODE_SUCCESS == code) {
1,641,833,392✔
411
    *pValue = ntohs(*pValue);
1,641,834,573✔
412
  }
413
  return code;
1,641,690,064✔
414
}
415

416
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
1,848,101,584✔
417
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
1,848,101,584✔
418
  if (TSDB_CODE_SUCCESS == code) {
1,848,280,307!
419
    *pValue = ntohll(*pValue);
1,848,292,463✔
420
  }
421
  return code;
1,848,235,516✔
422
}
423

424
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
2,147,483,647✔
425
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,147,483,647✔
426
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
427
    *pValue = ntohll(*pValue);
2,147,483,647✔
428
  }
429
  return code;
2,147,483,647✔
430
}
431

432
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
156,587,850✔
433
  volatile int64_t temp = 0;
156,587,850✔
434
  int32_t code = tlvDecodeI64(pTlv, (int64_t*)&temp);
156,604,117✔
435
  if (TSDB_CODE_SUCCESS == code) {
156,609,165!
436
    *pValue = *(double*)&temp;
156,612,499✔
437
  }
438
  return code;
156,616,317✔
439
}
440

441
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
814,370,283✔
442
  volatile int64_t temp = 0;
814,370,283✔
443
  int32_t code = tlvDecodeValueI64(pDecoder, (int64_t*)&temp);
814,439,355✔
444
  if (TSDB_CODE_SUCCESS == code) {
814,701,318✔
445
    *pValue = *(double*)&temp;
814,701,881✔
446
  }
447
  return code;
814,443,527✔
448
}
449

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

467
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
2,147,483,647✔
468
  int8_t  value = 0;
2,147,483,647✔
469
  int32_t code = tlvDecodeI8(pTlv, &value);
2,147,483,647✔
470
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
471
    code = convertIntegerType(value, pValue, sizeof(bool));
2,147,483,647✔
472
  }
473
  return code;
2,147,483,647✔
474
}
475

476
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
2,147,483,647✔
477
  int8_t  value = 0;
2,147,483,647✔
478
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
2,147,483,647✔
479
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
480
    code = convertIntegerType(value, pValue, sizeof(bool));
2,147,483,647✔
481
  }
482
  return code;
2,147,483,647✔
483
}
484

485
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
2,147,483,647✔
486
  int32_t value = 0;
2,147,483,647✔
487
  int32_t code = tlvDecodeI32(pTlv, &value);
2,147,483,647✔
488
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
489
    code = convertIntegerType(value, pValue, len);
2,147,483,647✔
490
  }
491
  return code;
2,147,483,647✔
492
}
493

494
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
2,147,483,647✔
495
  int32_t value = 0;
2,147,483,647✔
496
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
2,147,483,647✔
497
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
498
    code = convertIntegerType(value, pValue, len);
2,147,483,647✔
499
  }
500
  return code;
2,147,483,647✔
501
}
502

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

511
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
2,147,483,647✔
512
  int16_t len = 0;
2,147,483,647✔
513
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
2,147,483,647✔
514
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
515
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
2,147,483,647✔
516
  }
517
  return code;
2,147,483,647✔
518
}
519

520
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
1,889,480,863✔
521
  *pValue = taosStrndup(pTlv->value, pTlv->len);
1,889,480,863!
522
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
1,889,270,466!
523
}
524

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

534
static int32_t tlvDecodeBinary(STlv* pTlv, void* pValue) {
247,804,245✔
535
  memcpy(pValue, pTlv->value, pTlv->len);
247,804,245!
536
  return TSDB_CODE_SUCCESS;
247,760,765✔
537
}
538

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

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

553
static int32_t tlvDecodeObjArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize) {
58,306,582✔
554
  int32_t code = TSDB_CODE_SUCCESS;
58,306,582✔
555
  int32_t i = 0;
58,306,582✔
556
  STlv*   pTlv = NULL;
58,306,582✔
557
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
117,960,355!
558
  return code;
58,315,875✔
559
}
560

561
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
1,911,706,861✔
562
                                   int32_t* pNum) {
563
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
1,911,706,861✔
564
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
2,147,483,647✔
565
    code = func(pDecoder, (char*)pArray + i * itemSize);
1,641,994,608✔
566
  }
567
  return code;
1,911,886,487✔
568
}
569

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

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

583
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
2,147,483,647✔
584
  STlv*   pTlv = NULL;
2,147,483,647✔
585
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
2,147,483,647✔
586
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
587
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
2,147,483,647✔
588
  }
589
  return code;
2,147,483,647✔
590
}
591

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

594
static int32_t dataTypeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
595
  const SDataType* pNode = (const SDataType*)pObj;
2,147,483,647✔
596

597
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
2,147,483,647✔
598
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
599
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
2,147,483,647✔
600
  }
601
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
602
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
2,147,483,647✔
603
  }
604
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
605
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
2,147,483,647✔
606
  }
607

608
  return code;
2,147,483,647✔
609
}
610

611
static int32_t dataTypeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
612
  const SDataType* pNode = (const SDataType*)pObj;
2,147,483,647✔
613

614
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
2,147,483,647✔
615
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
616
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
2,147,483,647✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
619
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
2,147,483,647✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
622
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
2,147,483,647✔
623
  }
624

625
  return code;
2,147,483,647✔
626
}
627

628
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
629
  SDataType* pNode = (SDataType*)pObj;
2,147,483,647✔
630

631
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
2,147,483,647✔
632
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
633
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
2,147,483,647✔
634
  }
635
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
636
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
2,147,483,647✔
637
  }
638
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
639
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
2,147,483,647✔
640
  }
641

642
  return code;
2,147,483,647✔
643
}
644

645
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
646
  SDataType* pNode = (SDataType*)pObj;
2,147,483,647✔
647

648
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
649
  STlv*   pTlv = NULL;
2,147,483,647✔
650
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
651
    switch (pTlv->type) {
2,147,483,647!
652
      case DATA_TYPE_CODE_TYPE:
2,147,483,647✔
653
        code = tlvDecodeI8(pTlv, &pNode->type);
2,147,483,647✔
654
        break;
2,147,483,647✔
655
      case DATA_TYPE_CODE_PRECISION:
2,147,483,647✔
656
        code = tlvDecodeU8(pTlv, &pNode->precision);
2,147,483,647✔
657
        break;
2,147,483,647✔
658
      case DATA_TYPE_CODE_SCALE:
2,147,483,647✔
659
        code = tlvDecodeU8(pTlv, &pNode->scale);
2,147,483,647✔
660
        break;
2,147,483,647✔
661
      case DATA_TYPE_CODE_BYTES:
2,147,483,647✔
662
        code = tlvDecodeI32(pTlv, &pNode->bytes);
2,147,483,647✔
663
        break;
2,147,483,647✔
664
      default:
×
665
        break;
×
666
    }
667
  }
668

669
  return code;
2,147,483,647✔
670
}
671

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

674
static int32_t exprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
675
  const SExprNode* pNode = (const SExprNode*)pObj;
2,147,483,647✔
676
  int32_t          code = tlvEncodeObj(pEncoder, EXPR_CODE_RES_TYPE, dataTypeToMsg, &pNode->resType);
2,147,483,647✔
677
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
678
    code = tlvEncodeI32(pEncoder, EXPR_CODE_BIND_TUPLE_FUNC_IDX, pNode->relatedTo);
2,147,483,647✔
679
  }
680
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
681
    code = tlvEncodeI32(pEncoder, EXPR_CODE_TUPLE_FUNC_IDX, pNode->bindExprID);
2,147,483,647✔
682
  }
683
  return code;
2,147,483,647✔
684
}
685

686
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
687
  SExprNode* pNode = (SExprNode*)pObj;
2,147,483,647✔
688

689
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
690
  STlv*   pTlv = NULL;
2,147,483,647✔
691
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
692
    switch (pTlv->type) {
2,147,483,647!
693
      case EXPR_CODE_RES_TYPE:
2,147,483,647✔
694
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
2,147,483,647✔
695
        break;
2,147,483,647✔
696
      case EXPR_CODE_BIND_TUPLE_FUNC_IDX:
2,147,483,647✔
697
        code = tlvDecodeI32(pTlv, &pNode->relatedTo);
2,147,483,647✔
698
        break;
2,147,483,647✔
699
      case EXPR_CODE_TUPLE_FUNC_IDX:
2,147,483,647✔
700
        code = tlvDecodeI32(pTlv, &pNode->bindExprID);
2,147,483,647✔
701
        break;
2,147,483,647✔
702
      default:
×
703
        break;
×
704
    }
705
  }
706

707
  return code;
2,147,483,647✔
708
}
709

710
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
711

712
static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
713
  const SColumnNode* pNode = (const SColumnNode*)pObj;
2,147,483,647✔
714

715
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
2,147,483,647✔
716
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
717
    code = tlvEncodeValueI32(pEncoder, pNode->node.relatedTo);
2,147,483,647✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
720
    code = tlvEncodeValueI32(pEncoder, pNode->node.bindExprID);
2,147,483,647✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
723
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
2,147,483,647✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
726
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
2,147,483,647✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
729
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
2,147,483,647✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
732
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
2,147,483,647✔
733
  }
734
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
735
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
2,147,483,647✔
736
  }
737
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
738
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
2,147,483,647✔
739
  }
740
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
741
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
2,147,483,647✔
742
  }
743
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
744
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
2,147,483,647✔
745
  }
746
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
747
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
2,147,483,647✔
748
  }
749
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
750
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
2,147,483,647✔
751
  }
752
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
753
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
2,147,483,647!
754
  }
755
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
756
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
2,147,483,647!
757
  }  
758
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
759
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
2,147,483,647✔
760
  }
761
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
762
    code = tlvEncodeValueBool(pEncoder, pNode->isPrimTs);
2,147,483,647!
763
  }
764
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
765
    code = tlvEncodeValueBool(pEncoder, pNode->hasDep);
2,147,483,647!
766
  }
767
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
768
    code = tlvEncodeValueBool(pEncoder, pNode->hasRef);
2,147,483,647!
769
  }
770
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
771
    code = tlvEncodeValueCStr(pEncoder, pNode->refDbName);
2,147,483,647✔
772
  }
773
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
774
    code = tlvEncodeValueCStr(pEncoder, pNode->refTableName);
2,147,483,647✔
775
  }
776
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
777
    code = tlvEncodeValueCStr(pEncoder, pNode->refColName);
2,147,483,647✔
778
  }
779
  return code;
2,147,483,647✔
780
}
781

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

786
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
787
  SColumnNode* pNode = (SColumnNode*)pObj;
2,147,483,647✔
788

789
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
2,147,483,647✔
790
    if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
791
    code = tlvDecodeValueI32(pDecoder, &pNode->node.relatedTo);
2,147,483,647✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
794
    code = tlvDecodeValueI32(pDecoder, &pNode->node.bindExprID);
2,147,483,647✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
797
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
2,147,483,647✔
798
  }
799
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
800
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
2,147,483,647✔
801
  }
802
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
803
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
2,147,483,647✔
804
  }
805
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
806
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
2,147,483,647✔
807
  }
808
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
809
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
2,147,483,647✔
810
  }
811
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
812
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
2,147,483,647✔
813
  }
814
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
815
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
2,147,483,647✔
816
  }
817
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
818
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
2,147,483,647✔
819
  }
820
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
821
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
2,147,483,647✔
822
  }
823
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
824
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
2,147,483,647✔
825
  }
826
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
827
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
2,147,483,647✔
828
  }
829
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
830
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
2,147,483,647✔
831
  }  
832
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
833
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
2,147,483,647✔
834
  }
835
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
836
    code = tlvDecodeValueBool(pDecoder, &pNode->isPrimTs);
2,147,483,647✔
837
  }
838
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
839
    code = tlvDecodeValueBool(pDecoder, &pNode->hasDep);
2,147,483,647✔
840
  }
841
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
842
    code = tlvDecodeValueBool(pDecoder, &pNode->hasRef);
2,147,483,647✔
843
  }
844
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
845
    code = tlvDecodeValueCStr(pDecoder, pNode->refDbName);
2,147,483,647✔
846
  }
847
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
848
    code = tlvDecodeValueCStr(pDecoder, pNode->refTableName);
2,147,483,647✔
849
  }
850
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
851
    code = tlvDecodeValueCStr(pDecoder, pNode->refColName);
2,147,483,647✔
852
  }
853
  return code;
2,147,483,647✔
854
}
855

856
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
857
  SColumnNode* pNode = (SColumnNode*)pObj;
2,147,483,647✔
858

859
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
860
  STlv*   pTlv = NULL;
2,147,483,647✔
861
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
862
    switch (pTlv->type) {
2,147,483,647!
863
      case COLUMN_CODE_INLINE_ATTRS:
2,147,483,647✔
864
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
2,147,483,647✔
865
        break;
2,147,483,647✔
866
      default:
×
867
        break;
×
868
    }
869
  }
870

871
  return code;
2,147,483,647✔
872
}
873

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

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

887
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
888
  switch (pNode->node.resType.type) {
2,147,483,647!
889
    case TSDB_DATA_TYPE_NULL:
×
890
      break;
×
891
    case TSDB_DATA_TYPE_BOOL:
49,068,747✔
892
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
49,068,747!
893
      break;
49,133,530✔
894
    case TSDB_DATA_TYPE_TINYINT:
1,834,179,074✔
895
    case TSDB_DATA_TYPE_SMALLINT:
896
    case TSDB_DATA_TYPE_INT:
897
    case TSDB_DATA_TYPE_BIGINT:
898
    case TSDB_DATA_TYPE_TIMESTAMP:
899
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
1,834,179,074✔
900
      break;
1,836,475,780✔
901
    case TSDB_DATA_TYPE_UTINYINT:
53,633✔
902
    case TSDB_DATA_TYPE_USMALLINT:
903
    case TSDB_DATA_TYPE_UINT:
904
    case TSDB_DATA_TYPE_UBIGINT:
905
      code = tlvEncodeU64(pEncoder, VALUE_CODE_DATUM, pNode->datum.u);
53,633✔
906
      break;
53,633✔
907
    case TSDB_DATA_TYPE_FLOAT:
153,100,245✔
908
    case TSDB_DATA_TYPE_DOUBLE:
909
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
153,100,245✔
910
      break;
153,395,779✔
911
    case TSDB_DATA_TYPE_VARCHAR:
495,280,769✔
912
    case TSDB_DATA_TYPE_VARBINARY:
913
    case TSDB_DATA_TYPE_NCHAR:
914
    case TSDB_DATA_TYPE_GEOMETRY:
915
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, varDataTLen(pNode->datum.p));
495,280,769✔
916
      break;
496,282,801✔
917
    case TSDB_DATA_TYPE_JSON:
4,236✔
918
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
4,236✔
919
      break;
4,428✔
920
    case TSDB_DATA_TYPE_DECIMAL:
4,796✔
921
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, pNode->node.resType.bytes);
4,796✔
922
      break;
4,796✔
923
    case TSDB_DATA_TYPE_DECIMAL64:
×
924
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
×
925
      break;
×
926
    case TSDB_DATA_TYPE_BLOB:
×
927
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, blobDataTLen(pNode->datum.p));
×
928
      break;
×
929
      // todo
930
    default:
586✔
931
      break;
586✔
932
  }
933

934
  return code;
2,147,483,647✔
935
}
936

937
static int32_t valueNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
938
  const SValueNode* pNode = (const SValueNode*)pObj;
2,147,483,647✔
939

940
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
2,147,483,647✔
941
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
942
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
2,147,483,647✔
943
  }
944
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
945
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
2,147,483,647✔
946
  }
947
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
948
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
2,147,483,647!
949
  }
950
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
951
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
2,147,483,647!
952
  }
953
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
954
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
2,147,483,647!
955
  }
956
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
2,147,483,647✔
957
    code = datumToMsg(pNode, pEncoder);
2,147,483,647✔
958
  }
959

960
  return code;
2,147,483,647✔
961
}
962

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

966
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
967
  switch (pNode->node.resType.type) {
2,147,483,647!
968
    case TSDB_DATA_TYPE_NULL:
×
969
      break;
×
970
    case TSDB_DATA_TYPE_BOOL:
48,884,696✔
971
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
48,884,696✔
972
      *(bool*)&pNode->typeData = pNode->datum.b;
48,895,423!
973
      break;
48,883,406✔
974
    case TSDB_DATA_TYPE_TINYINT:
472,211,607✔
975
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
472,211,607✔
976
      *(int8_t*)&pNode->typeData = pNode->datum.i;
472,331,710✔
977
      break;
472,327,283✔
978
    case TSDB_DATA_TYPE_SMALLINT:
46,524,907✔
979
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
46,524,907✔
980
      *(int16_t*)&pNode->typeData = pNode->datum.i;
46,536,981✔
981
      break;
46,540,743✔
982
    case TSDB_DATA_TYPE_INT:
70,185,041✔
983
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
70,185,041✔
984
      *(int32_t*)&pNode->typeData = pNode->datum.i;
70,202,180✔
985
      break;
70,193,612✔
986
    case TSDB_DATA_TYPE_BIGINT:
1,214,283,563✔
987
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,214,283,563✔
988
      *(int64_t*)&pNode->typeData = pNode->datum.i;
1,214,364,709✔
989
      break;
1,214,392,208✔
990
    case TSDB_DATA_TYPE_TIMESTAMP:
40,506,228✔
991
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
40,506,228✔
992
      *(int64_t*)&pNode->typeData = pNode->datum.i;
40,510,918✔
993
      break;
40,511,166✔
994
    case TSDB_DATA_TYPE_UTINYINT:
18,280✔
995
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
18,280✔
996
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
18,280✔
997
      break;
18,280✔
998
    case TSDB_DATA_TYPE_USMALLINT:
4,068✔
999
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
4,068✔
1000
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
4,068✔
1001
      break;
4,068✔
1002
    case TSDB_DATA_TYPE_UINT:
6,896✔
1003
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
6,896✔
1004
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
6,896✔
1005
      break;
6,896✔
1006
    case TSDB_DATA_TYPE_UBIGINT:
24,738✔
1007
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
24,738✔
1008
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
24,738✔
1009
      break;
24,738✔
1010
    case TSDB_DATA_TYPE_FLOAT:
228,324✔
1011
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
228,324✔
1012
      *(float*)&pNode->typeData = pNode->datum.d;
228,324✔
1013
      break;
228,324✔
1014
    case TSDB_DATA_TYPE_DOUBLE:
156,369,713✔
1015
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
156,369,713✔
1016
      *(double*)&pNode->typeData = pNode->datum.d;
156,347,050✔
1017
      break;
156,359,528✔
1018
    case TSDB_DATA_TYPE_NCHAR:
247,811,482✔
1019
    case TSDB_DATA_TYPE_VARCHAR:
1020
    case TSDB_DATA_TYPE_VARBINARY:
1021
    case TSDB_DATA_TYPE_GEOMETRY: {
1022
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
247,811,482!
1023
        code = TSDB_CODE_FAILED;
×
1024
        break;
×
1025
      }
1026
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
247,781,838!
1027
      if (NULL == pNode->datum.p) {
247,820,168!
1028
        code = terrno;
×
1029
        break;
×
1030
      }
1031
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
247,760,074✔
1032
      if (TSDB_CODE_SUCCESS == code) {
247,727,082!
1033
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
247,744,424✔
1034
      }
1035
      break;
247,712,736✔
1036
    }
1037
    case TSDB_DATA_TYPE_JSON: {
4,236✔
1038
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
4,236!
1039
        code = TSDB_CODE_FAILED;
×
1040
        break;
×
1041
      }
1042
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
4,236✔
1043
      break;
4,236✔
1044
    }
1045
    case TSDB_DATA_TYPE_DECIMAL:
4,794✔
1046
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
4,794!
1047
      if (!pNode->datum.p) {
4,794!
1048
        code = terrno;
×
1049
        break;
×
1050
      }
1051
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
4,794✔
1052
      break;
4,794✔
1053
    case TSDB_DATA_TYPE_DECIMAL64:
×
1054
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
×
1055
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
1056
      break;
×
1057
    case TSDB_DATA_TYPE_BLOB:
×
1058
      if (pTlv->len > pNode->node.resType.bytes + BLOBSTR_HEADER_SIZE) {
×
1059
        code = TSDB_CODE_FAILED;
×
1060
        break;
×
1061
      }
1062
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
×
1063
      if (NULL == pNode->datum.p) {
×
1064
        code = terrno;
×
1065
        break;
×
1066
      }
1067
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
×
1068
      if (TSDB_CODE_SUCCESS == code) {
×
1069
        blobDataSetLen(pNode->datum.p, pTlv->len - BLOBSTR_HEADER_SIZE);
×
1070
      }
1071
      break;
×
1072
      // todo
1073
    default:
×
1074
      break;
×
1075
  }
1076

1077
  return code;
2,147,483,647✔
1078
}
1079

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

1083
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
1084
  STlv*   pTlv = NULL;
2,147,483,647✔
1085
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
1086
    switch (pTlv->type) {
2,147,483,647!
1087
      case VALUE_CODE_EXPR_BASE:
2,147,483,647✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,147,483,647✔
1089
        break;
2,147,483,647✔
1090
      case VALUE_CODE_LITERAL:
1,889,760,594✔
1091
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
1,889,760,594✔
1092
        break;
1,889,401,232✔
1093
      case VALUE_CODE_FLAG:
2,147,483,647✔
1094
        code = tlvDecodeI32(pTlv, &pNode->flag);
2,147,483,647✔
1095
        break;
2,147,483,647✔
1096
      case VALUE_CODE_TRANSLATE:
2,147,483,647✔
1097
        code = tlvDecodeBool(pTlv, &pNode->translate);
2,147,483,647✔
1098
        break;
2,147,483,647✔
1099
      case VALUE_CODE_NOT_RESERVED:
2,147,483,647✔
1100
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
2,147,483,647✔
1101
        break;
2,147,483,647✔
1102
      case VALUE_CODE_IS_NULL:
2,147,483,647✔
1103
        code = tlvDecodeBool(pTlv, &pNode->isNull);
2,147,483,647✔
1104
        break;
2,147,483,647✔
1105
      case VALUE_CODE_DATUM:
2,147,483,647✔
1106
        code = msgToDatum(pTlv, pNode);
2,147,483,647✔
1107
        break;
2,147,483,647✔
1108
      default:
×
1109
        break;
×
1110
    }
1111
  }
1112

1113
  return code;
2,147,483,647✔
1114
}
1115

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

1118
static int32_t operatorNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,197,823,347✔
1119
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
1,197,823,347✔
1120

1121
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,197,823,347✔
1122
  if (TSDB_CODE_SUCCESS == code) {
1,199,419,183!
1123
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
1,199,430,829✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
1,199,381,907!
1126
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
1,199,381,907✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
1,199,068,397!
1129
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
1,199,068,397✔
1130
  }
1131

1132
  return code;
1,199,047,814✔
1133
}
1134

1135
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
960,516,845✔
1136
  SOperatorNode* pNode = (SOperatorNode*)pObj;
960,516,845✔
1137

1138
  int32_t code = TSDB_CODE_SUCCESS;
960,516,845✔
1139
  STlv*   pTlv = NULL;
960,516,845✔
1140
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
1141
    switch (pTlv->type) {
2,147,483,647!
1142
      case OPERATOR_CODE_EXPR_BASE:
960,461,908✔
1143
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
960,461,908✔
1144
        break;
960,721,241✔
1145
      case OPERATOR_CODE_OP_TYPE:
960,737,395✔
1146
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
960,737,395✔
1147
        break;
960,648,716✔
1148
      case OPERATOR_CODE_LEFT:
960,726,878✔
1149
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
960,726,878✔
1150
        break;
960,573,348✔
1151
      case OPERATOR_CODE_RIGHT:
872,214,566✔
1152
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
872,214,566✔
1153
        break;
871,809,019✔
1154
      default:
×
1155
        break;
×
1156
    }
1157
  }
1158

1159
  return code;
960,953,836✔
1160
}
1161

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

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

1167
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
321,060,588✔
1168
  if (TSDB_CODE_SUCCESS == code) {
321,436,074!
1169
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
321,438,273✔
1170
  }
1171
  if (TSDB_CODE_SUCCESS == code) {
321,413,219!
1172
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
321,413,219✔
1173
  }
1174

1175
  return code;
321,430,007✔
1176
}
1177

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

1181
  int32_t code = TSDB_CODE_SUCCESS;
240,888,270✔
1182
  STlv*   pTlv = NULL;
240,888,270✔
1183
  tlvForEach(pDecoder, pTlv, code) {
963,755,044✔
1184
    switch (pTlv->type) {
722,857,587!
1185
      case LOGIC_COND_CODE_EXPR_BASE:
240,927,256✔
1186
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
240,927,256✔
1187
        break;
240,951,392✔
1188
      case LOGIC_COND_CODE_COND_TYPE:
240,962,488✔
1189
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
240,962,488✔
1190
        break;
240,931,975✔
1191
      case LOGIC_COND_CODE_PARAMETERS:
240,968,282✔
1192
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
240,968,282✔
1193
        break;
240,954,826✔
1194
      default:
×
1195
        break;
×
1196
    }
1197
  }
1198

1199
  return code;
241,026,205✔
1200
}
1201

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

1217
static int32_t functionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,814,102,090✔
1218
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
1,814,102,090✔
1219

1220
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,814,102,090✔
1221
  if (TSDB_CODE_SUCCESS == code) {
1,815,989,743!
1222
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
1,816,012,010✔
1223
  }
1224
  if (TSDB_CODE_SUCCESS == code) {
1,815,218,000✔
1225
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
1,815,217,466✔
1226
  }
1227
  if (TSDB_CODE_SUCCESS == code) {
1,815,923,079✔
1228
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
1,815,923,099✔
1229
  }
1230
  if (TSDB_CODE_SUCCESS == code) {
1,815,982,166✔
1231
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
1,815,982,747✔
1232
  }
1233
  if (TSDB_CODE_SUCCESS == code) {
1,815,234,817✔
1234
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
1,815,235,689✔
1235
  }
1236
  if (TSDB_CODE_SUCCESS == code) {
1,816,018,700✔
1237
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
1,816,018,502!
1238
  }
1239
  if (TSDB_CODE_SUCCESS == code) {
1,816,043,002✔
1240
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
1,816,043,726✔
1241
  }  
1242
  if (TSDB_CODE_SUCCESS == code) {
1,816,107,517✔
1243
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
1,816,108,860!
1244
  }
1245
  if (TSDB_CODE_SUCCESS == code) {
1,816,081,264✔
1246
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
1,816,083,472✔
1247
  }
1248
  if (TSDB_CODE_SUCCESS == code) {
1,816,052,014✔
1249
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
1,816,052,657✔
1250
  }
1251
  if (TSDB_CODE_SUCCESS == code) {
1,816,065,133✔
1252
    code = tlvEncodeObj(pEncoder, FUNCTION_SRC_FUNC_INPUT_TYPE, dataTypeInlineToMsg, &pNode->srcFuncInputType);
1,816,065,835✔
1253
  }
1254

1255
  return code;
1,815,546,409✔
1256
}
1257

1258
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
1,871,692,096✔
1259
  SFunctionNode* pNode = (SFunctionNode*)pObj;
1,871,692,096✔
1260

1261
  int32_t code = TSDB_CODE_SUCCESS;
1,871,692,096✔
1262
  STlv*   pTlv = NULL;
1,871,692,096✔
1263
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
1264
    switch (pTlv->type) {
2,147,483,647!
1265
      case FUNCTION_CODE_EXPR_BASE:
1,871,689,778✔
1266
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
1,871,689,778✔
1267
        break;
1,871,657,253✔
1268
      case FUNCTION_CODE_FUNCTION_NAME:
1,871,922,840✔
1269
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
1,871,922,840✔
1270
        break;
1,871,773,669✔
1271
      case FUNCTION_CODE_FUNCTION_ID:
1,871,930,148✔
1272
        code = tlvDecodeI32(pTlv, &pNode->funcId);
1,871,930,148✔
1273
        break;
1,871,906,272✔
1274
      case FUNCTION_CODE_FUNCTION_TYPE:
1,871,933,384✔
1275
        code = tlvDecodeI32(pTlv, &pNode->funcType);
1,871,933,384✔
1276
        break;
1,871,900,173✔
1277
      case FUNCTION_CODE_PARAMETERS:
1,422,048,292✔
1278
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
1,422,048,292✔
1279
        break;
1,422,026,001✔
1280
      case FUNCTION_CODE_UDF_BUF_SIZE:
1,871,956,242✔
1281
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
1,871,956,242✔
1282
        break;
1,871,892,563✔
1283
      case FUNCTION_NODE_HAS_PK:
1,871,792,941✔
1284
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
1,871,792,941✔
1285
        break;
1,871,866,232✔
1286
      case FUNCTION_NODE_PK_BYTES:
1,871,954,899✔
1287
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
1,871,954,899✔
1288
        break;  
1,871,946,772✔
1289
      case FUNCTION_CODE_IS_MERGE_FUNC:
1,871,963,809✔
1290
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
1,871,963,809✔
1291
        break;
1,871,653,985✔
1292
      case FUNCTION_CODE_MERGE_FUNC_OF:
1,871,952,527✔
1293
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
1,871,952,527✔
1294
        break;
1,871,949,881✔
1295
      case FUNCTION_CODE_TRIM_TYPE:
1,871,966,650✔
1296
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
1,871,966,650✔
1297
        break;
1,871,904,587✔
1298
      case FUNCTION_SRC_FUNC_INPUT_TYPE:
1,871,949,941✔
1299
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->srcFuncInputType);
1,871,949,941✔
1300
      default:
1,871,861,279✔
1301
        break;
1,871,861,279✔
1302
    }
1303
  }
1304

1305
  return code;
1,879,339,487✔
1306
}
1307

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

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

1313
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
231,414,411✔
1314
  if (TSDB_CODE_SUCCESS == code) {
231,522,627!
1315
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
231,523,043✔
1316
  }
1317
  if (TSDB_CODE_SUCCESS == code) {
231,521,015!
1318
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
231,521,141✔
1319
  }
1320

1321
  return code;
231,527,164✔
1322
}
1323

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

1327
  int32_t code = TSDB_CODE_SUCCESS;
236,178,248✔
1328
  STlv*   pTlv = NULL;
236,178,248✔
1329
  tlvForEach(pDecoder, pTlv, code) {
944,794,091!
1330
    switch (pTlv->type) {
708,606,090!
1331
      case ORDER_BY_EXPR_CODE_EXPR:
236,190,018✔
1332
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
236,190,018✔
1333
        break;
236,197,511✔
1334
      case ORDER_BY_EXPR_CODE_ORDER:
236,205,098✔
1335
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
236,205,098✔
1336
        break;
236,204,472✔
1337
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
236,211,600✔
1338
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
236,211,600✔
1339
        break;
236,202,144✔
1340
      default:
×
1341
        break;
×
1342
    }
1343
  }
1344

1345
  return code;
236,211,024✔
1346
}
1347

1348
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1349

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

1353
  int32_t code = tlvEncodeObj(pEncoder, LIMIT_CODE_LIMIT, nodeToMsg, pNode->limit);
155,037,887✔
1354
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
155,198,294!
1355
    code = tlvEncodeObj(pEncoder, LIMIT_CODE_OFFSET, nodeToMsg, pNode->offset);
61,864,846✔
1356
  }
1357

1358
  return code;
155,124,862✔
1359
}
1360

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

1364
  int32_t code = TSDB_CODE_SUCCESS;
158,606,795✔
1365
  STlv*   pTlv = NULL;
158,606,795✔
1366
  tlvForEach(pDecoder, pTlv, code) {
381,587,918!
1367
    switch (pTlv->type) {
222,996,984!
1368
      case LIMIT_CODE_LIMIT:
158,626,542✔
1369
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->limit);
158,626,542✔
1370
        break;
158,604,121✔
1371
      case LIMIT_CODE_OFFSET:
64,371,191✔
1372
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->offset);
64,371,191✔
1373
        break;
64,360,647✔
1374
      default:
×
1375
        break;
×
1376
    }
1377
  }
1378

1379
  return code;
158,606,335✔
1380
}
1381

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

1384
static int32_t nameToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,014,721,608✔
1385
  const SName* pNode = (const SName*)pObj;
1,014,721,608✔
1386

1387
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
1,014,721,608✔
1388
  if (TSDB_CODE_SUCCESS == code) {
1,017,746,807✔
1389
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
1,017,745,535✔
1390
  }
1391
  if (TSDB_CODE_SUCCESS == code) {
1,017,824,670✔
1392
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
1,017,821,117✔
1393
  }
1394
  if (TSDB_CODE_SUCCESS == code) {
1,015,828,306✔
1395
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
1,015,825,358✔
1396
  }
1397

1398
  return code;
1,017,863,270✔
1399
}
1400

1401
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
918,083,651✔
1402
  SName* pNode = (SName*)pObj;
918,083,651✔
1403

1404
  int32_t code = TSDB_CODE_SUCCESS;
918,083,651✔
1405
  STlv*   pTlv = NULL;
918,083,651✔
1406
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
1407
    switch (pTlv->type) {
2,147,483,647!
1408
      case NAME_CODE_TYPE:
918,207,443✔
1409
        code = tlvDecodeU8(pTlv, &pNode->type);
918,207,443✔
1410
        break;
918,301,740✔
1411
      case NAME_CODE_ACCT_ID:
918,447,776✔
1412
        code = tlvDecodeI32(pTlv, &pNode->acctId);
918,447,776✔
1413
        break;
918,400,380✔
1414
      case NAME_CODE_DB_NAME:
918,454,643✔
1415
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
918,454,643✔
1416
        break;
918,146,550✔
1417
      case NAME_CODE_TABLE_NAME:
918,449,720✔
1418
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
918,449,720✔
1419
        break;
918,418,155✔
1420
      default:
×
1421
        break;
×
1422
    }
1423
  }
1424

1425
  return code;
918,452,513✔
1426
}
1427

1428
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1429

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

1433
  int32_t code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_START_KEY, pNode->skey);
55,644,077✔
1434
  if (TSDB_CODE_SUCCESS == code) {
55,704,679!
1435
    code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_END_KEY, pNode->ekey);
55,704,688✔
1436
  }
1437

1438
  return code;
55,708,939✔
1439
}
1440

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

1444
  int32_t code = TSDB_CODE_SUCCESS;
57,015,255✔
1445
  STlv*   pTlv = NULL;
57,015,255✔
1446
  tlvForEach(pDecoder, pTlv, code) {
171,068,357✔
1447
    switch (pTlv->type) {
114,045,613!
1448
      case TIME_WINDOW_CODE_START_KEY:
57,024,783✔
1449
        code = tlvDecodeI64(pTlv, &pNode->skey);
57,024,783✔
1450
        break;
57,023,177✔
1451
      case TIME_WINDOW_CODE_END_KEY:
57,020,830✔
1452
        code = tlvDecodeI64(pTlv, &pNode->ekey);
57,020,830✔
1453
        break;
57,023,324✔
1454
      default:
×
1455
        break;
×
1456
    }
1457
  }
1458

1459
  return code;
57,029,948✔
1460
}
1461

1462
enum { NODE_LIST_CODE_DATA_TYPE = 1, NODE_LIST_CODE_NODE_LIST };
1463

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

1467
  int32_t code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_DATA_TYPE, dataTypeInlineToMsg, &pNode->node.resType);
37,293,277✔
1468
  if (TSDB_CODE_SUCCESS == code) {
37,351,242✔
1469
    code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_NODE_LIST, nodeListToMsg, pNode->pNodeList);
37,350,718✔
1470
  }
1471

1472
  return code;
37,347,268✔
1473
}
1474

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

1478
  int32_t code = TSDB_CODE_SUCCESS;
37,603,477✔
1479
  STlv*   pTlv = NULL;
37,603,477✔
1480
  tlvForEach(pDecoder, pTlv, code) {
112,822,578!
1481
    switch (pTlv->type) {
75,217,361!
1482
      case NODE_LIST_CODE_DATA_TYPE:
37,609,542✔
1483
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
37,609,542✔
1484
        break;
37,608,489✔
1485
      case NODE_LIST_CODE_NODE_LIST:
37,607,819✔
1486
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
37,607,819✔
1487
        break;
37,607,723✔
1488
      default:
×
1489
        break;
×
1490
    }
1491
  }
1492

1493
  return code;
37,602,310✔
1494
}
1495

1496
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1497

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

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

1506
  return code;
2,147,483,647✔
1507
}
1508

1509
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1510
  const STargetNode* pNode = (const STargetNode*)pObj;
2,147,483,647✔
1511

1512
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
2,147,483,647✔
1513
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1514
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
2,147,483,647✔
1515
  }
1516

1517
  return code;
2,147,483,647✔
1518
}
1519

1520
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1521
  STargetNode* pNode = (STargetNode*)pObj;
2,147,483,647✔
1522

1523
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
2,147,483,647✔
1524
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1525
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
2,147,483,647✔
1526
  }
1527

1528
  return code;
2,147,483,647✔
1529
}
1530

1531
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1532
  STargetNode* pNode = (STargetNode*)pObj;
2,147,483,647✔
1533

1534
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
1535
  STlv*   pTlv = NULL;
2,147,483,647✔
1536
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
1537
    switch (pTlv->type) {
2,147,483,647!
1538
      case TARGET_CODE_INLINE_ATTRS:
2,147,483,647✔
1539
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
2,147,483,647✔
1540
        break;
2,147,483,647✔
1541
      case TARGET_CODE_EXPR:
2,147,483,647✔
1542
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
2,147,483,647✔
1543
        break;
2,147,483,647✔
1544
      default:
×
1545
        break;
×
1546
    }
1547
  }
1548

1549
  return code;
2,147,483,647✔
1550
}
1551

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

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

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

1567
  return code;
×
1568
}
1569

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

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

1591
  return code;
×
1592
}
1593

1594
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1595

1596
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1597
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
2,147,483,647✔
1598

1599
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
2,147,483,647✔
1600
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1601
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
2,147,483,647✔
1602
  }
1603
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1604
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
2,147,483,647✔
1605
  }
1606
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1607
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
2,147,483,647✔
1608
  }
1609

1610
  return code;
2,147,483,647✔
1611
}
1612

1613
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1614
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
2,147,483,647✔
1615

1616
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
2,147,483,647✔
1617
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1618
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
2,147,483,647✔
1619
  }
1620

1621
  return code;
2,147,483,647✔
1622
}
1623

1624
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1625
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
2,147,483,647✔
1626

1627
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
2,147,483,647✔
1628
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1629
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
2,147,483,647✔
1630
  }
1631
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1632
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
2,147,483,647✔
1633
  }
1634
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1635
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
2,147,483,647✔
1636
  }
1637

1638
  return code;
2,147,483,647✔
1639
}
1640

1641
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1642
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
2,147,483,647✔
1643

1644
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
1645
  STlv*   pTlv = NULL;
2,147,483,647✔
1646
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
1647
    switch (pTlv->type) {
2,147,483,647!
1648
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
2,147,483,647✔
1649
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
2,147,483,647✔
1650
        break;
2,147,483,647✔
1651
      case DATA_BLOCK_DESC_CODE_SLOTS:
2,147,483,647✔
1652
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
2,147,483,647✔
1653
        break;
2,147,483,647✔
1654
      default:
×
1655
        break;
×
1656
    }
1657
  }
1658

1659
  return code;
2,147,483,647✔
1660
}
1661

1662
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1663

1664
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1665
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
2,147,483,647✔
1666

1667
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
2,147,483,647✔
1668
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1669
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
2,147,483,647✔
1670
  }
1671
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1672
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
2,147,483,647!
1673
  }
1674
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1675
    code = tlvEncodeValueBool(pEncoder, pNode->output);
2,147,483,647!
1676
  }
1677
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1678
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
2,147,483,647!
1679
  }
1680

1681
  return code;
2,147,483,647✔
1682
}
1683

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

1688
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1689
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
2,147,483,647✔
1690

1691
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
2,147,483,647✔
1692
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1693
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
2,147,483,647✔
1694
  }
1695
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1696
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
2,147,483,647✔
1697
  }
1698
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1699
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
2,147,483,647✔
1700
  }
1701
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
1702
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
2,147,483,647✔
1703
  }
1704

1705
  return code;
2,147,483,647✔
1706
}
1707

1708
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1709
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
2,147,483,647✔
1710

1711
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
1712
  STlv*   pTlv = NULL;
2,147,483,647✔
1713
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
1714
    switch (pTlv->type) {
2,147,483,647!
1715
      case SLOT_DESC_CODE_INLINE_ATTRS:
2,147,483,647✔
1716
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
2,147,483,647✔
1717
        break;
2,147,483,647✔
1718
      default:
×
1719
        break;
×
1720
    }
1721
  }
1722

1723
  return code;
2,147,483,647✔
1724
}
1725

1726
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1727

1728
static int32_t epInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,930,022,290✔
1729
  const SEp* pNode = (const SEp*)pObj;
1,930,022,290✔
1730

1731
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
1,930,022,290✔
1732
  if (TSDB_CODE_SUCCESS == code) {
1,931,541,054✔
1733
    code = tlvEncodeValueU16(pEncoder, pNode->port);
1,931,535,983✔
1734
  }
1735

1736
  return code;
1,930,954,366✔
1737
}
1738

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

1742
  int32_t code = tlvEncodeCStr(pEncoder, EP_CODE_FQDN, pNode->fqdn);
194,988,223✔
1743
  if (TSDB_CODE_SUCCESS == code) {
195,085,646!
1744
    code = tlvEncodeU16(pEncoder, EP_CODE_port, pNode->port);
195,085,646✔
1745
  }
1746

1747
  return code;
195,083,683✔
1748
}
1749

1750
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
1,641,501,183✔
1751
  SEp* pNode = (SEp*)pObj;
1,641,501,183✔
1752

1753
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
1,641,501,183✔
1754
  if (TSDB_CODE_SUCCESS == code) {
1,641,825,571✔
1755
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
1,641,824,236✔
1756
  }
1757

1758
  return code;
1,641,671,184✔
1759
}
1760

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

1764
  int32_t code = TSDB_CODE_SUCCESS;
59,654,701✔
1765
  STlv*   pTlv = NULL;
59,654,701✔
1766
  tlvForEach(pDecoder, pTlv, code) {
178,978,508✔
1767
    switch (pTlv->type) {
119,329,209!
1768
      case EP_CODE_FQDN:
59,663,873✔
1769
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
59,663,873✔
1770
        break;
59,664,015✔
1771
      case EP_CODE_port:
59,665,346✔
1772
        code = tlvDecodeU16(pTlv, &pNode->port);
59,665,346✔
1773
        break;
59,656,764✔
1774
      default:
×
1775
        break;
×
1776
    }
1777
  }
1778

1779
  return code;
59,664,752✔
1780
}
1781

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

1784
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,983,084,264✔
1785
  const SEpSet* pNode = (const SEpSet*)pObj;
1,983,084,264✔
1786

1787
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
1,983,084,264✔
1788
  if (TSDB_CODE_SUCCESS == code) {
1,984,644,075!
1789
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
1,984,687,533✔
1790
  }
1791

1792
  return code;
1,984,158,080✔
1793
}
1794

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

1798
  int32_t code = tlvEncodeI8(pEncoder, EP_SET_CODE_IN_USE, pNode->inUse);
179,039,155✔
1799
  if (TSDB_CODE_SUCCESS == code) {
179,110,671!
1800
    code = tlvEncodeI8(pEncoder, EP_SET_CODE_NUM_OF_EPS, pNode->numOfEps);
179,110,671✔
1801
  }
1802
  if (TSDB_CODE_SUCCESS == code) {
179,115,149!
1803
    code = tlvEncodeObjArray(pEncoder, EP_SET_CODE_EPS, epToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
179,115,149✔
1804
  }
1805

1806
  return code;
179,044,246✔
1807
}
1808

1809
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
1,911,733,825✔
1810
  SEpSet* pNode = (SEpSet*)pObj;
1,911,733,825✔
1811

1812
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
1,911,733,825✔
1813
  if (TSDB_CODE_SUCCESS == code) {
1,912,014,384✔
1814
    int32_t numOfEps = 0;
1,912,010,814✔
1815
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
1,912,016,159✔
1816
    pNode->numOfEps = numOfEps;
1,911,900,299✔
1817
  }
1818

1819
  return code;
1,911,803,375✔
1820
}
1821

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

1825
  int32_t code = TSDB_CODE_SUCCESS;
58,310,755✔
1826
  STlv*   pTlv = NULL;
58,310,755✔
1827
  tlvForEach(pDecoder, pTlv, code) {
233,255,696✔
1828
    switch (pTlv->type) {
174,953,777!
1829
      case EP_SET_CODE_IN_USE:
58,312,812✔
1830
        code = tlvDecodeI8(pTlv, &pNode->inUse);
58,312,812✔
1831
        break;
58,311,261✔
1832
      case EP_SET_CODE_NUM_OF_EPS:
58,318,107✔
1833
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
58,318,107✔
1834
        break;
58,318,117✔
1835
      case EP_SET_CODE_EPS:
58,324,318✔
1836
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
58,324,318✔
1837
        break;
58,314,103✔
1838
      default:
×
1839
        break;
×
1840
    }
1841
  }
1842

1843
  return code;
58,315,686✔
1844
}
1845

1846
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1847

1848
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,983,258,668✔
1849
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
1,983,258,668✔
1850

1851
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
1,983,258,668✔
1852
  if (TSDB_CODE_SUCCESS == code) {
1,983,546,912✔
1853
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
1,983,536,481✔
1854
  }
1855

1856
  return code;
1,984,152,989✔
1857
}
1858

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

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

1867
  return code;
×
1868
}
1869

1870
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
1,911,737,008✔
1871
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
1,911,737,008✔
1872

1873
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
1,911,737,008✔
1874
  if (TSDB_CODE_SUCCESS == code) {
1,912,015,280!
1875
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
1,912,017,551✔
1876
  }
1877

1878
  return code;
1,911,816,621✔
1879
}
1880

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

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

1897
  return code;
×
1898
}
1899

1900
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1901

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

1905
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
695,138,289✔
1906
  if (TSDB_CODE_SUCCESS == code) {
695,144,932✔
1907
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
695,131,602✔
1908
  }
1909
  if (TSDB_CODE_SUCCESS == code) {
695,146,269!
1910
    code = tlvEncodeValueU64(pEncoder, pNode->sId);
695,146,269✔
1911
  }
1912
  if (TSDB_CODE_SUCCESS == code) {
695,149,835!
1913
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
695,149,835✔
1914
  }
1915
  if (TSDB_CODE_SUCCESS == code) {
695,144,182!
1916
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
695,144,182✔
1917
  }
1918
  if (TSDB_CODE_SUCCESS == code) {
695,148,766!
1919
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
695,148,766✔
1920
  }
1921

1922
  return code;
695,145,907✔
1923
}
1924

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

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

1932
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
714,832,841✔
1933
  if (TSDB_CODE_SUCCESS == code) {
714,850,132✔
1934
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
714,829,413✔
1935
  }
1936
  if (TSDB_CODE_SUCCESS == code) {
714,854,555!
1937
    code = tlvDecodeValueU64(pDecoder, &pNode->sId);
714,854,555✔
1938
  }
1939
  if (TSDB_CODE_SUCCESS == code) {
714,853,930!
1940
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
714,853,930✔
1941
  }
1942
  if (TSDB_CODE_SUCCESS == code) {
714,852,961!
1943
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
714,852,961✔
1944
  }
1945
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
714,853,304!
1946
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
714,841,952✔
1947
  }
1948

1949
  return code;
714,853,825✔
1950
}
1951

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

1955
  int32_t code = TSDB_CODE_SUCCESS;
714,832,741✔
1956
  STlv*   pTlv = NULL;
714,832,741✔
1957
  tlvForEach(pDecoder, pTlv, code) {
1,429,693,706!
1958
    switch (pTlv->type) {
714,851,847!
1959
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
714,851,854✔
1960
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
714,851,854✔
1961
        break;
714,853,825✔
1962
      default:
×
1963
        break;
×
1964
    }
1965
  }
1966

1967
  return code;
714,856,626✔
1968
}
1969

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

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

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

1983
  return code;
4,906,517✔
1984
}
1985

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

1989
  int32_t code = TSDB_CODE_SUCCESS;
5,145,154✔
1990
  STlv*   pTlv = NULL;
5,145,154✔
1991
  tlvForEach(pDecoder, pTlv, code) {
20,580,616!
1992
    switch (pTlv->type) {
15,435,462!
1993
      case WHEN_THEN_CODE_EXPR_BASE:
5,145,154✔
1994
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,145,154✔
1995
        break;
5,145,154✔
1996
      case WHEN_THEN_CODE_WHEN:
5,145,154✔
1997
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
5,145,154✔
1998
        break;
5,145,154✔
1999
      case WHEN_THEN_CODE_THEN:
5,145,154✔
2000
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
5,145,154✔
2001
        break;
5,145,154✔
2002
      default:
×
2003
        break;
×
2004
    }
2005
  }
2006

2007
  return code;
5,145,154✔
2008
}
2009

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

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

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

2026
  return code;
4,012,771✔
2027
}
2028

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

2032
  int32_t code = TSDB_CODE_SUCCESS;
4,156,911✔
2033
  STlv*   pTlv = NULL;
4,156,911✔
2034
  tlvForEach(pDecoder, pTlv, code) {
16,583,829!
2035
    switch (pTlv->type) {
12,426,918!
2036
      case CASE_WHEN_CODE_EXPR_BASE:
4,156,911✔
2037
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
4,156,911✔
2038
        break;
4,156,911✔
2039
      case CASE_WHEN_CODE_CASE:
436,165✔
2040
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
436,165✔
2041
        break;
436,165✔
2042
      case CASE_WHEN_CODE_ELSE:
3,676,931✔
2043
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
3,676,931✔
2044
        break;
3,676,931✔
2045
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
4,156,911✔
2046
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
4,156,911✔
2047
        break;
4,156,911✔
2048
      default:
×
2049
        break;
×
2050
    }
2051
  }
2052

2053
  return code;
4,156,911✔
2054
}
2055

2056
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
2057

2058
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,097,401✔
2059
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
1,097,401✔
2060

2061
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
1,097,401✔
2062
  if (TSDB_CODE_SUCCESS == code) {
1,097,401!
2063
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
1,097,401✔
2064
  }
2065

2066
  return code;
1,097,401✔
2067
}
2068

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

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

2087
  return code;
1,099,837✔
2088
}
2089

2090

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

2103
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
2104
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
2,147,483,647✔
2105

2106
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
2,147,483,647✔
2107
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
2108
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
2,147,483,647✔
2109
  }
2110
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
2111
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
2,147,483,647✔
2112
  }
2113
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
2114
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
2,147,483,647✔
2115
  }
2116
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
2117
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
2,147,483,647✔
2118
  }
2119
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
2120
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
2,147,483,647✔
2121
  }
2122
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
2123
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
2,147,483,647✔
2124
  }
2125
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
2126
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
2,147,483,647!
2127
  }
2128
  if (TSDB_CODE_SUCCESS == code) { 
2,147,483,647✔
2129
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
2,147,483,647!
2130
  }
2131

2132
  return code;
2,147,483,647✔
2133
}
2134

2135
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
2136
  SPhysiNode* pNode = (SPhysiNode*)pObj;
2,147,483,647✔
2137

2138
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
2139
  STlv*   pTlv = NULL;
2,147,483,647✔
2140
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
2141
    switch (pTlv->type) {
2,147,483,647!
2142
      case PHY_NODE_CODE_OUTPUT_DESC:
2,147,483,647✔
2143
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
2,147,483,647✔
2144
        break;
2,147,483,647✔
2145
      case PHY_NODE_CODE_CONDITIONS:
290,174,864✔
2146
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
290,174,864✔
2147
        break;
290,101,760✔
2148
      case PHY_NODE_CODE_CHILDREN:
1,163,860,884✔
2149
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
1,163,860,884✔
2150
        break;
1,164,035,377✔
2151
      case PHY_NODE_CODE_LIMIT:
148,264,619✔
2152
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
148,264,619✔
2153
        break;
148,249,930✔
2154
      case PHY_NODE_CODE_SLIMIT:
9,840,044✔
2155
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
9,840,044✔
2156
        break;
9,839,285✔
2157
      case PHY_NODE_CODE_INPUT_TS_ORDER:
2,147,483,647✔
2158
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
2,147,483,647✔
2159
        break;
2,147,483,647✔
2160
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
2,147,483,647✔
2161
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
2,147,483,647✔
2162
        break;
2,147,483,647✔
2163
      case PHY_NODE_CODE_DYNAMIC_OP:
2,147,483,647✔
2164
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
2,147,483,647✔
2165
        break;
2,147,483,647✔
2166
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
2,147,483,647✔
2167
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
2,147,483,647✔
2168
        break;
2,147,483,647✔
2169
      default:
×
2170
        break;
×
2171
    }
2172
  }
2173

2174
  return code;
2,147,483,647✔
2175
}
2176

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

2189
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,015,032,487✔
2190
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
1,015,032,487✔
2191

2192
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,015,032,487✔
2193
  if (TSDB_CODE_SUCCESS == code) {
1,017,766,437✔
2194
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
1,017,791,205✔
2195
  }
2196
  if (TSDB_CODE_SUCCESS == code) {
1,017,731,287✔
2197
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
1,017,729,534✔
2198
  }
2199
  if (TSDB_CODE_SUCCESS == code) {
1,017,637,592✔
2200
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
1,017,634,477✔
2201
  }
2202
  if (TSDB_CODE_SUCCESS == code) {
1,015,934,285✔
2203
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
1,015,931,257✔
2204
  }
2205
  if (TSDB_CODE_SUCCESS == code) {
1,017,846,180✔
2206
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
1,017,843,224✔
2207
  }
2208
  if (TSDB_CODE_SUCCESS == code) {
1,017,690,489✔
2209
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
1,017,684,123✔
2210
  }
2211
  if (TSDB_CODE_SUCCESS == code) {
1,017,867,739✔
2212
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
1,017,861,382!
2213
  }
2214
  if (TSDB_CODE_SUCCESS == code) {
1,017,877,949✔
2215
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN, pNode->virtualStableScan);
1,017,871,671!
2216
  }
2217

2218
  return code;
1,017,915,299✔
2219
}
2220

2221
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
917,918,281✔
2222
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
917,918,281✔
2223

2224
  int32_t code = TSDB_CODE_SUCCESS;
917,918,281✔
2225
  STlv*   pTlv = NULL;
917,918,281✔
2226
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
2227
    switch (pTlv->type) {
2,147,483,647✔
2228
      case PHY_SCAN_CODE_BASE_NODE:
917,919,183✔
2229
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
917,919,183✔
2230
        break;
918,309,028✔
2231
      case PHY_SCAN_CODE_SCAN_COLS:
881,778,971✔
2232
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
881,778,971✔
2233
        break;
882,098,944✔
2234
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
350,232,381✔
2235
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
350,232,381✔
2236
        break;
350,213,766✔
2237
      case PHY_SCAN_CODE_BASE_UID:
918,256,196✔
2238
        code = tlvDecodeU64(pTlv, &pNode->uid);
918,256,196✔
2239
        break;
918,283,167✔
2240
      case PHY_SCAN_CODE_BASE_SUID:
918,447,410✔
2241
        code = tlvDecodeU64(pTlv, &pNode->suid);
918,447,410✔
2242
        break;
918,449,901✔
2243
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
918,462,556✔
2244
        code = tlvDecodeI8(pTlv, &pNode->tableType);
918,462,556✔
2245
        break;
918,123,886✔
2246
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
918,436,468✔
2247
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
918,436,468✔
2248
        break;
918,401,687✔
2249
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
918,444,935✔
2250
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
918,444,935✔
2251
        break;
918,395,442✔
2252
      case PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN:
918,452,882✔
2253
        code = tlvDecodeBool(pTlv, &pNode->virtualStableScan);
918,452,882✔
2254
      default:
918,410,873✔
2255
        break;
918,410,873✔
2256
    }
2257
  }
2258

2259
  return code;
919,114,307✔
2260
}
2261

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

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

2277
  int32_t code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
8,589,393✔
2278

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

2283
  if (TSDB_CODE_SUCCESS == code) {
8,589,393!
2284
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT, pNode->groupSort);
8,589,393!
2285
  }
2286

2287
  if (TSDB_CODE_SUCCESS == code) {
8,589,393!
2288
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS, pNode->scanAllCols);
8,589,393!
2289
  }
2290

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

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

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

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

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

2311
  return code;
8,589,393✔
2312
}
2313

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

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

2353
  return code;
8,476,056✔
2354
}
2355

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

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

2364
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
36,073,143✔
2365

2366
  if (TSDB_CODE_SUCCESS == code) {
36,201,871!
2367
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
36,208,708!
2368
  }
2369
  return code;
36,215,977✔
2370
}
2371

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

2375
  int32_t code = TSDB_CODE_SUCCESS;
36,170,593✔
2376
  STlv*   pTlv = NULL;
36,170,593✔
2377
  tlvForEach(pDecoder, pTlv, code) {
108,545,021✔
2378
    switch (pTlv->type) {
72,369,237!
2379
      case PHY_TAG_SCAN_CODE_SCAN:
36,180,519✔
2380
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
36,180,519✔
2381
        break;
36,183,588✔
2382
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
36,187,968✔
2383
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
36,187,968✔
2384
        break;
36,185,098✔
2385
      default:
×
2386
        break;
×
2387
    }
2388
  }
2389

2390
  return code;
36,184,623✔
2391
}
2392

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

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

2405
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
2,745,731✔
2406
  if (TSDB_CODE_SUCCESS == code) {
2,753,102!
2407
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
2,754,639✔
2408
  }
2409
  if (TSDB_CODE_SUCCESS == code) {
2,750,965✔
2410
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
2,750,569!
2411
  }
2412
  if (TSDB_CODE_SUCCESS == code) {
2,756,350✔
2413
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
2,755,972!
2414
  }
2415
  if (TSDB_CODE_SUCCESS == code) {
2,757,444✔
2416
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
2,757,005✔
2417
  }
2418
  if (TSDB_CODE_SUCCESS == code) {
2,755,983✔
2419
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
2,755,544✔
2420
  }
2421

2422
  return code;
2,754,816✔
2423
}
2424

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

2428
  int32_t code = TSDB_CODE_SUCCESS;
3,460,188✔
2429
  STlv*   pTlv = NULL;
3,460,188✔
2430
  tlvForEach(pDecoder, pTlv, code) {
18,028,555!
2431
    switch (pTlv->type) {
14,568,349!
2432
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
3,459,846✔
2433
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
3,459,846✔
2434
        break;
3,460,945✔
2435
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
723,490✔
2436
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
723,490✔
2437
        break;
722,961✔
2438
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
3,461,487✔
2439
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
3,461,487✔
2440
        break;
3,461,487✔
2441
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
3,461,487✔
2442
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
3,461,487✔
2443
        break;
3,461,487✔
2444
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
3,461,487✔
2445
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
3,461,487✔
2446
        break;
3,461,487✔
2447
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
1,094✔
2448
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
1,094✔
2449
        break;
×
2450

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

2456
  return code;
3,460,958✔
2457
}
2458

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

2471
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
790,847,457✔
2472
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
790,847,457✔
2473

2474
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
790,847,457✔
2475
  if (TSDB_CODE_SUCCESS == code) {
792,620,445✔
2476
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
789,973,180✔
2477
  }
2478
  if (TSDB_CODE_SUCCESS == code) {
792,926,962✔
2479
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
792,924,932✔
2480
  }
2481
  if (TSDB_CODE_SUCCESS == code) {
791,647,697✔
2482
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
791,646,608✔
2483
  }
2484
  if (TSDB_CODE_SUCCESS == code) {
792,495,494✔
2485
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
792,494,734✔
2486
  }
2487
  if (TSDB_CODE_SUCCESS == code) {
790,769,008✔
2488
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
790,768,909✔
2489
  }
2490
  if (TSDB_CODE_SUCCESS == code) {
792,846,832✔
2491
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
792,842,219!
2492
  }
2493
  if (TSDB_CODE_SUCCESS == code) {
793,165,080✔
2494
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
793,161,419✔
2495
  }
2496
  if (TSDB_CODE_SUCCESS == code) {
793,318,664✔
2497
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
793,315,228✔
2498
  }
2499
  if (TSDB_CODE_SUCCESS == code) {
793,603,901✔
2500
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
793,600,523✔
2501
  }
2502
  if (TSDB_CODE_SUCCESS == code) {
793,475,205✔
2503
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
793,467,822✔
2504
  }
2505
  if (TSDB_CODE_SUCCESS == code) {
793,486,889✔
2506
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
793,480,244✔
2507
  }
2508
  if (TSDB_CODE_SUCCESS == code) {
793,354,950✔
2509
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
793,348,443✔
2510
  }
2511
  if (TSDB_CODE_SUCCESS == code) {
793,685,366✔
2512
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
793,678,961✔
2513
  }
2514
  if (TSDB_CODE_SUCCESS == code) {
793,502,856✔
2515
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
793,491,710✔
2516
  }
2517
  if (TSDB_CODE_SUCCESS == code) {
793,502,087✔
2518
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
793,492,405!
2519
  }
2520
  if (TSDB_CODE_SUCCESS == code) {
793,409,272✔
2521
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
793,399,532✔
2522
  }
2523
  if (TSDB_CODE_SUCCESS == code) {
793,265,983✔
2524
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
793,256,270!
2525
  }
2526
  if (TSDB_CODE_SUCCESS == code) {
793,321,839✔
2527
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
793,306,597!
2528
  }
2529
  if (TSDB_CODE_SUCCESS == code) {
793,682,072✔
2530
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
793,667,809!
2531
  }
2532
  if (TSDB_CODE_SUCCESS == code) {
793,506,934✔
2533
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
793,493,455!
2534
  }
2535
  return code;
793,777,165✔
2536
}
2537

2538
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
791,246,401✔
2539
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
791,246,401✔
2540

2541
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
791,246,401✔
2542
  if (TSDB_CODE_SUCCESS == code) {
793,898,435!
2543
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
793,951,121✔
2544
  }
2545
  if (TSDB_CODE_SUCCESS == code) {
790,599,975!
2546
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_EXT_SCAN_RANGE, timeWindowToMsg, pNode->pExtScanRange);
792,091,314✔
2547
  }
2548
  if (TSDB_CODE_SUCCESS == code) {
792,920,659!
2549
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
792,921,931✔
2550
  }
2551
  if (TSDB_CODE_SUCCESS == code) {
790,233,847✔
2552
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
790,229,742✔
2553
  }
2554
  if (TSDB_CODE_SUCCESS == code) {
790,778,007✔
2555
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
790,776,615✔
2556
  }
2557
  if (TSDB_CODE_SUCCESS == code) {
789,517,730✔
2558
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
789,516,788✔
2559
  }
2560
  if (TSDB_CODE_SUCCESS == code) {
789,326,766✔
2561
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
789,326,301✔
2562
  }
2563
  if (TSDB_CODE_SUCCESS == code) {
788,447,520✔
2564
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_EXT_TIME_RANGE_EXPR, nodeToMsg, pNode->pExtTimeRange);
788,447,102✔
2565
  }
2566

2567
  return code;
787,971,400✔
2568
}
2569

2570
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
814,397,374✔
2571
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
814,397,374✔
2572

2573
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
814,397,374✔
2574
  if (TSDB_CODE_SUCCESS == code) {
814,774,292!
2575
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
814,776,545✔
2576
  }
2577
  if (TSDB_CODE_SUCCESS == code) {
814,411,572!
2578
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
814,411,572✔
2579
  }
2580
  if (TSDB_CODE_SUCCESS == code) {
814,492,917!
2581
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
814,492,917✔
2582
  }
2583
  if (TSDB_CODE_SUCCESS == code) {
814,394,825!
2584
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
814,394,825✔
2585
  }
2586
  if (TSDB_CODE_SUCCESS == code) {
814,377,298!
2587
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
814,377,298✔
2588
  }
2589
  if (TSDB_CODE_SUCCESS == code) {
814,361,168!
2590
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
814,361,168✔
2591
  }
2592
  if (TSDB_CODE_SUCCESS == code) {
814,716,483!
2593
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
814,716,483✔
2594
  }
2595
  if (TSDB_CODE_SUCCESS == code) {
814,397,767!
2596
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
814,397,767✔
2597
  }
2598
  if (TSDB_CODE_SUCCESS == code) {
814,707,366!
2599
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
814,707,366✔
2600
  }
2601
  if (TSDB_CODE_SUCCESS == code) {
814,391,458!
2602
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
814,391,458✔
2603
  }
2604
  if (TSDB_CODE_SUCCESS == code) {
814,775,362!
2605
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
814,775,362✔
2606
  }
2607
  if (TSDB_CODE_SUCCESS == code) {
814,385,519!
2608
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
814,385,519✔
2609
  }
2610
  if (TSDB_CODE_SUCCESS == code) {
814,741,387!
2611
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
814,741,387✔
2612
  }
2613
  if (TSDB_CODE_SUCCESS == code) {
814,387,307!
2614
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
814,387,307✔
2615
  }
2616
  if (TSDB_CODE_SUCCESS == code) {
814,760,388!
2617
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
814,760,388✔
2618
  }
2619
  if (TSDB_CODE_SUCCESS == code) {
814,325,466!
2620
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
814,325,466✔
2621
  }
2622
  if (TSDB_CODE_SUCCESS == code) {
814,708,876!
2623
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
814,708,876✔
2624
  }
2625
  if (TSDB_CODE_SUCCESS == code) {
814,328,486!
2626
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
814,328,486✔
2627
  }
2628
  if (TSDB_CODE_SUCCESS == code) {
814,741,358!
2629
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
814,741,358✔
2630
  }
2631
  if (TSDB_CODE_SUCCESS == code) {
814,333,065!
2632
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
814,333,065✔
2633
  }
2634
  return code;
814,764,541✔
2635
}
2636

2637
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
814,408,219✔
2638
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
814,408,219✔
2639

2640
  int32_t code = TSDB_CODE_SUCCESS;
814,408,219✔
2641
  STlv*   pTlv = NULL;
814,408,219✔
2642
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
2643
    switch (pTlv->type) {
1,833,701,861!
2644
      case PHY_TABLE_SCAN_CODE_SCAN:
814,302,594✔
2645
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
814,302,594✔
2646
        break;
814,402,880✔
2647
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
814,667,700✔
2648
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
814,667,700✔
2649
        break;
814,738,052✔
2650
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2651
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2652
        break;
×
2653
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
190,694,687✔
2654
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
190,694,687✔
2655
        break;
190,688,396✔
2656
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2657
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2658
        break;
×
2659
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2660
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2661
        break;
×
2662
      case PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR:
×
2663
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
2664
        break;
×
2665
      case PHY_TABLE_SCAN_CODE_EXT_SCAN_RANGE:
13,468,734✔
2666
        pNode->pExtScanRange = taosMemoryMalloc(sizeof(*pNode->pExtScanRange));
13,468,734!
2667
        if (NULL == pNode->pExtScanRange) {
13,469,263!
2668
          code = terrno;
×
2669
          break;
×
2670
        }
2671
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, pNode->pExtScanRange);
13,469,263✔
2672
        break;
13,469,263✔
2673
      case PHY_TABLE_SCAN_CODE_EXT_TIME_RANGE_EXPR:
520,826✔
2674
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExtTimeRange);
520,826✔
2675
        break;
×
2676
      default:
×
2677
        break;
×
2678
    }
2679
  }
2680

2681
  return code;
814,825,746✔
2682
}
2683

2684
enum {
2685
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2686
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2687
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2688
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2689
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2690
};
2691

2692
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
176,197,102✔
2693
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
176,197,102✔
2694

2695
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
176,197,102✔
2696
  if (TSDB_CODE_SUCCESS == code) {
176,267,792✔
2697
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
176,266,781✔
2698
  }
2699
  if (TSDB_CODE_SUCCESS == code) {
176,248,537!
2700
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
176,248,537!
2701
  }
2702
  if (TSDB_CODE_SUCCESS == code) {
176,272,548!
2703
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
176,272,548✔
2704
  }
2705
  if (TSDB_CODE_SUCCESS == code) {
176,271,816!
2706
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
176,271,816!
2707
  }
2708

2709
  return code;
176,273,910✔
2710
}
2711

2712
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
55,485,966✔
2713
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
55,485,966✔
2714

2715
  int32_t code = TSDB_CODE_SUCCESS;
55,485,966✔
2716
  STlv*   pTlv = NULL;
55,485,966✔
2717
  tlvForEach(pDecoder, pTlv, code) {
332,938,706!
2718
    switch (pTlv->type) {
277,457,358!
2719
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
55,483,350✔
2720
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
55,483,350✔
2721
        break;
55,485,380✔
2722
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
55,491,590✔
2723
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
55,491,590✔
2724
        break;
55,489,375✔
2725
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
55,492,990✔
2726
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
55,492,990✔
2727
        break;
55,489,096✔
2728
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
55,491,230✔
2729
        code = tlvDecodeI32(pTlv, &pNode->accountId);
55,491,230✔
2730
        break;
55,492,275✔
2731
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
55,492,101✔
2732
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
55,492,101✔
2733
        break;
55,492,201✔
2734
      default:
×
2735
        break;
×
2736
    }
2737
  }
2738

2739
  return code;
55,492,838✔
2740
}
2741

2742
enum {
2743
  PHY_PROJECT_CODE_BASE_NODE = 1,
2744
  PHY_PROJECT_CODE_PROJECTIONS,
2745
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2746
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2747
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2748
};
2749

2750
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
411,015,783✔
2751
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
411,015,783✔
2752

2753
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
411,015,783✔
2754
  if (TSDB_CODE_SUCCESS == code) {
411,496,254✔
2755
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
411,499,085✔
2756
  }
2757
  if (TSDB_CODE_SUCCESS == code) {
411,499,969✔
2758
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
411,499,847!
2759
  }
2760
  if (TSDB_CODE_SUCCESS == code) {
411,508,804✔
2761
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
411,508,682!
2762
  }
2763
  if (TSDB_CODE_SUCCESS == code) {
411,518,033✔
2764
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
411,517,829!
2765
  }
2766

2767
  return code;
411,517,211✔
2768
}
2769

2770
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
338,200,951✔
2771
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
338,200,951✔
2772

2773
  int32_t code = TSDB_CODE_SUCCESS;
338,200,951✔
2774
  STlv*   pTlv = NULL;
338,200,951✔
2775
  tlvForEach(pDecoder, pTlv, code) {
2,029,740,759✔
2776
    switch (pTlv->type) {
1,691,510,042!
2777
      case PHY_PROJECT_CODE_BASE_NODE:
338,131,618✔
2778
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
338,131,618✔
2779
        break;
338,295,634✔
2780
      case PHY_PROJECT_CODE_PROJECTIONS:
338,288,601✔
2781
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
338,288,601✔
2782
        break;
338,298,690✔
2783
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
338,306,409✔
2784
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
338,306,409✔
2785
        break;
338,303,790✔
2786
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
338,307,077✔
2787
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
338,307,077✔
2788
        break;
338,303,299✔
2789
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
338,461,836✔
2790
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
338,461,836✔
2791
        break;
338,305,243✔
2792
      default:
×
2793
        break;
×
2794
    }
2795
  }
2796

2797
  return code;
338,384,006✔
2798
}
2799

2800
enum {
2801
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2802
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2803
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2804
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2805
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2806
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2807
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2808
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2809
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2810
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2811
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2812
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2813
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2814
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2815
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2816
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2817
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2818
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2819
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2820
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2821
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2822
};
2823

2824
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
57,605,759✔
2825
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
57,605,759✔
2826

2827
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
57,605,759✔
2828
  if (TSDB_CODE_SUCCESS == code) {
57,609,117!
2829
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
57,609,117✔
2830
  }
2831
  if (TSDB_CODE_SUCCESS == code) {
57,609,117!
2832
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
57,609,117✔
2833
  }
2834
  if (TSDB_CODE_SUCCESS == code) {
57,609,548!
2835
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
57,609,548✔
2836
  }
2837
  if (TSDB_CODE_SUCCESS == code) {
57,609,548!
2838
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
57,609,548✔
2839
  }
2840
  if (TSDB_CODE_SUCCESS == code) {
57,608,551!
2841
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
57,608,551✔
2842
  }  
2843
  if (TSDB_CODE_SUCCESS == code) {
57,609,172!
2844
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
57,609,172✔
2845
  }
2846
  if (TSDB_CODE_SUCCESS == code) {
57,606,002!
2847
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
57,606,002✔
2848
  }  
2849
  if (TSDB_CODE_SUCCESS == code) {
57,604,404!
2850
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
57,604,404✔
2851
  }  
2852
  if (TSDB_CODE_SUCCESS == code) {
57,608,551!
2853
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
57,608,551✔
2854
  }  
2855
  if (TSDB_CODE_SUCCESS == code) {
57,609,548!
2856
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
57,609,548✔
2857
  }
2858
  if (TSDB_CODE_SUCCESS == code) {
57,606,999!
2859
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
57,606,999✔
2860
  }
2861
  if (TSDB_CODE_SUCCESS == code) {
57,607,950!
2862
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
57,607,950✔
2863
  }
2864
  if (TSDB_CODE_SUCCESS == code) {
57,608,103!
2865
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
57,608,103✔
2866
  }
2867
  if (TSDB_CODE_SUCCESS == code) {
57,604,690!
2868
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
57,604,690✔
2869
  }
2870
  if (TSDB_CODE_SUCCESS == code) {
57,609,126!
2871
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
57,609,126✔
2872
  }
2873
  if (TSDB_CODE_SUCCESS == code) {
57,609,172!
2874
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
57,609,172✔
2875
  }
2876
  if (TSDB_CODE_SUCCESS == code) {
57,609,548!
2877
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
57,609,548✔
2878
  }
2879
  if (TSDB_CODE_SUCCESS == code) {
57,609,548!
2880
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
57,609,548✔
2881
  }
2882
  if (TSDB_CODE_SUCCESS == code) {
57,609,548!
2883
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
57,609,548!
2884
  }
2885
  if (TSDB_CODE_SUCCESS == code) {
57,609,548!
2886
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
57,609,548!
2887
  }
2888
  
2889
  return code;
57,609,548✔
2890
}
2891

2892
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
60,996,492✔
2893
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
60,996,492✔
2894

2895
  int32_t code = TSDB_CODE_SUCCESS;
60,996,492✔
2896
  STlv*   pTlv = NULL;
60,996,492✔
2897
  tlvForEach(pDecoder, pTlv, code) {
900,550,486✔
2898
    switch (pTlv->type) {
839,545,952!
2899
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
60,992,830✔
2900
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
60,992,830✔
2901
        break;
60,995,872✔
2902
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
60,995,441✔
2903
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
60,995,441✔
2904
        break;
60,996,868✔
2905
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
60,996,868✔
2906
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
60,996,868✔
2907
        break;
60,996,868✔
2908
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
1,099,837✔
2909
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
1,099,837✔
2910
        break;
1,099,837✔
2911
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
540,183✔
2912
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
540,183✔
2913
        break;
540,183✔
2914
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
60,995,872✔
2915
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
60,995,872✔
2916
        break;
60,996,868✔
2917
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
605,205✔
2918
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
605,205✔
2919
        break;
605,205✔
2920
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
486,000✔
2921
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
486,000✔
2922
        break;
486,000✔
2923
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
60,994,876✔
2924
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
60,994,876✔
2925
        break;
60,996,868✔
2926
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
60,993,735✔
2927
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
60,993,735✔
2928
        break;
60,996,868✔
2929
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
335,987✔
2930
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
335,987✔
2931
        break;
335,987✔
2932
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
335,987✔
2933
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
335,987✔
2934
        break;
335,987✔
2935
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
21,491,858✔
2936
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
21,491,858✔
2937
        break;
21,491,858✔
2938
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
21,700,693✔
2939
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
21,700,693✔
2940
        break;
21,700,693✔
2941
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
60,994,542✔
2942
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
60,994,542✔
2943
        break;
60,996,868✔
2944
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
60,995,496✔
2945
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
60,995,496✔
2946
        break;
60,996,868✔
2947
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
60,996,868✔
2948
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
60,996,868✔
2949
        break;
60,996,868✔
2950
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
60,996,868✔
2951
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
60,996,868✔
2952
        break;
60,996,868✔
2953
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
60,996,868✔
2954
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
60,996,868✔
2955
        break;
60,996,868✔
2956
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
60,996,868✔
2957
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
60,996,868✔
2958
        break;
60,996,448✔
2959
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
61,003,681✔
2960
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
61,003,681✔
2961
        break;
60,996,868✔
2962
      default:
×
2963
        break;
×
2964
    }
2965
  }
2966

2967
  return code;
61,012,306✔
2968
}
2969

2970
enum {
2971
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2972
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2973
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2974
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2975
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2976
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2977
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2978
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2979
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2980
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2981
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2982
  PHY_HASH_JOIN_CODE_TARGETS,
2983
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2984
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2985
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2986
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2987
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2988
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2989
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2990
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2991

2992
};
2993

2994
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,540,431✔
2995
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
6,540,431✔
2996

2997
  int32_t code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
6,540,431✔
2998
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
2999
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_TYPE, pNode->joinType);
6,540,431✔
3000
  }
3001
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3002
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_STYPE, pNode->subType);
6,540,431✔
3003
  }
3004
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3005
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN, nodeListToMsg, pNode->pOnLeft);
6,540,431✔
3006
  }
3007
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3008
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN, nodeListToMsg, pNode->pOnRight);
6,540,431✔
3009
  }  
3010
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3011
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
6,540,431✔
3012
  }
3013
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3014
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
6,540,431✔
3015
  }
3016
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3017
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID, pNode->leftPrimSlotId);
6,540,431✔
3018
  }
3019
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3020
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID, pNode->rightPrimSlotId);
6,540,431✔
3021
  }
3022
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3023
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET, pNode->timeRangeTarget);
6,540,431✔
3024
  }
3025
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3026
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
6,540,431✔
3027
  }
3028
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3029
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
6,540,431✔
3030
  }
3031
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3032
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
6,540,431✔
3033
  }
3034
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3035
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
6,540,431✔
3036
  }
3037
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3038
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
6,540,431✔
3039
  }
3040
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3041
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
6,540,431✔
3042
  }
3043
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3044
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_ON_COND, nodeToMsg, pNode->pLeftOnCond);
6,540,431✔
3045
  }
3046
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3047
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_ON_COND, nodeToMsg, pNode->pRightOnCond);
6,540,431✔
3048
  }
3049
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3050
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY, pNode->timeRange.skey);
6,540,431✔
3051
  }
3052
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
3053
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY, pNode->timeRange.ekey);
6,540,431✔
3054
  }
3055

3056
  return code;
6,540,431✔
3057
}
3058

3059

3060
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
6,540,983✔
3061
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
6,540,983✔
3062

3063
  int32_t code = TSDB_CODE_SUCCESS;
6,540,983✔
3064
  STlv*   pTlv = NULL;
6,540,983✔
3065
  tlvForEach(pDecoder, pTlv, code) {
104,655,728!
3066
    switch (pTlv->type) {
98,114,745!
3067
      case PHY_HASH_JOIN_CODE_BASE_NODE:
6,540,983✔
3068
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,540,983✔
3069
        break;
6,540,983✔
3070
      case PHY_HASH_JOIN_CODE_JOIN_TYPE:
6,540,983✔
3071
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
6,540,983✔
3072
        break;
6,540,983✔
3073
      case PHY_HASH_JOIN_CODE_JOIN_STYPE:
6,540,983✔
3074
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
6,540,983✔
3075
        break;
6,540,983✔
3076
      case PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN:
6,540,983✔
3077
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnLeft);
6,540,983✔
3078
        break;
6,540,983✔
3079
      case PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN:
6,540,983✔
3080
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnRight);
6,540,983✔
3081
        break;
6,540,983✔
3082
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR:
×
3083
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
×
3084
        break;
×
3085
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR:
×
3086
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
×
3087
        break;
×
3088
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID:
6,540,983✔
3089
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
6,540,983✔
3090
        break;
6,540,983✔
3091
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID:
6,540,983✔
3092
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
6,540,983✔
3093
        break;
6,540,983✔
3094
      case PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET:
6,540,983✔
3095
        code = tlvDecodeI32(pTlv, &pNode->timeRangeTarget);
6,540,983✔
3096
        break;
6,540,983✔
3097
      case PHY_HASH_JOIN_CODE_ON_CONDITIONS:
×
3098
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
×
3099
        break;
×
3100
      case PHY_HASH_JOIN_CODE_TARGETS:
6,540,983✔
3101
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
6,540,983✔
3102
        break;
6,540,983✔
3103
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0:
6,540,983✔
3104
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
6,540,983✔
3105
        break;
6,540,983✔
3106
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1:
6,540,983✔
3107
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
6,540,983✔
3108
        break;
6,540,983✔
3109
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0:
6,540,983✔
3110
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
6,540,983✔
3111
        break;
6,540,983✔
3112
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1:
6,540,983✔
3113
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
6,540,983✔
3114
        break;
6,540,983✔
3115
      case PHY_HASH_JOIN_CODE_LEFT_ON_COND:
×
3116
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeftOnCond);
×
3117
        break;
×
3118
      case PHY_HASH_JOIN_CODE_RIGHT_ON_COND:
×
3119
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRightOnCond);
×
3120
        break;
×
3121
      case PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY:
6,540,983✔
3122
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
6,540,983✔
3123
        break;
6,540,983✔
3124
      case PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY:
6,540,983✔
3125
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
6,540,983✔
3126
        break;
6,540,983✔
3127
      default:
×
3128
        break;
×
3129
    }
3130
  }
3131

3132
  return code;
6,540,983✔
3133
}
3134

3135

3136
enum {
3137
  PHY_AGG_CODE_BASE_NODE = 1,
3138
  PHY_AGG_CODE_EXPR,
3139
  PHY_AGG_CODE_GROUP_KEYS,
3140
  PHY_AGG_CODE_AGG_FUNCS,
3141
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
3142
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
3143
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
3144
};
3145

3146
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
457,764,482✔
3147
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
457,764,482✔
3148

3149
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
457,764,482✔
3150
  if (TSDB_CODE_SUCCESS == code) {
458,584,888!
3151
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
458,600,531✔
3152
  }
3153
  if (TSDB_CODE_SUCCESS == code) {
458,121,746✔
3154
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
458,121,833✔
3155
  }
3156
  if (TSDB_CODE_SUCCESS == code) {
458,100,356!
3157
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
458,100,733✔
3158
  }
3159
  if (TSDB_CODE_SUCCESS == code) {
458,587,206✔
3160
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
458,587,218!
3161
  }
3162
  if (TSDB_CODE_SUCCESS == code) {
458,673,407✔
3163
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
458,673,463!
3164
  }
3165
  if (TSDB_CODE_SUCCESS == code) {
458,664,627✔
3166
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
458,664,785!
3167
  }
3168

3169
  return code;
458,676,186✔
3170
}
3171

3172
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
475,353,745✔
3173
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
475,353,745✔
3174

3175
  int32_t code = TSDB_CODE_SUCCESS;
475,353,745✔
3176
  STlv*   pTlv = NULL;
475,353,745✔
3177
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
3178
    switch (pTlv->type) {
2,147,483,647!
3179
      case PHY_AGG_CODE_BASE_NODE:
475,285,587✔
3180
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
475,285,587✔
3181
        break;
475,447,413✔
3182
      case PHY_AGG_CODE_EXPR:
140,129,717✔
3183
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
140,129,717✔
3184
        break;
140,133,479✔
3185
      case PHY_AGG_CODE_GROUP_KEYS:
129,912,630✔
3186
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
129,912,630✔
3187
        break;
129,922,790✔
3188
      case PHY_AGG_CODE_AGG_FUNCS:
357,681,822✔
3189
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
357,681,822✔
3190
        break;
357,837,474✔
3191
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
475,465,649✔
3192
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
475,465,649✔
3193
        break;
475,469,673✔
3194
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
475,483,282✔
3195
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
475,483,282✔
3196
        break;
475,481,869✔
3197
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
475,557,830✔
3198
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
475,557,830✔
3199
        break;
475,479,263✔
3200
      default:
×
3201
        break;
×
3202
    }
3203
  }
3204

3205
  return code;
475,589,548✔
3206
}
3207

3208
enum {
3209
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
3210
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
3211
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
3212
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
3213
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
3214
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA,
3215
  PHY_EXCHANGE_CODE_DYN_TBNAME
3216
};
3217

3218
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
441,553,541✔
3219
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
441,553,541✔
3220

3221
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
441,553,541✔
3222
  if (TSDB_CODE_SUCCESS == code) {
441,570,387✔
3223
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
441,569,773✔
3224
  }
3225
  if (TSDB_CODE_SUCCESS == code) {
441,567,075!
3226
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
441,567,075✔
3227
  }
3228
  if (TSDB_CODE_SUCCESS == code) {
441,570,713!
3229
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
441,570,713!
3230
  }
3231
  if (TSDB_CODE_SUCCESS == code) {
441,570,152!
3232
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
441,570,152✔
3233
  }
3234
  if (TSDB_CODE_SUCCESS == code) {
441,567,628!
3235
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
441,567,628!
3236
  }
3237
  if (TSDB_CODE_SUCCESS == code) {
441,568,010!
3238
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_DYN_TBNAME, pNode->dynTbname);
441,568,010!
3239
  }
3240

3241
  return code;
441,565,614✔
3242
}
3243

3244
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
453,601,063✔
3245
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
453,601,063✔
3246

3247
  int32_t code = TSDB_CODE_SUCCESS;
453,601,063✔
3248
  STlv*   pTlv = NULL;
453,601,063✔
3249
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
3250
    switch (pTlv->type) {
2,147,483,647!
3251
      case PHY_EXCHANGE_CODE_BASE_NODE:
453,596,851✔
3252
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
453,596,851✔
3253
        break;
453,610,990✔
3254
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
453,612,265✔
3255
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
453,612,265✔
3256
        break;
453,612,066✔
3257
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
453,611,716✔
3258
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
453,611,716✔
3259
        break;
453,611,716✔
3260
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
453,611,716✔
3261
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
453,611,716✔
3262
        break;
453,610,133✔
3263
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
453,610,641✔
3264
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
453,610,641✔
3265
        break;
453,612,535✔
3266
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
453,613,595✔
3267
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
453,613,595✔
3268
        break;
453,612,836✔
3269
      case PHY_EXCHANGE_CODE_DYN_TBNAME:
453,615,670✔
3270
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
453,615,670✔
3271
        break;
453,610,970✔
3272
      default:
×
3273
        break;
×
3274
    }
3275
  }
3276

3277
  return code;
453,644,985✔
3278
}
3279

3280
enum {
3281
  PHY_MERGE_CODE_BASE_NODE = 1,
3282
  PHY_MERGE_CODE_MERGE_KEYS,
3283
  PHY_MERGE_CODE_TARGETS,
3284
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3285
  PHY_MERGE_CODE_SRC_GROUP_ID,
3286
  PHY_MERGE_CODE_GROUP_SORT,
3287
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3288
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3289
  PHY_MERGE_CODE_TYPE,
3290
};
3291

3292
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
55,155,089✔
3293
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
55,155,089✔
3294

3295
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
55,155,089✔
3296
  if (TSDB_CODE_SUCCESS == code) {
55,156,409!
3297
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
55,156,409✔
3298
  }
3299
  if (TSDB_CODE_SUCCESS == code) {
55,156,409!
3300
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
55,156,409✔
3301
  }
3302
  if (TSDB_CODE_SUCCESS == code) {
55,156,409!
3303
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
55,156,409✔
3304
  }
3305
  if (TSDB_CODE_SUCCESS == code) {
55,156,409!
3306
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
55,156,409✔
3307
  }
3308
  if (TSDB_CODE_SUCCESS == code) {
55,156,409!
3309
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
55,156,409!
3310
  }
3311
  if (TSDB_CODE_SUCCESS == code) {
55,156,409!
3312
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
55,156,409!
3313
  }
3314
  if (TSDB_CODE_SUCCESS == code) {
55,156,409!
3315
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
55,156,409!
3316
  }
3317
  if (TSDB_CODE_SUCCESS == code) {
55,155,089!
3318
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
55,155,089✔
3319
  }
3320

3321
  return code;
55,155,089✔
3322
}
3323

3324
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
56,137,467✔
3325
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
56,137,467✔
3326

3327
  int32_t code = TSDB_CODE_SUCCESS;
56,137,467✔
3328
  STlv*   pTlv = NULL;
56,137,467✔
3329
  tlvForEach(pDecoder, pTlv, code) {
560,795,710!
3330
    switch (pTlv->type) {
504,654,453!
3331
      case PHY_MERGE_CODE_BASE_NODE:
56,137,467✔
3332
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
56,137,467✔
3333
        break;
56,139,876✔
3334
      case PHY_MERGE_CODE_MERGE_KEYS:
55,537,576✔
3335
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
55,537,576✔
3336
        break;
55,537,576✔
3337
      case PHY_MERGE_CODE_TARGETS:
56,139,876✔
3338
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
56,139,876✔
3339
        break;
56,139,876✔
3340
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
56,139,876✔
3341
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
56,139,876✔
3342
        break;
56,139,876✔
3343
      case PHY_MERGE_CODE_SRC_GROUP_ID:
56,139,876✔
3344
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
56,139,876✔
3345
        break;
56,139,876✔
3346
      case PHY_MERGE_CODE_GROUP_SORT:
56,139,876✔
3347
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
56,139,876✔
3348
        break;
56,139,876✔
3349
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
56,139,876✔
3350
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
56,139,876✔
3351
        break;
56,139,876✔
3352
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
56,139,876✔
3353
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
56,139,876✔
3354
        break;
56,139,876✔
3355
      case PHY_MERGE_CODE_TYPE:
56,140,154✔
3356
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
56,140,154✔
3357
        break;
56,139,876✔
3358
      default:
×
3359
        break;
×
3360
    }
3361
  }
3362

3363
  return code;
56,140,015✔
3364
}
3365

3366
enum {
3367
  PHY_SORT_CODE_BASE_NODE = 1,
3368
  PHY_SORT_CODE_EXPR,
3369
  PHY_SORT_CODE_SORT_KEYS,
3370
  PHY_SORT_CODE_TARGETS,
3371
  PHY_SORT_CODE_CALC_GROUPID,
3372
  PHY_SORT_CODE_EXCLUDE_PK_COL
3373
};
3374

3375
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
134,165,493✔
3376
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
134,165,493✔
3377

3378
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
134,165,493✔
3379
  if (TSDB_CODE_SUCCESS == code) {
134,267,640!
3380
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
134,268,461✔
3381
  }
3382
  if (TSDB_CODE_SUCCESS == code) {
134,210,242!
3383
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
134,210,242✔
3384
  }
3385
  if (TSDB_CODE_SUCCESS == code) {
134,271,638!
3386
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
134,271,638✔
3387
  }
3388
  if (TSDB_CODE_SUCCESS == code) {
134,274,057✔
3389
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
134,273,931!
3390
  }
3391
  if (TSDB_CODE_SUCCESS == code) {
134,274,057✔
3392
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
134,273,931!
3393
  }
3394

3395
  return code;
134,274,057✔
3396
}
3397

3398
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
135,558,480✔
3399
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
135,558,480✔
3400

3401
  int32_t code = TSDB_CODE_SUCCESS;
135,558,480✔
3402
  STlv*   pTlv = NULL;
135,558,480✔
3403
  tlvForEach(pDecoder, pTlv, code) {
813,780,478✔
3404
    switch (pTlv->type) {
678,194,727✔
3405
      case PHY_SORT_CODE_BASE_NODE:
135,556,126✔
3406
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
135,556,126✔
3407
        break;
135,584,421✔
3408
      case PHY_SORT_CODE_EXPR:
283,627✔
3409
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
283,627✔
3410
        break;
283,627✔
3411
      case PHY_SORT_CODE_SORT_KEYS:
135,559,588✔
3412
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
135,559,588✔
3413
        break;
135,584,141✔
3414
      case PHY_SORT_CODE_TARGETS:
135,584,531✔
3415
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
135,584,531✔
3416
        break;
135,585,658✔
3417
      case PHY_SORT_CODE_CALC_GROUPID:
135,586,704✔
3418
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
135,586,704✔
3419
        break;
135,585,672✔
3420
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
135,586,704✔
3421
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
135,586,704✔
3422
      default:
135,586,704✔
3423
        break;
135,586,704✔
3424
    }
3425
  }
3426

3427
  return code;
135,625,551✔
3428
}
3429

3430
enum {
3431
  PHY_WINDOW_CODE_BASE_NODE = 1,
3432
  PHY_WINDOW_CODE_EXPR,
3433
  PHY_WINDOW_CODE_FUNCS,
3434
  PHY_WINDOW_CODE_TS_PK,
3435
  PHY_WINDOW_CODE_TS_END,
3436
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3437
  PHY_WINDOW_CODE_WATERMARK,
3438
  PHY_WINDOW_CODE_DELETE_MARK,
3439
  PHY_WINDOW_CODE_IG_EXPIRED,
3440
  PHY_WINDOW_CODE_INDEF_ROWS_FUNC,
3441
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3442
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3443
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3444
};
3445

3446
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
25,424,665✔
3447
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
25,424,665✔
3448

3449
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
25,424,665✔
3450
  if (TSDB_CODE_SUCCESS == code) {
25,477,333!
3451
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
25,479,151✔
3452
  }
3453
  if (TSDB_CODE_SUCCESS == code) {
25,451,937✔
3454
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
25,451,794✔
3455
  }
3456
  if (TSDB_CODE_SUCCESS == code) {
25,475,149✔
3457
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
25,475,006✔
3458
  }
3459
  if (TSDB_CODE_SUCCESS == code) {
25,480,537✔
3460
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
25,480,394✔
3461
  }
3462
  if (TSDB_CODE_SUCCESS == code) {
25,476,515✔
3463
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
25,476,372✔
3464
  }
3465
  if (TSDB_CODE_SUCCESS == code) {
25,478,018✔
3466
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
25,477,743✔
3467
  }
3468
  if (TSDB_CODE_SUCCESS == code) {
25,476,877✔
3469
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
25,476,663✔
3470
  }
3471
  if (TSDB_CODE_SUCCESS == code) {
25,481,542✔
3472
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
25,481,328✔
3473
  }
3474
  if (TSDB_CODE_SUCCESS == code) {
25,481,175✔
3475
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
25,480,961!
3476
  }
3477
  if (TSDB_CODE_SUCCESS == code) {
25,478,934✔
3478
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_INDEF_ROWS_FUNC, pNode->indefRowsFunc);
25,478,720✔
3479
  }
3480

3481
  return code;
25,480,143✔
3482
}
3483

3484
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
26,546,682✔
3485
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
26,546,682✔
3486

3487
  int32_t code = TSDB_CODE_SUCCESS;
26,546,682✔
3488
  STlv*   pTlv = NULL;
26,546,682✔
3489
  tlvForEach(pDecoder, pTlv, code) {
269,600,384!
3490
    switch (pTlv->type) {
243,050,635!
3491
      case PHY_WINDOW_CODE_BASE_NODE:
26,541,744✔
3492
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
26,541,744✔
3493
        break;
26,549,169✔
3494
      case PHY_WINDOW_CODE_EXPR:
2,723,600✔
3495
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
2,723,600✔
3496
        break;
2,724,004✔
3497
      case PHY_WINDOW_CODE_FUNCS:
26,544,605✔
3498
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
26,544,605✔
3499
        break;
26,548,660✔
3500
      case PHY_WINDOW_CODE_TS_PK:
26,549,735✔
3501
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
26,549,735✔
3502
        break;
26,548,198✔
3503
      case PHY_WINDOW_CODE_TS_END:
1,391,314✔
3504
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
1,391,314✔
3505
        break;
1,391,314✔
3506
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
26,546,849✔
3507
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
26,546,849✔
3508
        break;
26,549,171✔
3509
      case PHY_WINDOW_CODE_WATERMARK:
26,549,171✔
3510
        code = tlvDecodeI64(pTlv, &pNode->watermark);
26,549,171✔
3511
        break;
26,548,414✔
3512
      case PHY_WINDOW_CODE_DELETE_MARK:
26,548,414✔
3513
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
26,548,414✔
3514
        break;
26,548,414✔
3515
      case PHY_WINDOW_CODE_IG_EXPIRED:
26,549,171✔
3516
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
26,549,171✔
3517
        break;
26,549,171✔
3518
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
26,548,629✔
3519
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
26,548,629✔
3520
        break;
26,547,577✔
3521
      case PHY_WINDOW_CODE_INDEF_ROWS_FUNC:
26,555,773✔
3522
        code = tlvDecodeI8(pTlv, &pNode->indefRowsFunc);
26,555,773✔
3523
        break;
26,549,171✔
3524
      default:
×
3525
        break;
×
3526
    }
3527
  }
3528

3529
  return code;
26,562,384✔
3530
}
3531

3532
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS, PHY_INTERVAL_CODE_TIME_RANGE };
3533

3534
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
20,701,128✔
3535
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
20,701,128✔
3536

3537
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
20,701,128✔
3538
  if (TSDB_CODE_SUCCESS == code) {
20,740,467✔
3539
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
20,693,666✔
3540
  }
3541
  if (TSDB_CODE_SUCCESS == code) {
20,745,270✔
3542
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
20,745,199✔
3543
  }
3544
  if (TSDB_CODE_SUCCESS == code) {
20,746,364✔
3545
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
20,746,293✔
3546
  }
3547
  if (TSDB_CODE_SUCCESS == code) {
20,748,151✔
3548
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
20,748,080✔
3549
  }
3550

3551
  return code;
20,749,163✔
3552
}
3553

3554
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
20,684,988✔
3555
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
20,684,988✔
3556

3557
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
20,684,988✔
3558
  if (TSDB_CODE_SUCCESS == code) {
20,743,602!
3559
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
20,746,235✔
3560
  }
3561
  if (TSDB_CODE_SUCCESS == code) {
20,701,088!
3562
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
20,720,790✔
3563
  }
3564

3565
  return code;
20,750,117✔
3566
}
3567

3568
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
21,668,184✔
3569
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
21,668,184✔
3570

3571
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
21,668,184✔
3572
  if (TSDB_CODE_SUCCESS == code) {
21,669,331✔
3573
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
21,665,882✔
3574
  }
3575
  if (TSDB_CODE_SUCCESS == code) {
21,671,263!
3576
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
21,671,263✔
3577
  }
3578
  if (TSDB_CODE_SUCCESS == code) {
21,671,263!
3579
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
21,671,263✔
3580
  }
3581
  if (TSDB_CODE_SUCCESS == code) {
21,671,263!
3582
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
21,671,263✔
3583
  }
3584

3585
  return code;
21,669,907✔
3586
}
3587

3588
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
21,666,171✔
3589
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
21,666,171✔
3590

3591
  int32_t code = TSDB_CODE_SUCCESS;
21,666,171✔
3592
  STlv*   pTlv = NULL;
21,666,171✔
3593
  tlvForEach(pDecoder, pTlv, code) {
86,678,783!
3594
    switch (pTlv->type) {
65,013,561✔
3595
      case PHY_INTERVAL_CODE_WINDOW:
21,666,749✔
3596
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
21,666,749✔
3597
        break;
21,668,941✔
3598
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
21,669,043✔
3599
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
21,669,043✔
3600
        break;
21,669,907✔
3601
      case PHY_INTERVAL_CODE_TIME_RANGE:
21,670,471✔
3602
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
21,670,471✔
3603
      default:
21,670,697✔
3604
        break;
21,670,697✔
3605
    }
3606
  }
3607

3608
  return code;
21,670,978✔
3609
}
3610

3611
enum {
3612
  PHY_FILL_CODE_BASE_NODE = 1,
3613
  PHY_FILL_CODE_MODE,
3614
  PHY_FILL_CODE_FILL_EXPRS,
3615
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3616
  PHY_FILL_CODE_WSTART,
3617
  PHY_FILL_CODE_VALUES,
3618
  PHY_FILL_CODE_TIME_RANGE,
3619
  PHY_FILL_CODE_INPUT_TS_ORDER,
3620
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3621
  PHY_FILL_CODE_TIME_RANGE_EXPR,
3622
};
3623

3624
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,874,998✔
3625
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
2,874,998✔
3626

3627
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
2,874,998✔
3628
  if (TSDB_CODE_SUCCESS == code) {
2,882,672!
3629
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
2,882,672✔
3630
  }
3631
  if (TSDB_CODE_SUCCESS == code) {
2,882,672!
3632
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
2,882,672✔
3633
  }
3634
  if (TSDB_CODE_SUCCESS == code) {
2,882,672!
3635
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
2,882,672✔
3636
  }
3637
  if (TSDB_CODE_SUCCESS == code) {
2,882,672!
3638
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
2,882,672✔
3639
  }
3640
  if (TSDB_CODE_SUCCESS == code) {
2,882,672!
3641
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
2,882,672✔
3642
  }
3643
  if (TSDB_CODE_SUCCESS == code) {
2,882,672!
3644
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
2,882,672✔
3645
  }
3646
  if (TSDB_CODE_SUCCESS == code) {
2,882,672!
3647
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
2,882,672✔
3648
  }
3649
  if (TSDB_CODE_SUCCESS == code) {
2,881,634!
3650
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
2,881,634✔
3651
  }
3652
  return code;
2,881,067✔
3653
}
3654

3655
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
3,134,207✔
3656
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
3,134,207✔
3657

3658
  int32_t code = TSDB_CODE_SUCCESS;
3,134,207✔
3659
  STlv*   pTlv = NULL;
3,134,207✔
3660
  tlvForEach(pDecoder, pTlv, code) {
22,007,841!
3661
    switch (pTlv->type) {
18,875,898!
3662
      case PHY_FILL_CODE_BASE_NODE:
3,134,779✔
3663
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,134,779✔
3664
        break;
3,133,079✔
3665
      case PHY_FILL_CODE_MODE:
3,133,643✔
3666
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
3,133,643✔
3667
        break;
3,134,215✔
3668
      case PHY_FILL_CODE_FILL_EXPRS:
3,134,779✔
3669
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
3,134,779✔
3670
        break;
3,134,779✔
3671
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
2,891,558✔
3672
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
2,891,558✔
3673
        break;
2,891,558✔
3674
      case PHY_FILL_CODE_WSTART:
3,134,779✔
3675
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
3,134,779✔
3676
        break;
3,134,779✔
3677
      case PHY_FILL_CODE_VALUES:
264,445✔
3678
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
264,445✔
3679
        break;
264,445✔
3680
      case PHY_FILL_CODE_TIME_RANGE:
3,134,779✔
3681
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
3,134,779✔
3682
        break;
3,134,779✔
3683
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
46,000✔
3684
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
46,000✔
3685
        break;
46,000✔
3686
      case PHY_FILL_CODE_TIME_RANGE_EXPR:
1,136✔
3687
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
1,136✔
3688
        break;
×
3689
      default:
×
3690
        break;
×
3691
    }
3692
  }
3693

3694
  return code;
3,135,603✔
3695
}
3696

3697
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3698

3699
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,391,349✔
3700
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
1,391,349✔
3701

3702
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
1,391,349✔
3703
  if (TSDB_CODE_SUCCESS == code) {
1,392,372!
3704
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
1,392,372✔
3705
  }
3706

3707
  return code;
1,392,372✔
3708
}
3709

3710
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
1,391,314✔
3711
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
1,391,314✔
3712

3713
  int32_t code = TSDB_CODE_SUCCESS;
1,391,314✔
3714
  STlv*   pTlv = NULL;
1,391,314✔
3715
  tlvForEach(pDecoder, pTlv, code) {
4,173,942!
3716
    switch (pTlv->type) {
2,782,628!
3717
      case PHY_SESSION_CODE_WINDOW:
1,391,314✔
3718
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,391,314✔
3719
        break;
1,391,314✔
3720
      case PHY_SESSION_CODE_GAP:
1,391,314✔
3721
        code = tlvDecodeI64(pTlv, &pNode->gap);
1,391,314✔
3722
        break;
1,391,314✔
3723
      default:
×
3724
        break;
×
3725
    }
3726
  }
3727

3728
  return code;
1,391,314✔
3729
}
3730

3731
enum { PHY_EXT_CODE_WINDOW = 1,
3732
       PHY_EXT_CODE_SKEY,
3733
       PHY_EXT_CODE_EKEY,
3734
       PHY_EXT_CODE_TIME_RANGE_EXPR,
3735
       PHY_EXT_CODE_IS_SINGLE_TABLE,
3736
       PHY_EXT_CODE_INPUT_HAS_ORDER};
3737

3738
static int32_t physiExternalWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3739
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
×
3740
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3741
  if (TSDB_CODE_SUCCESS == code) {
×
3742
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_SKEY, pNode->timeRange.skey);
×
3743
  }
3744
  if (TSDB_CODE_SUCCESS == code) {
×
3745
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_EKEY, pNode->timeRange.ekey);
×
3746
  }
3747
  if (TSDB_CODE_SUCCESS == code) {
×
3748
    code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
×
3749
  }
3750
  if (TSDB_CODE_SUCCESS == code) {
×
3751
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_IS_SINGLE_TABLE, pNode->isSingleTable);
×
3752
  }
3753
  if (TSDB_CODE_SUCCESS == code) {
×
3754
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_INPUT_HAS_ORDER, pNode->inputHasOrder);
×
3755
  }
3756

3757
  return code;
×
3758
}
3759

3760
static int32_t msgToPhysiExternalWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3761
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
×
3762

3763
  int32_t code = TSDB_CODE_SUCCESS;
×
3764
  STlv*   pTlv = NULL;
×
3765
  tlvForEach(pDecoder, pTlv, code) {
×
3766
    switch (pTlv->type) {
×
3767
      case PHY_EXT_CODE_WINDOW:
×
3768
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3769
        break;
×
3770
      case PHY_EXT_CODE_SKEY:
×
3771
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
×
3772
        break;
×
3773
      case PHY_EXT_CODE_EKEY:
×
3774
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
×
3775
        break;
×
3776
      case PHY_EXT_CODE_TIME_RANGE_EXPR:
×
3777
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
3778
        break;
×
3779
      case PHY_EXT_CODE_IS_SINGLE_TABLE:
×
3780
        code = tlvDecodeBool(pTlv, &pNode->isSingleTable);
×
3781
        break;
×
3782
      case PHY_EXT_CODE_INPUT_HAS_ORDER:
×
3783
        code = tlvDecodeBool(pTlv, &pNode->inputHasOrder);
×
3784
        break;
×
3785
      default:
×
3786
        break;
×
3787
    }
3788
  }
3789
  return code;
×
3790
}
3791

3792
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY, PHY_STATE_CODE_TRUE_FOR_LIMIT, PHY_STATE_CODE_EXTEND_OPTION };
3793

3794
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,447,839✔
3795
  const SStateWindowPhysiNode* pNode = (const SStateWindowPhysiNode*)pObj;
2,447,839✔
3796

3797
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
2,447,839✔
3798
  if (TSDB_CODE_SUCCESS == code) {
2,447,839!
3799
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
2,447,839✔
3800
  }
3801
  if (TSDB_CODE_SUCCESS == code) {
2,447,839!
3802
    code = tlvEncodeI64(pEncoder, PHY_STATE_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
2,447,839✔
3803
  }
3804
  if (TSDB_CODE_SUCCESS == code) {
2,447,839!
3805
    code = tlvEncodeI32(pEncoder, PHY_STATE_CODE_EXTEND_OPTION, pNode->extendOption);
2,447,839✔
3806
  }
3807

3808
  return code;
2,447,839✔
3809
}
3810

3811
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
2,590,374✔
3812
  SStateWindowPhysiNode* pNode = (SStateWindowPhysiNode*)pObj;
2,590,374✔
3813

3814
  int32_t code = TSDB_CODE_SUCCESS;
2,590,374✔
3815
  STlv*   pTlv = NULL;
2,590,374✔
3816
  tlvForEach(pDecoder, pTlv, code) {
12,951,870!
3817
    switch (pTlv->type) {
10,361,496!
3818
      case PHY_STATE_CODE_WINDOW:
2,590,374✔
3819
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
2,590,374✔
3820
        break;
2,590,374✔
3821
      case PHY_STATE_CODE_KEY:
2,590,374✔
3822
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
2,590,374✔
3823
        break;
2,590,374✔
3824
      case PHY_STATE_CODE_TRUE_FOR_LIMIT:
2,590,374✔
3825
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
2,590,374✔
3826
        break;
2,590,374✔
3827
      case PHY_STATE_CODE_EXTEND_OPTION:
2,590,374✔
3828
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->extendOption);
2,590,374✔
3829
      default:
2,590,374✔
3830
        break;
2,590,374✔
3831
    }
3832
  }
3833

3834
  return code;
2,590,374✔
3835
}
3836

3837
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND, PHY_EVENT_CODE_TRUE_FOR_LIMIT };
3838

3839
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
481,681✔
3840
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
481,681✔
3841

3842
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
481,681✔
3843
  if (TSDB_CODE_SUCCESS == code) {
481,681!
3844
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
481,681✔
3845
  }
3846
  if (TSDB_CODE_SUCCESS == code) {
481,681!
3847
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
481,681✔
3848
  }
3849
  if (TSDB_CODE_SUCCESS == code) {
481,681!
3850
    code = tlvEncodeI64(pEncoder, PHY_EVENT_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
481,681✔
3851
  }
3852

3853
  return code;
481,681✔
3854
}
3855

3856
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
491,450✔
3857
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
491,450✔
3858

3859
  int32_t code = TSDB_CODE_SUCCESS;
491,450✔
3860
  STlv*   pTlv = NULL;
491,450✔
3861
  tlvForEach(pDecoder, pTlv, code) {
2,457,250!
3862
    switch (pTlv->type) {
1,965,800!
3863
      case PHY_EVENT_CODE_WINDOW:
491,450✔
3864
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
491,450✔
3865
        break;
491,450✔
3866
      case PHY_EVENT_CODE_START_COND:
491,450✔
3867
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
491,450✔
3868
        break;
491,450✔
3869
      case PHY_EVENT_CODE_END_COND:
491,450✔
3870
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
491,450✔
3871
        break;
491,450✔
3872
      case PHY_EVENT_CODE_TRUE_FOR_LIMIT:
491,450✔
3873
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
491,450✔
3874
        break;
491,450✔
3875
      default:
×
3876
        break;
×
3877
    }
3878
  }
3879

3880
  return code;
491,450✔
3881
}
3882

3883
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3884

3885
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
408,364✔
3886
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
408,364✔
3887

3888
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
408,364✔
3889
  if (TSDB_CODE_SUCCESS == code) {
408,364!
3890
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
408,364✔
3891
  }
3892
  if (TSDB_CODE_SUCCESS == code) {
408,364!
3893
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
408,364✔
3894
  }
3895

3896
  return code;
408,364✔
3897
}
3898

3899
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
404,770✔
3900
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
404,770✔
3901

3902
  int32_t code = TSDB_CODE_SUCCESS;
404,770✔
3903
  STlv*   pTlv = NULL;
404,770✔
3904
  tlvForEach(pDecoder, pTlv, code) {
1,619,080!
3905
    switch (pTlv->type) {
1,214,310!
3906
      case PHY_COUNT_CODE_WINDOW:
404,770✔
3907
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
404,770✔
3908
        break;
404,770✔
3909
      case PHY_COUNT_CODE_WINDOW_COUNT:
404,770✔
3910
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
404,770✔
3911
        break;
404,770✔
3912
      case PHY_COUNT_CODE_WINDOW_SLIDING:
404,770✔
3913
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
404,770✔
3914
        break;
404,770✔
3915
      default:
×
3916
        break;
×
3917
    }
3918
  }
3919

3920
  return code;
404,770✔
3921
}
3922

3923
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3924

3925
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3926
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3927

3928
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3929
  if (TSDB_CODE_SUCCESS == code) {
×
3930
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3931
  }
3932
  if (TSDB_CODE_SUCCESS == code) {
×
3933
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3934
  }
3935

3936
  return code;
×
3937
}
3938

3939
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3940
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3941

3942
  int32_t code = TSDB_CODE_SUCCESS;
×
3943
  STlv*   pTlv = NULL;
×
3944
  tlvForEach(pDecoder, pTlv, code) {
×
3945
    switch (pTlv->type) {
×
3946
      case PHY_ANOMALY_CODE_WINDOW:
×
3947
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3948
        break;
×
3949
      case PHY_ANOMALY_CODE_KEY:
×
3950
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAnomalyKey);
×
3951
        break;
×
3952
      case PHY_ANOMALY_CODE_WINDOW_OPTION:
×
3953
        code = tlvDecodeCStr(pTlv, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
×
3954
        break;
×
3955
      default:
×
3956
        break;
×
3957
    }
3958
  }
3959

3960
  return code;
×
3961
}
3962

3963
enum {
3964
  PHY_PARTITION_CODE_BASE_NODE = 1,
3965
  PHY_PARTITION_CODE_EXPR,
3966
  PHY_PARTITION_CODE_KEYS,
3967
  PHY_PARTITION_CODE_TARGETS,
3968
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3969
  PHY_PARTITION_CODE_TS_SLOTID
3970
};
3971

3972
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
10,715,956✔
3973
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
10,715,956✔
3974

3975
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
10,715,956✔
3976
  if (TSDB_CODE_SUCCESS == code) {
10,741,718!
3977
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
10,744,358✔
3978
  }
3979
  if (TSDB_CODE_SUCCESS == code) {
10,726,533!
3980
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
10,726,533✔
3981
  }
3982
  if (TSDB_CODE_SUCCESS == code) {
10,743,021!
3983
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
10,743,021✔
3984
  }
3985
  if (TSDB_CODE_SUCCESS == code) {
10,744,044!
3986
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
10,744,044!
3987
  }
3988
  if (TSDB_CODE_SUCCESS == code) {
10,745,117!
3989
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
10,745,117✔
3990
  }
3991

3992
  return code;
10,745,117✔
3993
}
3994

3995
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
10,807,538✔
3996
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
10,807,538✔
3997

3998
  int32_t code = TSDB_CODE_SUCCESS;
10,807,538✔
3999
  STlv*   pTlv = NULL;
10,807,538✔
4000
  tlvForEach(pDecoder, pTlv, code) {
64,964,521✔
4001
    switch (pTlv->type) {
54,153,026!
4002
      case PHY_PARTITION_CODE_BASE_NODE:
10,810,176✔
4003
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
10,810,176✔
4004
        break;
10,810,176✔
4005
      case PHY_PARTITION_CODE_EXPR:
99,508✔
4006
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
99,508✔
4007
        break;
99,508✔
4008
      case PHY_PARTITION_CODE_KEYS:
10,808,857✔
4009
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
10,808,857✔
4010
        break;
10,811,495✔
4011
      case PHY_PARTITION_CODE_TARGETS:
10,811,495✔
4012
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
10,811,495✔
4013
        break;
10,811,495✔
4014
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
10,811,495✔
4015
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
10,811,495✔
4016
        break;
10,811,495✔
4017
      case PHY_PARTITION_CODE_TS_SLOTID:
10,810,176✔
4018
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
10,810,176✔
4019
        break;
10,811,495✔
4020
      default:
×
4021
        break;
×
4022
    }
4023
  }
4024

4025
  return code;
10,813,427✔
4026
}
4027

4028
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
4029

4030
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
13,984,266✔
4031
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
13,984,266✔
4032

4033
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
13,984,266✔
4034
  if (TSDB_CODE_SUCCESS == code) {
13,996,267!
4035
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
13,996,267✔
4036
  }
4037
  if (TSDB_CODE_SUCCESS == code) {
13,988,736!
4038
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
13,988,736✔
4039
  }
4040

4041
  return code;
13,996,267✔
4042
}
4043

4044
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
14,279,024✔
4045
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
14,279,024✔
4046

4047
  int32_t code = TSDB_CODE_SUCCESS;
14,279,024✔
4048
  STlv*   pTlv = NULL;
14,279,024✔
4049
  tlvForEach(pDecoder, pTlv, code) {
42,915,404!
4050
    switch (pTlv->type) {
28,634,665!
4051
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
14,276,747✔
4052
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
14,276,747✔
4053
        break;
14,282,133✔
4054
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
70,399✔
4055
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
70,399✔
4056
        break;
70,399✔
4057
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
14,287,519✔
4058
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
14,287,519✔
4059
        break;
14,282,133✔
4060
      default:
×
4061
        break;
×
4062
    }
4063
  }
4064

4065
  return code;
14,287,782✔
4066
}
4067

4068
enum {
4069
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
4070
  PHY_INERP_FUNC_CODE_EXPR,
4071
  PHY_INERP_FUNC_CODE_FUNCS,
4072
  PHY_INERP_FUNC_CODE_TIME_RANGE,
4073
  PHY_INERP_FUNC_CODE_INTERVAL,
4074
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
4075
  PHY_INERP_FUNC_CODE_FILL_MODE,
4076
  PHY_INERP_FUNC_CODE_FILL_VALUES,
4077
  PHY_INERP_FUNC_CODE_TIME_SERIES,
4078
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL,
4079
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT,
4080
  PHY_INERP_FUNC_CODE_TIME_RANGE_EXPR,
4081
};
4082

4083
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
12,898,044✔
4084
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
12,898,044✔
4085

4086
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
12,898,044✔
4087
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4088
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
12,900,823✔
4089
  }
4090
  if (TSDB_CODE_SUCCESS == code) {
12,899,468!
4091
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
12,899,468✔
4092
  }
4093
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4094
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
12,900,823✔
4095
  }
4096
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4097
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
12,900,823✔
4098
  }
4099
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4100
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
12,900,823✔
4101
  }
4102
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4103
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
12,900,823✔
4104
  }
4105
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4106
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
12,900,823✔
4107
  }
4108
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4109
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
12,900,823✔
4110
  }
4111
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4112
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
12,900,823✔
4113
  }
4114
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4115
    code = tlvEncodeI64(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL, pNode->rangeInterval);
12,900,823✔
4116
  }
4117
  if (TSDB_CODE_SUCCESS == code) {
12,900,823!
4118
    code = tlvEncodeI8(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT, pNode->rangeIntervalUnit);
12,900,823✔
4119
  }
4120

4121
  return code;
12,900,823✔
4122
}
4123

4124
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
12,962,424✔
4125
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
12,962,424✔
4126

4127
  int32_t code = TSDB_CODE_SUCCESS;
12,962,424✔
4128
  STlv*   pTlv = NULL;
12,962,424✔
4129
  tlvForEach(pDecoder, pTlv, code) {
135,998,885✔
4130
    switch (pTlv->type) {
123,034,029!
4131
      case PHY_INERP_FUNC_CODE_BASE_NODE:
12,962,494✔
4132
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
12,962,494✔
4133
        break;
12,963,850✔
4134
      case PHY_INERP_FUNC_CODE_EXPR:
76,606✔
4135
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
76,606✔
4136
        break;
76,606✔
4137
      case PHY_INERP_FUNC_CODE_FUNCS:
12,963,137✔
4138
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
12,963,137✔
4139
        break;
12,963,850✔
4140
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
12,963,850✔
4141
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
12,963,850✔
4142
        break;
12,963,850✔
4143
      case PHY_INERP_FUNC_CODE_TIME_RANGE_EXPR:
×
4144
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
4145
        break;
×
4146
      case PHY_INERP_FUNC_CODE_INTERVAL:
12,963,850✔
4147
        code = tlvDecodeI64(pTlv, &pNode->interval);
12,963,850✔
4148
        break;
12,963,850✔
4149
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
12,963,850✔
4150
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
12,963,850✔
4151
        break;
12,963,850✔
4152
      case PHY_INERP_FUNC_CODE_FILL_MODE:
12,963,850✔
4153
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
12,963,850✔
4154
        break;
12,963,850✔
4155
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
6,285,918✔
4156
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
6,285,918✔
4157
        break;
6,285,205✔
4158
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
12,963,137✔
4159
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
12,963,137✔
4160
        break;
12,963,850✔
4161
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL:
12,963,850✔
4162
        code = tlvDecodeI64(pTlv, &pNode->rangeInterval);
12,963,850✔
4163
        break;
12,963,850✔
4164
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT:
12,963,487✔
4165
        code = tlvDecodeI8(pTlv, &pNode->rangeIntervalUnit);
12,963,487✔
4166
        break;
12,963,850✔
4167
      default:
×
4168
        break;
×
4169
    }
4170
  }
4171

4172
  return code;
12,967,707✔
4173
}
4174

4175
enum {
4176
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
4177
  PHY_FORECAST_FUNC_CODE_EXPR,
4178
  PHY_FORECAST_FUNC_CODE_FUNCS,
4179
};
4180

4181
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4182
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
4183

4184
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
4185
  if (TSDB_CODE_SUCCESS == code) {
×
4186
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
4187
  }
4188
  if (TSDB_CODE_SUCCESS == code) {
×
4189
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
4190
  }
4191

4192
  return code;
×
4193
}
4194

4195
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
4196
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
4197

4198
  int32_t code = TSDB_CODE_SUCCESS;
×
4199
  STlv*   pTlv = NULL;
×
4200
  tlvForEach(pDecoder, pTlv, code) {
×
4201
    switch (pTlv->type) {
×
4202
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
×
4203
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
×
4204
        break;
×
4205
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
4206
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
4207
        break;
×
4208
      case PHY_FORECAST_FUNC_CODE_FUNCS:
×
4209
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
×
4210
        break;
×
4211
      default:
×
4212
        break;
×
4213
    }
4214
  }
4215

4216
  return code;
×
4217
}
4218

4219
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
4220

4221
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,286,455,951✔
4222
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
1,286,455,951✔
4223
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
1,286,455,951✔
4224
}
4225

4226
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
1,196,742,758✔
4227
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
1,196,742,758✔
4228

4229
  int32_t code = TSDB_CODE_SUCCESS;
1,196,742,758✔
4230
  STlv*   pTlv = NULL;
1,196,742,758✔
4231
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
4232
    switch (pTlv->type) {
1,197,263,254!
4233
      case PHY_DATA_SINK_CODE_INPUT_DESC:
1,197,241,283✔
4234
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
1,197,241,283✔
4235
        break;
1,197,230,214✔
4236
      default:
×
4237
        break;
×
4238
    }
4239
  }
4240

4241
  return code;
1,197,402,751✔
4242
}
4243

4244
enum { PHY_DISPATCH_CODE_SINK = 1 };
4245

4246
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,280,534,368✔
4247
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
1,280,534,368✔
4248
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,280,534,368✔
4249
}
4250

4251
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
1,190,792,071✔
4252
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
1,190,792,071✔
4253

4254
  int32_t code = TSDB_CODE_SUCCESS;
1,190,792,071✔
4255
  STlv*   pTlv = NULL;
1,190,792,071✔
4256
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
4257
    switch (pTlv->type) {
1,191,254,591!
4258
      case PHY_DISPATCH_CODE_SINK:
1,191,248,043✔
4259
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,191,248,043✔
4260
        break;
1,191,206,848✔
4261
      default:
×
4262
        break;
×
4263
    }
4264
  }
4265

4266
  return code;
1,191,496,393✔
4267
}
4268

4269
enum {
4270
  PHY_QUERY_INSERT_CODE_SINK = 1,
4271
  PHY_QUERY_INSERT_CODE_COLS,
4272
  PHY_QUERY_INSERT_CODE_TABLE_ID,
4273
  PHY_QUERY_INSERT_CODE_STABLE_ID,
4274
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
4275
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
4276
  PHY_QUERY_INSERT_CODE_VG_ID,
4277
  PHY_QUERY_INSERT_CODE_EP_SET,
4278
  PHY_QUERY_INSERT_CODE_EXPLAIN
4279
};
4280

4281
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
186,699✔
4282
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
186,699✔
4283

4284
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
186,699✔
4285
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4286
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
186,699✔
4287
  }
4288
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4289
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
186,699✔
4290
  }
4291
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4292
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
186,699✔
4293
  }
4294
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4295
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
186,699✔
4296
  }
4297
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4298
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
186,699✔
4299
  }
4300
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4301
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
186,699✔
4302
  }
4303
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4304
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
186,699✔
4305
  }
4306
  if (TSDB_CODE_SUCCESS == code) {
186,699!
4307
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
186,699!
4308
  }
4309

4310
  return code;
186,699✔
4311
}
4312

4313
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
188,265✔
4314
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
188,265✔
4315

4316
  int32_t code = TSDB_CODE_SUCCESS;
188,265✔
4317
  STlv*   pTlv = NULL;
188,265✔
4318
  tlvForEach(pDecoder, pTlv, code) {
1,882,650!
4319
    switch (pTlv->type) {
1,694,385!
4320
      case PHY_QUERY_INSERT_CODE_SINK:
188,265✔
4321
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
188,265✔
4322
        break;
188,265✔
4323
      case PHY_QUERY_INSERT_CODE_COLS:
188,265✔
4324
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
188,265✔
4325
        break;
188,265✔
4326
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
188,265✔
4327
        code = tlvDecodeU64(pTlv, &pNode->tableId);
188,265✔
4328
        break;
188,265✔
4329
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
188,265✔
4330
        code = tlvDecodeU64(pTlv, &pNode->stableId);
188,265✔
4331
        break;
188,265✔
4332
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
188,265✔
4333
        code = tlvDecodeI8(pTlv, &pNode->tableType);
188,265✔
4334
        break;
188,265✔
4335
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
188,265✔
4336
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
188,265✔
4337
        break;
188,265✔
4338
      case PHY_QUERY_INSERT_CODE_VG_ID:
188,265✔
4339
        code = tlvDecodeI32(pTlv, &pNode->vgId);
188,265✔
4340
        break;
188,265✔
4341
      case PHY_QUERY_INSERT_CODE_EP_SET:
188,265✔
4342
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
188,265✔
4343
        break;
188,265✔
4344
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
188,265✔
4345
        code = tlvDecodeBool(pTlv, &pNode->explain);
188,265✔
4346
        break;
188,265✔
4347
      default:
×
4348
        break;
×
4349
    }
4350
  }
4351

4352
  return code;
188,265✔
4353
}
4354

4355
enum {
4356
  PHY_DELETER_CODE_SINK = 1,
4357
  PHY_DELETER_CODE_TABLE_ID,
4358
  PHY_DELETER_CODE_TABLE_TYPE,
4359
  PHY_DELETER_CODE_TABLE_FNAME,
4360
  PHY_DELETER_CODE_TS_COL_NAME,
4361
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4362
  PHY_DELETER_CODE_AFFECTED_ROWS,
4363
  PHY_DELETER_CODE_START_TS,
4364
  PHY_DELETER_CODE_END_TS
4365
};
4366

4367
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,811,265✔
4368
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
5,811,265✔
4369

4370
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
5,811,265✔
4371
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4372
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
5,811,265✔
4373
  }
4374
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4375
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
5,811,265✔
4376
  }
4377
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4378
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
5,811,265✔
4379
  }
4380
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4381
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
5,811,265✔
4382
  }
4383
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4384
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
5,811,265✔
4385
  }
4386
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4387
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
5,811,265✔
4388
  }
4389
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4390
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
5,811,265✔
4391
  }
4392
  if (TSDB_CODE_SUCCESS == code) {
5,811,265!
4393
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
5,811,265✔
4394
  }
4395

4396
  return code;
5,811,265✔
4397
}
4398

4399
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
5,782,549✔
4400
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
5,782,549✔
4401

4402
  int32_t code = TSDB_CODE_SUCCESS;
5,782,549✔
4403
  STlv*   pTlv = NULL;
5,782,549✔
4404
  tlvForEach(pDecoder, pTlv, code) {
57,837,274!
4405
    switch (pTlv->type) {
52,054,721!
4406
      case PHY_DELETER_CODE_SINK:
5,782,549✔
4407
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
5,782,549✔
4408
        break;
5,782,549✔
4409
      case PHY_DELETER_CODE_TABLE_ID:
5,784,022✔
4410
        code = tlvDecodeU64(pTlv, &pNode->tableId);
5,784,022✔
4411
        break;
5,784,022✔
4412
      case PHY_DELETER_CODE_TABLE_TYPE:
5,784,022✔
4413
        code = tlvDecodeI8(pTlv, &pNode->tableType);
5,784,022✔
4414
        break;
5,784,022✔
4415
      case PHY_DELETER_CODE_TABLE_FNAME:
5,784,022✔
4416
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
5,784,022✔
4417
        break;
5,784,022✔
4418
      case PHY_DELETER_CODE_TS_COL_NAME:
5,784,022✔
4419
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
5,784,022✔
4420
        break;
5,784,022✔
4421
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
5,784,022✔
4422
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
5,784,022✔
4423
        break;
5,784,022✔
4424
      case PHY_DELETER_CODE_AFFECTED_ROWS:
5,784,022✔
4425
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
5,784,022✔
4426
        break;
5,784,022✔
4427
      case PHY_DELETER_CODE_START_TS:
5,784,022✔
4428
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
5,784,022✔
4429
        break;
5,784,022✔
4430
      case PHY_DELETER_CODE_END_TS:
5,784,018✔
4431
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
5,784,018✔
4432
        break;
5,784,022✔
4433
      default:
×
4434
        break;
×
4435
    }
4436
  }
4437

4438
  return code;
5,786,968✔
4439
}
4440

4441
enum {
4442
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4443
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4444
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4445
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4446
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4447
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4448
};
4449

4450
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,540,431✔
4451
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
6,540,431✔
4452

4453
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
6,540,431✔
4454
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4455
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
6,540,431✔
4456
  }
4457
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4458
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
6,540,431!
4459
  }
4460
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4461
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
6,540,431!
4462
  }
4463
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4464
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
6,540,431!
4465
  }
4466
  if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4467
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
6,540,431!
4468
  }
4469

4470
  return code;
6,540,431✔
4471
}
4472

4473
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
6,540,983✔
4474
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
6,540,983✔
4475

4476
  int32_t code = TSDB_CODE_SUCCESS;
6,540,983✔
4477
  STlv*   pTlv = NULL;
6,540,983✔
4478
  tlvForEach(pDecoder, pTlv, code) {
39,245,898!
4479
    switch (pTlv->type) {
32,704,915!
4480
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
6,540,983✔
4481
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,540,983✔
4482
        break;
6,540,983✔
4483
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4484
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4485
        break;
×
4486
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
6,540,983✔
4487
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
6,540,983✔
4488
        break;    
6,540,983✔
4489
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
6,540,983✔
4490
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
6,540,983✔
4491
        break;    
6,540,983✔
4492
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
6,540,983✔
4493
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
6,540,983✔
4494
        break;    
6,540,983✔
4495
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
6,540,983✔
4496
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
6,540,983✔
4497
        break;    
6,540,983✔
4498
      default:
×
4499
        break;
×
4500
    }
4501
  }
4502

4503
  return code;
6,540,983✔
4504
}
4505

4506

4507
enum {
4508
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4509
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4510
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4511
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4512
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4513
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4514
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4515
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4516
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4517
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS,
4518
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID,
4519
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME,
4520
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME,
4521
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID,
4522
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET,
4523
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS,
4524
  PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME,
4525
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID,
4526
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE,
4527
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION,
4528
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS,
4529
};
4530

4531
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,195,880✔
4532
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
9,195,880✔
4533

4534
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,195,880✔
4535
  if (TSDB_CODE_SUCCESS == code) {
9,195,880!
4536
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
9,195,880✔
4537
  }
4538
  if (TSDB_CODE_SUCCESS == code) {
9,195,880!
4539
    switch (pNode->qType) {
9,195,880!
4540
      case DYN_QTYPE_STB_HASH: {
6,540,431✔
4541
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
6,540,431!
4542
        if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4543
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
6,540,431✔
4544
        }
4545
        if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4546
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
6,540,431✔
4547
        }
4548
        if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4549
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
6,540,431✔
4550
        }
4551
        if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4552
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
6,540,431✔
4553
        }
4554
        if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4555
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
6,540,431!
4556
        }
4557
        if (TSDB_CODE_SUCCESS == code) {
6,540,431!
4558
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
6,540,431!
4559
        }
4560
        break;
6,540,431✔
4561
      }
4562
      case DYN_QTYPE_VTB_SCAN: {
2,655,449✔
4563
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS, pNode->vtbScan.scanAllCols);
2,655,449!
4564
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4565
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID, pNode->vtbScan.suid);
2,655,449✔
4566
        }
4567
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4568
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME, pNode->vtbScan.dbName);
2,655,449✔
4569
        }
4570
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4571
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME, pNode->vtbScan.tbName);
2,655,449✔
4572
        }
4573
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4574
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID, pNode->vtbScan.accountId);
2,655,449✔
4575
        }
4576
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4577
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET, epSetToMsg, &pNode->vtbScan.mgmtEpSet);
2,655,449✔
4578
        }
4579
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4580
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS, nodeListToMsg, pNode->vtbScan.pScanCols);
2,655,449✔
4581
        }
4582
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4583
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID, pNode->vtbScan.uid);
2,655,449✔
4584
        }
4585
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4586
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE, pNode->vtbScan.isSuperTable);
2,655,449!
4587
        }
4588
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4589
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION, pNode->vtbScan.rversion);
2,655,449✔
4590
        }
4591
        if (TSDB_CODE_SUCCESS == code) {
2,655,449!
4592
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS, nodeListToMsg, pNode->vtbScan.pOrgVgIds);
2,655,449✔
4593
        }
4594
        break;
2,655,449✔
4595
      }
4596
      default:
×
4597
        return TSDB_CODE_INVALID_PARA;
×
4598
    }
4599
  }
4600
  if (TSDB_CODE_SUCCESS == code) {
9,195,880!
4601
    code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME, pNode->dynTbname);
9,195,880!
4602
  }
4603
  return code;
9,195,880✔
4604
}
4605

4606
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
9,178,667✔
4607
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
9,178,667✔
4608

4609
  int32_t code = TSDB_CODE_SUCCESS;
9,178,667✔
4610
  STlv*   pTlv = NULL;
9,178,667✔
4611
  tlvForEach(pDecoder, pTlv, code) {
111,516,073!
4612
    switch (pTlv->type) {
102,337,406!
4613
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
9,178,667✔
4614
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
9,178,667✔
4615
        break;
9,178,667✔
4616
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
9,178,667✔
4617
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
9,178,667✔
4618
        break;
9,178,667✔
4619
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
6,540,983✔
4620
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
6,540,983✔
4621
        break;
6,540,983✔
4622
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
6,540,983✔
4623
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
6,540,983✔
4624
        break;
6,540,983✔
4625
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
6,540,983✔
4626
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
6,540,983✔
4627
        break;
6,540,983✔
4628
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
6,540,983✔
4629
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
6,540,983✔
4630
        break;
6,540,983✔
4631
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
6,540,983✔
4632
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
6,540,983✔
4633
        break;      
6,540,983✔
4634
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
6,540,983✔
4635
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
6,540,983✔
4636
        break;
6,540,983✔
4637
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
6,540,983✔
4638
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
6,540,983✔
4639
        break;
6,540,983✔
4640
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS:
2,637,684✔
4641
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.scanAllCols);
2,637,684✔
4642
        break;
2,637,684✔
4643
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID:
2,637,684✔
4644
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.suid);
2,637,684✔
4645
        break;
2,637,684✔
4646
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME:
2,637,684✔
4647
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.dbName, sizeof(pNode->vtbScan.dbName));
2,637,684✔
4648
        break;
2,637,684✔
4649
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME:
2,637,684✔
4650
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.tbName, sizeof(pNode->vtbScan.tbName));
2,637,684✔
4651
        break;
2,637,684✔
4652
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID:
2,637,684✔
4653
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.accountId);
2,637,684✔
4654
        break;
2,637,684✔
4655
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET:
2,637,684✔
4656
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->vtbScan.mgmtEpSet);
2,637,684✔
4657
        break;
2,637,684✔
4658
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS:
2,637,684✔
4659
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pScanCols);
2,637,684✔
4660
        break;
2,637,684✔
4661
      case PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME:
9,178,667✔
4662
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
9,178,667✔
4663
        break;
9,178,667✔
4664
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID:
2,637,684✔
4665
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.uid);
2,637,684✔
4666
        break;
2,637,684✔
4667
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE:
2,637,684✔
4668
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.isSuperTable);
2,637,684✔
4669
        break;
2,637,684✔
4670
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION:
2,637,684✔
4671
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.rversion);
2,637,684✔
4672
        break;
2,637,684✔
4673
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS:
2,637,684✔
4674
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pOrgVgIds);
2,637,684✔
4675
        break;
2,637,684✔
4676
      default:
×
4677
        break;
×
4678
    }
4679
  }
4680

4681
  return code;
9,178,667✔
4682
}
4683

4684

4685

4686
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4687

4688
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,288,888,031✔
4689
  const SSubplanId* pNode = (const SSubplanId*)pObj;
1,288,888,031✔
4690

4691
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
1,288,888,031✔
4692
  if (TSDB_CODE_SUCCESS == code) {
1,287,289,182✔
4693
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
1,287,239,080✔
4694
  }
4695
  if (TSDB_CODE_SUCCESS == code) {
1,287,311,050✔
4696
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
1,287,310,810✔
4697
  }
4698

4699
  return code;
1,288,745,595✔
4700
}
4701

4702
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4703
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4704

4705
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4706
  if (TSDB_CODE_SUCCESS == code) {
×
4707
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4708
  }
4709
  if (TSDB_CODE_SUCCESS == code) {
×
4710
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4711
  }
4712

4713
  return code;
×
4714
}
4715

4716
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
1,196,963,897✔
4717
  SSubplanId* pNode = (SSubplanId*)pObj;
1,196,963,897✔
4718

4719
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
1,196,963,897✔
4720
  if (TSDB_CODE_SUCCESS == code) {
1,196,836,573!
4721
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
1,196,872,000✔
4722
  }
4723
  if (TSDB_CODE_SUCCESS == code) {
1,196,927,480!
4724
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
1,196,927,480✔
4725
  }
4726

4727
  return code;
1,196,788,062✔
4728
}
4729

4730
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4731
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4732

4733
  int32_t code = TSDB_CODE_SUCCESS;
×
4734
  STlv*   pTlv = NULL;
×
4735
  tlvForEach(pDecoder, pTlv, code) {
×
4736
    switch (pTlv->type) {
×
4737
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4738
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4739
        break;
×
4740
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4741
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4742
        break;
×
4743
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4744
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4745
        break;
×
4746
      default:
×
4747
        break;
×
4748
    }
4749
  }
4750

4751
  return code;
×
4752
}
4753

4754
enum {
4755
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4756
  SUBPLAN_CODE_ROOT_NODE,
4757
  SUBPLAN_CODE_DATA_SINK,
4758
  SUBPLAN_CODE_TAG_COND,
4759
  SUBPLAN_CODE_TAG_INDEX_COND
4760
};
4761

4762
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,288,739,943✔
4763
  const SSubplan* pNode = (const SSubplan*)pObj;
1,288,739,943✔
4764

4765
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
1,288,739,943✔
4766
  if (TSDB_CODE_SUCCESS == code) {
1,288,716,524✔
4767
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
1,287,646,136✔
4768
  }
4769
  if (TSDB_CODE_SUCCESS == code) {
1,289,264,074✔
4770
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
1,289,263,502✔
4771
  }
4772
  if (TSDB_CODE_SUCCESS == code) {
1,289,276,069✔
4773
    code = tlvEncodeValueI32(pEncoder, pNode->level);
1,289,275,782✔
4774
  }
4775
  if (TSDB_CODE_SUCCESS == code) {
1,289,334,602✔
4776
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
1,289,334,765✔
4777
  }
4778
  if (TSDB_CODE_SUCCESS == code) {
1,288,464,635✔
4779
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
1,288,464,990✔
4780
  }
4781
  if (TSDB_CODE_SUCCESS == code) {
1,289,703,852✔
4782
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
1,289,701,753✔
4783
  }
4784
  if (TSDB_CODE_SUCCESS == code) {
1,288,941,529✔
4785
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
1,288,939,564!
4786
  }
4787
  if (TSDB_CODE_SUCCESS == code) {
1,289,205,995✔
4788
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
1,289,205,608✔
4789
  }
4790
  if (TSDB_CODE_SUCCESS == code) {
1,289,142,820✔
4791
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
1,289,142,590!
4792
  }
4793
  if (TSDB_CODE_SUCCESS == code) {
1,289,098,161✔
4794
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
1,289,095,058!
4795
  }
4796
  if (TSDB_CODE_SUCCESS == code) {
1,289,615,284✔
4797
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
1,289,614,295!
4798
  }
4799
  if (TSDB_CODE_SUCCESS == code) {
1,289,317,556✔
4800
    code = tlvEncodeValueBool(pEncoder, pNode->processOneBlock);
1,289,319,066!
4801
  }
4802
  if (TSDB_CODE_SUCCESS == code) {
1,289,589,161!
4803
    code = tlvEncodeValueBool(pEncoder, pNode->dynTbname);
1,289,593,148!
4804
  }
4805
  return code;
1,289,410,923✔
4806
}
4807

4808
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,288,885,546✔
4809
  const SSubplan* pNode = (const SSubplan*)pObj;
1,288,885,546✔
4810

4811
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
1,288,885,546✔
4812
  if (TSDB_CODE_SUCCESS == code) {
1,286,402,810!
4813
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
1,286,633,774✔
4814
  }
4815
  if (TSDB_CODE_SUCCESS == code) {
1,288,677,383!
4816
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
1,288,678,138✔
4817
  }
4818
  if (TSDB_CODE_SUCCESS == code) {
1,289,515,846!
4819
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
1,289,517,020✔
4820
  }
4821
  if (TSDB_CODE_SUCCESS == code) {
1,287,637,700✔
4822
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
1,287,638,849✔
4823
  }
4824

4825
  return code;
1,288,048,687✔
4826
}
4827

4828
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
1,196,974,926✔
4829
  SSubplan* pNode = (SSubplan*)pObj;
1,196,974,926✔
4830

4831
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
1,196,974,926✔
4832
  if (TSDB_CODE_SUCCESS == code) {
1,196,790,091!
4833
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
1,196,791,531✔
4834
  }
4835
  if (TSDB_CODE_SUCCESS == code) {
1,196,856,022!
4836
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
1,196,856,022✔
4837
  }
4838
  if (TSDB_CODE_SUCCESS == code) {
1,197,181,905!
4839
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
1,197,181,905✔
4840
  }
4841
  if (TSDB_CODE_SUCCESS == code) {
1,197,182,459!
4842
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
1,197,182,459✔
4843
  }
4844
  if (TSDB_CODE_SUCCESS == code) {
1,197,085,308!
4845
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
1,197,085,308✔
4846
  }
4847
  if (TSDB_CODE_SUCCESS == code) {
1,197,184,185!
4848
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
1,197,184,185✔
4849
  }
4850
  if (TSDB_CODE_SUCCESS == code) {
1,197,012,334!
4851
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
1,197,012,334✔
4852
  }
4853
  if (TSDB_CODE_SUCCESS == code) {
1,196,827,593!
4854
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
1,196,827,593✔
4855
  }
4856
  if (TSDB_CODE_SUCCESS == code) {
1,197,191,706!
4857
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
1,197,191,706✔
4858
  }
4859
  if (TSDB_CODE_SUCCESS == code) {
1,197,167,346!
4860
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
1,197,167,346✔
4861
  }
4862
  if (TSDB_CODE_SUCCESS == code) {
1,197,134,771!
4863
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
1,197,134,771✔
4864
  }
4865
  if (TSDB_CODE_SUCCESS == code) {
1,197,149,263!
4866
    code = tlvDecodeValueBool(pDecoder, &pNode->processOneBlock);
1,197,149,263✔
4867
  }
4868
  if (TSDB_CODE_SUCCESS == code) {
1,197,142,642!
4869
    code = tlvDecodeValueBool(pDecoder, &pNode->dynTbname);
1,197,142,642✔
4870
  }
4871
  return code;
1,197,153,151✔
4872
}
4873

4874
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
1,196,976,495✔
4875
  SSubplan* pNode = (SSubplan*)pObj;
1,196,976,495✔
4876

4877
  int32_t code = TSDB_CODE_SUCCESS;
1,196,976,495✔
4878
  STlv*   pTlv = NULL;
1,196,976,495✔
4879
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
4880
    switch (pTlv->type) {
2,147,483,647!
4881
      case SUBPLAN_CODE_INLINE_ATTRS:
1,196,909,923✔
4882
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
1,196,909,923✔
4883
        break;
1,197,140,981✔
4884
      case SUBPLAN_CODE_ROOT_NODE:
1,197,234,249✔
4885
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
1,197,234,249✔
4886
        break;
1,197,023,437✔
4887
      case SUBPLAN_CODE_DATA_SINK:
1,197,176,887✔
4888
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
1,197,176,887✔
4889
        break;
1,197,121,716✔
4890
      case SUBPLAN_CODE_TAG_COND:
60,690,306✔
4891
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
60,690,306✔
4892
        break;
60,679,070✔
4893
      case SUBPLAN_CODE_TAG_INDEX_COND:
13,159,441✔
4894
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
13,159,441✔
4895
        break;
13,033,880✔
4896
      default:
×
4897
        break;
×
4898
    }
4899
  }
4900

4901
  return code;
1,197,686,431✔
4902
}
4903

4904
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4905

4906
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4907
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4908

4909
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
×
4910
  if (TSDB_CODE_SUCCESS == code) {
×
4911
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
×
4912
  }
4913

4914
  return code;
×
4915
}
4916

4917
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4918
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4919

4920
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
×
4921
  if (TSDB_CODE_SUCCESS == code) {
×
4922
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
×
4923
  }
4924

4925
  return code;
×
4926
}
4927

4928
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
×
4929
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4930

4931
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
×
4932
  if (TSDB_CODE_SUCCESS == code) {
×
4933
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
×
4934
  }
4935

4936
  return code;
×
4937
}
4938

4939
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
×
4940
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4941

4942
  int32_t code = TSDB_CODE_SUCCESS;
×
4943
  STlv*   pTlv = NULL;
×
4944
  tlvForEach(pDecoder, pTlv, code) {
×
4945
    switch (pTlv->type) {
×
4946
      case QUERY_PLAN_CODE_INLINE_ATTRS:
×
4947
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
×
4948
        break;
×
4949
      case QUERY_PLAN_CODE_SUBPLANS:
×
4950
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
×
4951
        break;
×
4952
      default:
×
4953
        break;
×
4954
    }
4955
  }
4956

4957
  return code;
×
4958
}
4959

4960
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
4961
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4962
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
4963
  switch (nodeType(pObj)) {
2,147,483,647!
4964
    case QUERY_NODE_COLUMN:
2,147,483,647✔
4965
      code = columnNodeToMsg(pObj, pEncoder);
2,147,483,647✔
4966
      break;
2,147,483,647✔
4967
    case QUERY_NODE_VALUE:
2,147,483,647✔
4968
      code = valueNodeToMsg(pObj, pEncoder);
2,147,483,647✔
4969
      break;
2,147,483,647✔
4970
    case QUERY_NODE_OPERATOR:
1,198,659,308✔
4971
      code = operatorNodeToMsg(pObj, pEncoder);
1,198,659,308✔
4972
      break;
1,199,071,214✔
4973
    case QUERY_NODE_LOGIC_CONDITION:
321,368,856✔
4974
      code = logicConditionNodeToMsg(pObj, pEncoder);
321,368,856✔
4975
      break;
321,430,299✔
4976
    case QUERY_NODE_FUNCTION:
1,815,623,396✔
4977
      code = functionNodeToMsg(pObj, pEncoder);
1,815,623,396✔
4978
      break;
1,815,540,605✔
4979
    case QUERY_NODE_ORDER_BY_EXPR:
231,479,530✔
4980
      code = orderByExprNodeToMsg(pObj, pEncoder);
231,479,530✔
4981
      break;
231,527,164✔
4982
    case QUERY_NODE_LIMIT:
155,053,251✔
4983
      code = limitNodeToMsg(pObj, pEncoder);
155,053,251✔
4984
      break;
155,138,300✔
4985
    case QUERY_NODE_NODE_LIST:
37,312,497✔
4986
      code = nodeListNodeToMsg(pObj, pEncoder);
37,312,497✔
4987
      break;
37,347,692✔
4988
    case QUERY_NODE_TARGET:
2,147,483,647✔
4989
      code = targetNodeToMsg(pObj, pEncoder);
2,147,483,647✔
4990
      break;
2,147,483,647✔
4991
    case QUERY_NODE_TIME_RANGE:
×
4992
      code = timeRangeNodeToMsg(pObj, pEncoder);
×
4993
      break;
×
4994
    case QUERY_NODE_DATABLOCK_DESC:
2,147,483,647✔
4995
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
2,147,483,647✔
4996
      break;
2,147,483,647✔
4997
    case QUERY_NODE_SLOT_DESC:
2,147,483,647✔
4998
      code = slotDescNodeToMsg(pObj, pEncoder);
2,147,483,647✔
4999
      break;
2,147,483,647✔
5000
    case QUERY_NODE_DOWNSTREAM_SOURCE:
695,145,917✔
5001
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
695,145,917✔
5002
      break;
695,146,904✔
5003
    case QUERY_NODE_LEFT_VALUE:
45,523,698✔
5004
      break;
45,523,698✔
5005
    case QUERY_NODE_WHEN_THEN:
4,906,517✔
5006
      code = whenThenNodeToMsg(pObj, pEncoder);
4,906,517✔
5007
      break;
4,906,517✔
5008
    case QUERY_NODE_CASE_WHEN:
4,012,771✔
5009
      code = caseWhenNodeToMsg(pObj, pEncoder);
4,012,771✔
5010
      break;
4,012,771✔
5011
    case QUERY_NODE_WINDOW_OFFSET:
1,097,401✔
5012
      code = windowOffsetNodeToMsg(pObj, pEncoder);
1,097,401✔
5013
      break;
1,097,401✔
5014
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
36,094,507✔
5015
      code = physiTagScanNodeToMsg(pObj, pEncoder);
36,094,507✔
5016
      break;
36,047,755✔
5017
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
23,756✔
5018
      code = physiScanNodeToMsg(pObj, pEncoder);
23,756✔
5019
      break;
23,756✔
5020
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
2,749,417✔
5021
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5022
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
2,749,417✔
5023
      break;
2,753,529✔
5024
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
791,031,229✔
5025
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5026
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5027
      code = physiTableScanNodeToMsg(pObj, pEncoder);
791,031,229✔
5028
      break;
787,549,631✔
5029
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
176,165,202✔
5030
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
176,165,202✔
5031
      break;
176,191,395✔
5032
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
411,122,044✔
5033
      code = physiProjectNodeToMsg(pObj, pEncoder);
411,122,044✔
5034
      break;
411,497,928✔
5035
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
57,608,175✔
5036
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
57,608,175✔
5037
      break;
57,609,548✔
5038
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
6,540,431✔
5039
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
6,540,431✔
5040
      break;
6,540,431✔
5041
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
457,895,931✔
5042
      code = physiAggNodeToMsg(pObj, pEncoder);
457,895,931✔
5043
      break;
457,745,770✔
5044
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
441,562,380✔
5045
      code = physiExchangeNodeToMsg(pObj, pEncoder);
441,562,380✔
5046
      break;
441,548,113✔
5047
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
55,155,089✔
5048
      code = physiMergeNodeToMsg(pObj, pEncoder);
55,155,089✔
5049
      break;
55,155,089✔
5050
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
134,201,965✔
5051
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5052
      code = physiSortNodeToMsg(pObj, pEncoder);
134,201,965✔
5053
      break;
134,230,919✔
5054
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
20,697,766✔
5055
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5056
      code = physiIntervalNodeToMsg(pObj, pEncoder);
20,697,766✔
5057
      break;
20,691,154✔
5058
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
2,878,194✔
5059
      code = physiFillNodeToMsg(pObj, pEncoder);
2,878,194✔
5060
      break;
2,879,535✔
5061
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,391,349✔
5062
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
1,391,349✔
5063
      break;
1,391,349✔
5064
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
5065
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5066
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5067
      code = physiExternalWindowNodeToMsg(pObj, pEncoder);
×
5068
      break;
×
5069
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
2,447,839✔
5070
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
2,447,839✔
5071
      break;
2,447,839✔
5072
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
481,681✔
5073
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
481,681✔
5074
      break;
481,681✔
5075
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
408,364✔
5076
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
408,364✔
5077
      break;
408,364✔
5078
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
5079
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
5080
      break;
×
5081
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
10,693,632✔
5082
      code = physiPartitionNodeToMsg(pObj, pEncoder);
10,693,632✔
5083
      break;
10,739,209✔
5084
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
13,985,156✔
5085
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
13,985,156✔
5086
      break;
13,992,438✔
5087
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
12,898,756✔
5088
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
12,898,756✔
5089
      break;
12,899,468✔
5090
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
×
5091
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
5092
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
5093
      break;
×
5094
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,280,486,320✔
5095
      code = physiDispatchNodeToMsg(pObj, pEncoder);
1,280,486,320✔
5096
      break;
1,282,220,462✔
5097
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
186,699✔
5098
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
186,699✔
5099
      break;
186,699✔
5100
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
5,811,265✔
5101
      code = physiDeleteNodeToMsg(pObj, pEncoder);
5,811,265✔
5102
      break;
5,811,265✔
5103
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
6,540,431✔
5104
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
6,540,431✔
5105
      break;
6,540,431✔
5106
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,195,880✔
5107
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
9,195,880✔
5108
      break;
9,195,880✔
5109
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
8,589,393✔
5110
      code = physiVirtualTableScanNodeToMsg(pObj, pEncoder);
8,589,393✔
5111
      break;
8,589,393✔
5112
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,288,996,120✔
5113
      code = subplanToMsg(pObj, pEncoder);
1,288,996,120✔
5114
      break;
1,286,896,154✔
5115
    case QUERY_NODE_PHYSICAL_PLAN:
×
5116
      code = queryPlanToMsg(pObj, pEncoder);
×
5117
      break;
×
5118
    default:
×
5119
      break;
×
5120
  }
5121
  if (TSDB_CODE_SUCCESS != code) {
2,147,483,647!
5122
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
5123
  }
5124
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
5125
  return code;
2,147,483,647✔
5126
}
5127

5128
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
5129
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
5130
  switch (nodeType(pObj)) {
2,147,483,647!
5131
    case QUERY_NODE_COLUMN:
2,147,483,647✔
5132
      code = msgToColumnNode(pDecoder, pObj);
2,147,483,647✔
5133
      break;
2,147,483,647✔
5134
    case QUERY_NODE_VALUE:
2,147,483,647✔
5135
      code = msgToValueNode(pDecoder, pObj);
2,147,483,647✔
5136
      break;
2,147,483,647✔
5137
    case QUERY_NODE_OPERATOR:
960,621,194✔
5138
      code = msgToOperatorNode(pDecoder, pObj);
960,621,194✔
5139
      break;
960,533,527✔
5140
    case QUERY_NODE_LOGIC_CONDITION:
240,952,283✔
5141
      code = msgToLogicConditionNode(pDecoder, pObj);
240,952,283✔
5142
      break;
240,957,103✔
5143
    case QUERY_NODE_FUNCTION:
1,871,858,034✔
5144
      code = msgToFunctionNode(pDecoder, pObj);
1,871,858,034✔
5145
      break;
1,871,812,732✔
5146
    case QUERY_NODE_ORDER_BY_EXPR:
236,190,140✔
5147
      code = msgToOrderByExprNode(pDecoder, pObj);
236,190,140✔
5148
      break;
236,199,827✔
5149
    case QUERY_NODE_LIMIT:
158,622,825✔
5150
      code = msgToLimitNode(pDecoder, pObj);
158,622,825✔
5151
      break;
158,619,920✔
5152
    case QUERY_NODE_NODE_LIST:
37,604,500✔
5153
      code = msgToNodeListNode(pDecoder, pObj);
37,604,500✔
5154
      break;
37,607,053✔
5155
    case QUERY_NODE_TARGET:
2,147,483,647✔
5156
      code = msgToTargetNode(pDecoder, pObj);
2,147,483,647✔
5157
      break;
2,147,483,647✔
5158
    case QUERY_NODE_TIME_RANGE:
×
5159
      code = msgToTimeRangeNode(pDecoder, pObj);
×
5160
      break;
×
5161
    case QUERY_NODE_DATABLOCK_DESC:
2,147,483,647✔
5162
      code = msgToDataBlockDescNode(pDecoder, pObj);
2,147,483,647✔
5163
      break;
2,147,483,647✔
5164
    case QUERY_NODE_SLOT_DESC:
2,147,483,647✔
5165
      code = msgToSlotDescNode(pDecoder, pObj);
2,147,483,647✔
5166
      break;
2,147,483,647✔
5167
    case QUERY_NODE_DOWNSTREAM_SOURCE:
714,849,294✔
5168
      code = msgToDownstreamSourceNode(pDecoder, pObj);
714,849,294✔
5169
    case QUERY_NODE_LEFT_VALUE:
762,114,712✔
5170
      break;
762,114,712✔
5171
    case QUERY_NODE_WHEN_THEN:
5,145,154✔
5172
      code = msgToWhenThenNode(pDecoder, pObj);
5,145,154✔
5173
      break;
5,145,154✔
5174
    case QUERY_NODE_CASE_WHEN:
4,156,911✔
5175
      code = msgToCaseWhenNode(pDecoder, pObj);
4,156,911✔
5176
      break;
4,156,911✔
5177
    case QUERY_NODE_WINDOW_OFFSET:
1,099,837✔
5178
      code = msgToWindowOffsetNode(pDecoder, pObj);
1,099,837✔
5179
      break;
1,098,507✔
5180
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
36,171,913✔
5181
      code = msgToPhysiTagScanNode(pDecoder, pObj);
36,171,913✔
5182
      break;
36,175,966✔
5183
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
24,952✔
5184
      code = msgToPhysiScanNode(pDecoder, pObj);
24,952✔
5185
      break;
24,952✔
5186
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
3,460,188✔
5187
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5188
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
3,460,188✔
5189
      break;
3,460,684✔
5190
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
814,399,176✔
5191
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5192
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5193
      code = msgToPhysiTableScanNode(pDecoder, pObj);
814,399,176✔
5194
      break;
814,353,972✔
5195
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
55,484,072✔
5196
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
55,484,072✔
5197
      break;
55,477,582✔
5198
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
338,211,367✔
5199
      code = msgToPhysiProjectNode(pDecoder, pObj);
338,211,367✔
5200
      break;
338,282,193✔
5201
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
60,996,868✔
5202
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
60,996,868✔
5203
      break;
60,995,496✔
5204
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
6,540,983✔
5205
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
6,540,983✔
5206
      break;
6,540,983✔
5207
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
475,358,595✔
5208
      code = msgToPhysiAggNode(pDecoder, pObj);
475,358,595✔
5209
      break;
475,353,949✔
5210
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
453,609,174✔
5211
      code = msgToPhysiExchangeNode(pDecoder, pObj);
453,609,174✔
5212
      break;
453,593,521✔
5213
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
56,137,378✔
5214
      code = msgToPhysiMergeNode(pDecoder, pObj);
56,137,378✔
5215
      break;
56,138,887✔
5216
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
135,553,817✔
5217
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5218
      code = msgToPhysiSortNode(pDecoder, pObj);
135,553,817✔
5219
      break;
135,580,332✔
5220
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
21,669,849✔
5221
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5222
      code = msgToPhysiIntervalNode(pDecoder, pObj);
21,669,849✔
5223
      break;
21,667,557✔
5224
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
3,134,207✔
5225
      code = msgToPhysiFillNode(pDecoder, pObj);
3,134,207✔
5226
      break;
3,134,215✔
5227
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,391,314✔
5228
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
1,391,314✔
5229
      break;
1,391,314✔
5230
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
5231
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5232
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5233
      code = msgToPhysiExternalWindowNode(pDecoder, pObj);
×
5234
      break;
×
5235
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
2,590,374✔
5236
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
2,590,374✔
5237
      break;
2,590,374✔
5238
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
491,450✔
5239
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
491,450✔
5240
      break;
491,450✔
5241
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
404,770✔
5242
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
404,770✔
5243
      break;
404,770✔
5244
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
5245
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
5246
      break;
×
5247
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
10,807,538✔
5248
      code = msgToPhysiPartitionNode(pDecoder, pObj);
10,807,538✔
5249
      break;
10,808,841✔
5250
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
14,274,044✔
5251
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
14,274,044✔
5252
      break;
14,281,144✔
5253
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
12,963,138✔
5254
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
12,963,138✔
5255
      break;
12,963,850✔
5256
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
5257
    case QUERY_NODE_PHYSICAL_PLAN_IMPUTATION_FUNC:
5258
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
5259
      break;
×
5260
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,190,901,342✔
5261
      code = msgToPhysiDispatchNode(pDecoder, pObj);
1,190,901,342✔
5262
      break;
1,191,003,570✔
5263
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
188,265✔
5264
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
188,265✔
5265
      break;
188,265✔
5266
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
5,782,549✔
5267
      code = msgToPhysiDeleteNode(pDecoder, pObj);
5,782,549✔
5268
      break;
5,782,545✔
5269
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
6,540,983✔
5270
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
6,540,983✔
5271
      break;
6,540,983✔
5272
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,178,667✔
5273
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
9,178,667✔
5274
      break;
9,178,667✔
5275
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
8,476,056✔
5276
      code = msgToPhysiVirtualTableScanNode(pDecoder, pObj);
8,476,056✔
5277
      break;
8,476,056✔
5278
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,196,986,525✔
5279
      code = msgToSubplan(pDecoder, pObj);
1,196,986,525✔
5280
      break;
1,196,959,673✔
5281
    case QUERY_NODE_PHYSICAL_PLAN:
×
5282
      code = msgToQueryPlan(pDecoder, pObj);
×
5283
      break;
×
5284
    default:
×
5285
      break;
×
5286
  }
5287
  if (TSDB_CODE_SUCCESS != code) {
2,147,483,647!
5288
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
5289
  }
5290
  return code;
2,147,483,647✔
5291
}
5292

5293
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
5294
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
2,147,483,647✔
5295
}
5296

5297
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
2,147,483,647✔
5298
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
2,147,483,647✔
5299
}
5300

5301
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
2,147,483,647✔
5302
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
2,147,483,647✔
5303
  return msgToNode(&decoder, pObj);
2,147,483,647✔
5304
}
5305

5306
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
5307
  const SNodeList* pList = (const SNodeList*)pObj;
2,147,483,647✔
5308

5309
  SNode* pNode = NULL;
2,147,483,647✔
5310
  FOREACH(pNode, pList) {
2,147,483,647!
5311
    int32_t code = nodeToMsg(pNode, pEncoder);
2,147,483,647✔
5312
    if (TSDB_CODE_SUCCESS != code) {
2,147,483,647!
5313
      return code;
×
5314
    }
5315
  }
5316

5317
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
5318
}
5319
enum {
5320
  SARRAY_CODE_CAPACITY = 1,
5321
  SARRAY_CODE_ELEMSIZE,
5322
  SARRAY_CODE_SIZE,
5323
  SARRAY_CODE_PDATA
5324
};
5325

5326
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
5327
  const SArray* pArray = (const SArray*)pObj;
×
5328
  int32_t code = TSDB_CODE_SUCCESS;
×
5329
  if (TSDB_CODE_SUCCESS == code) {
×
5330
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
×
5331
  }
5332
  if (TSDB_CODE_SUCCESS == code) {
×
5333
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
×
5334
  }
5335
  if (TSDB_CODE_SUCCESS == code) {
×
5336
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
×
5337
  }
5338
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
×
5339
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
×
5340
  }
5341
  return code;
×
5342
}
5343

5344

5345
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
2,147,483,647✔
5346
  SNodeList* pList = NULL;
2,147,483,647✔
5347
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
5348
  code = nodesMakeList(&pList);
2,147,483,647✔
5349

5350
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
2,147,483,647✔
5351
    SNode* pNode = NULL;
2,147,483,647✔
5352
    code = msgToNode(pDecoder, (void**)&pNode);
2,147,483,647✔
5353
    if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
5354
      code = nodesListAppend(pList, pNode);
2,147,483,647✔
5355
    }
5356
  }
5357
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647!
5358
    *pObj = pList;
2,147,483,647✔
5359
  } else {
5360
    nodesDestroyList(pList);
×
5361
  }
5362
  return code;
2,147,483,647✔
5363
}
5364

5365
static int32_t msgToSArray(STlv* pTlv, void** pObj){
×
5366
  SArray* pArray = NULL;
×
5367
  uint32_t capacity = 0;
×
5368
  uint32_t elemSize = 0;
×
5369
  uint32_t actualSize;
×
5370
  int32_t decodeFieldNum = 0;;
×
5371
  int32_t code = TSDB_CODE_SUCCESS;
×
5372
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
×
5373
  STlv*   pTlvTemp = NULL;
×
5374
  STlv*   pDataTlv = NULL;
×
5375

5376
  tlvForEach(&decoder, pTlvTemp, code) {
×
5377
    switch (pTlvTemp->type) {
×
5378
      case SARRAY_CODE_CAPACITY:
×
5379
        code = tlvDecodeI32(pTlvTemp, &capacity);
×
5380
        break;
×
5381
      case SARRAY_CODE_ELEMSIZE:
×
5382
        code = tlvDecodeI32(pTlvTemp, &elemSize);
×
5383
        break;
×
5384
      case SARRAY_CODE_SIZE:
×
5385
        code = tlvDecodeI32(pTlvTemp, &actualSize);
×
5386
        break;
×
5387
      case SARRAY_CODE_PDATA:
×
5388
        if (decodeFieldNum < 3) {
×
5389
          pDataTlv = pTlvTemp;
×
5390
          break;
×
5391
        }
5392
        pArray = taosArrayInit(capacity, elemSize);
×
5393
        if (NULL == pArray) {
×
5394
          return terrno;
×
5395
        }
5396
        pArray->size = actualSize;
×
5397
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5398
          taosArrayDestroy(pArray);
×
5399
          return TSDB_CODE_OUT_OF_MEMORY;
×
5400
        }
5401
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
×
5402
        break;
×
5403
      default:
×
5404
        break;
×
5405
    }
5406
    decodeFieldNum++;
×
5407
  }
5408

5409
  if (pDataTlv != NULL) {
×
5410
    pArray = taosArrayInit(capacity, elemSize);
×
5411
    if (NULL == pArray) {
×
5412
      return terrno;
×
5413
    }
5414
    pArray->size = actualSize;
×
5415
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5416
      taosArrayDestroy(pArray);
×
5417
      return TSDB_CODE_OUT_OF_MEMORY;
×
5418
    }
5419
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
5420
  }
5421
  *pObj = pArray;
×
5422
  return code;
×
5423
}
5424

5425

5426
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
2,147,483,647✔
5427
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
2,147,483,647✔
5428
  return msgToNodeList(&decoder, pObj);
2,147,483,647✔
5429
}
5430

5431
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
1,288,916,737✔
5432
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
1,288,916,737!
5433
    terrno = TSDB_CODE_FAILED;
×
5434
    return TSDB_CODE_FAILED;
×
5435
  }
5436

5437
  STlvEncoder encoder;
1,286,506,485✔
5438
  int32_t     code = initTlvEncoder(&encoder);
1,289,632,401✔
5439
  if (TSDB_CODE_SUCCESS == code) {
1,286,349,610!
5440
    code = nodeToMsg(pNode, &encoder);
1,286,843,707✔
5441
  }
5442
  if (TSDB_CODE_SUCCESS == code) {
1,288,469,893!
5443
    endTlvEncode(&encoder, pMsg, pLen);
1,289,096,135✔
5444
  }
5445
  clearTlvEncoder(&encoder);
1,285,569,147✔
5446

5447
  terrno = code;
1,287,047,114✔
5448
  return code;
1,287,954,729✔
5449
}
5450

5451
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
1,197,145,605✔
5452
  if (NULL == pMsg || NULL == pNode) {
1,197,145,605!
5453
    return TSDB_CODE_SUCCESS;
×
5454
  }
5455

5456
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
1,197,232,402✔
5457
  int32_t     code = msgToNode(&decoder, (void**)pNode);
1,197,242,718✔
5458
  if (TSDB_CODE_SUCCESS != code) {
1,197,019,406!
5459
    nodesDestroyNode(*pNode);
×
5460
    *pNode = NULL;
×
5461
  }
5462

5463
  terrno = code;
1,197,019,406✔
5464
  return code;
1,196,655,183✔
5465
}
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