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

taosdata / TDengine / #4548

22 Jul 2025 02:37AM UTC coverage: 54.273% (-3.0%) from 57.287%
#4548

push

travis-ci

GitHub
Merge pull request #32061 from taosdata/new_testcases

132738 of 315239 branches covered (42.11%)

Branch coverage included in aggregate %.

201371 of 300373 relevant lines covered (67.04%)

3475977.14 hits per line

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

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

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

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

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

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
27,379,970✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
27,379,970✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
34,327!
115
    if (NULL == pNewBuf) {
34,499!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
34,499✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
34,499✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
27,380,142✔
122
  pEncoder->offset += len;
27,380,142✔
123
  return TSDB_CODE_SUCCESS;
27,380,142✔
124
}
125

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

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

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
3,463,966✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
3,463,966✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
6,240,825✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
6,240,825✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
897,209✔
223
  if (NULL == pValue) {
897,209✔
224
    return TSDB_CODE_SUCCESS;
6,060✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
891,149✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
4,145,736✔
230
  int16_t len = strlen(pValue);
4,145,736✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
4,145,736✔
232
  if (TSDB_CODE_SUCCESS == code) {
4,152,315!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
4,153,674✔
234
  }
235
  return code;
4,144,197✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
10,390,261✔
243
  if (NULL == pObj) {
10,390,261✔
244
    return TSDB_CODE_SUCCESS;
1,185,763✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
9,204,498✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
20,303✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
20,303!
250
    if (NULL == pNewBuf) {
20,356!
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
20,356✔
254
  }
255

256
  int32_t start = pEncoder->offset;
9,204,551✔
257
  pEncoder->offset += sizeof(STlv);
9,204,551✔
258
  int32_t code = func(pObj, pEncoder);
9,204,551✔
259
  if (TSDB_CODE_SUCCESS == code) {
9,279,662!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
9,305,413✔
261
    pTlv->type = htons(type);
9,305,413✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
9,305,413✔
263
  }
264
  ++(pEncoder->tlvCount);
9,279,662✔
265
  return code;
9,279,662✔
266
}
267

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

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
126,862✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
126,862✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
246,497✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
119,496✔
291
  }
292
  return code;
127,001✔
293
}
294

295
static int32_t tlvGetNextTlv(STlvDecoder* pDecoder, STlv** pTlv) {
305,057,820✔
296
  if (pDecoder->offset == pDecoder->bufSize) {
305,057,820✔
297
    *pTlv = NULL;
67,976,644✔
298
    return TSDB_CODE_SUCCESS;
67,976,644✔
299
  }
300

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

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
41,904,057✔
312

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

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

335
static int32_t tlvDecodeI8(STlv* pTlv, int8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
34,713,465✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
139,493,434✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
139,493,434✔
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) {
135,467,569✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
135,467,569✔
351
  if (TSDB_CODE_SUCCESS == code) {
134,815,121!
352
    *pValue = ntohs(*pValue);
138,346,813✔
353
  }
354
  return code;
134,815,121✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
49,064,100✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
49,064,100✔
359
  if (TSDB_CODE_SUCCESS == code) {
49,008,475!
360
    *pValue = ntohl(*pValue);
49,019,043✔
361
  }
362
  return code;
49,008,475✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
76,633,344✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
76,633,344✔
367
  if (TSDB_CODE_SUCCESS == code) {
76,470,757!
368
    *pValue = ntohl(*pValue);
76,544,304✔
369
  }
370
  return code;
76,470,757✔
371
}
372

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

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

394
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
14,556,176✔
395

396
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
56,531,319✔
397
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
56,531,319✔
398
}
399

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

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

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

424
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
13,044,982✔
425
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
13,044,982✔
426
  if (TSDB_CODE_SUCCESS == code) {
13,044,930!
427
    *pValue = ntohll(*pValue);
13,048,648✔
428
  }
429
  return code;
13,044,930✔
430
}
431

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

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

450
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
146,167,107✔
451
  switch (len) {
146,167,107!
452
    case 1:
125,540,650✔
453
      *(int8_t*)pValue = value;
125,540,650✔
454
      break;
125,540,650✔
455
    case 2:
×
456
      *(int16_t*)pValue = value;
×
457
      break;
×
458
    case 4:
21,343,918✔
459
      *(int32_t*)pValue = value;
21,343,918✔
460
      break;
21,343,918✔
461
    default:
×
462
      return TSDB_CODE_FAILED;
×
463
  }
464
  return TSDB_CODE_SUCCESS;
146,884,568✔
465
}
466

467
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
26,843,803✔
468
  int8_t  value = 0;
26,843,803✔
469
  int32_t code = tlvDecodeI8(pTlv, &value);
26,843,803✔
470
  if (TSDB_CODE_SUCCESS == code) {
26,824,464!
471
    code = convertIntegerType(value, pValue, sizeof(bool));
26,825,173✔
472
  }
473
  return code;
26,838,304✔
474
}
475

476
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
99,327,648✔
477
  int8_t  value = 0;
99,327,648✔
478
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
99,327,648✔
479
  if (TSDB_CODE_SUCCESS == code) {
99,254,232!
480
    code = convertIntegerType(value, pValue, sizeof(bool));
99,264,904✔
481
  }
482
  return code;
99,262,607✔
483
}
484

485
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
10,790,993✔
486
  int32_t value = 0;
10,790,993✔
487
  int32_t code = tlvDecodeI32(pTlv, &value);
10,790,993✔
488
  if (TSDB_CODE_SUCCESS == code) {
10,789,417!
489
    code = convertIntegerType(value, pValue, len);
10,789,559✔
490
  }
491
  return code;
10,789,789✔
492
}
493

494
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
10,605,322✔
495
  int32_t value = 0;
10,605,322✔
496
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
10,605,322✔
497
  if (TSDB_CODE_SUCCESS == code) {
10,588,280!
498
    code = convertIntegerType(value, pValue, len);
10,588,626✔
499
  }
500
  return code;
10,584,998✔
501
}
502

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

511
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
68,131,117✔
512
  int16_t len = 0;
68,131,117✔
513
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
68,131,117✔
514
  if (TSDB_CODE_SUCCESS == code) {
68,820,604!
515
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
68,831,719✔
516
  }
517
  return code;
68,445,774✔
518
}
519

520
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
1,893,879✔
521
  *pValue = taosStrndup(pTlv->value, pTlv->len);
1,893,879!
522
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
1,912,006!
523
}
524

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

534
static int32_t tlvDecodeBinary(STlv* pTlv, void* pValue) {
285,198✔
535
  memcpy(pValue, pTlv->value, pTlv->len);
285,198✔
536
  return TSDB_CODE_SUCCESS;
285,198✔
537
}
538

539
static int32_t tlvDecodeObjFromTlv(STlv* pTlv, FToObject func, void* pObj) {
107,163,041✔
540
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
107,163,041✔
541
  return func(&decoder, pObj);
107,163,041✔
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) {
31,228✔
554
  int32_t code = TSDB_CODE_SUCCESS;
31,228✔
555
  int32_t i = 0;
31,228✔
556
  STlv*   pTlv = NULL;
31,228✔
557
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
63,070!
558
  return code;
31,252✔
559
}
560

561
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
2,281,814✔
562
                                   int32_t* pNum) {
563
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
2,281,814✔
564
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
4,183,804✔
565
    code = func(pDecoder, (char*)pArray + i * itemSize);
1,901,408✔
566
  }
567
  return code;
2,282,396✔
568
}
569

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

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

583
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
48,375,803✔
584
  STlv*   pTlv = NULL;
48,375,803✔
585
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
48,375,803✔
586
  if (TSDB_CODE_SUCCESS == code) {
48,317,524!
587
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
48,322,271✔
588
  }
589
  return code;
48,141,976✔
590
}
591

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

594
static int32_t dataTypeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,587,630✔
595
  const SDataType* pNode = (const SDataType*)pObj;
1,587,630✔
596

597
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
1,587,630✔
598
  if (TSDB_CODE_SUCCESS == code) {
1,582,464!
599
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
1,582,709✔
600
  }
601
  if (TSDB_CODE_SUCCESS == code) {
1,577,765!
602
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
1,578,148✔
603
  }
604
  if (TSDB_CODE_SUCCESS == code) {
1,566,322!
605
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
1,567,700✔
606
  }
607

608
  return code;
1,570,158✔
609
}
610

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

614
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
805,541✔
615
  if (TSDB_CODE_SUCCESS == code) {
808,080!
616
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
808,131✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
807,168!
619
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
807,277✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
805,084!
622
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
805,273✔
623
  }
624

625
  return code;
806,605✔
626
}
627

628
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
25,262,467✔
629
  SDataType* pNode = (SDataType*)pObj;
25,262,467✔
630

631
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
25,262,467✔
632
  if (TSDB_CODE_SUCCESS == code) {
25,236,931!
633
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
25,238,664✔
634
  }
635
  if (TSDB_CODE_SUCCESS == code) {
25,123,867!
636
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
25,130,069✔
637
  }
638
  if (TSDB_CODE_SUCCESS == code) {
25,052,153!
639
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
25,060,589✔
640
  }
641

642
  return code;
25,038,221✔
643
}
644

645
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
6,786,184✔
646
  SDataType* pNode = (SDataType*)pObj;
6,786,184✔
647

648
  int32_t code = TSDB_CODE_SUCCESS;
6,786,184✔
649
  STlv*   pTlv = NULL;
6,786,184✔
650
  tlvForEach(pDecoder, pTlv, code) {
33,855,879!
651
    switch (pTlv->type) {
27,081,586!
652
      case DATA_TYPE_CODE_TYPE:
6,781,956✔
653
        code = tlvDecodeI8(pTlv, &pNode->type);
6,781,956✔
654
        break;
6,776,505✔
655
      case DATA_TYPE_CODE_PRECISION:
6,772,082✔
656
        code = tlvDecodeU8(pTlv, &pNode->precision);
6,772,082✔
657
        break;
6,766,764✔
658
      case DATA_TYPE_CODE_SCALE:
6,765,566✔
659
        code = tlvDecodeU8(pTlv, &pNode->scale);
6,765,566✔
660
        break;
6,761,168✔
661
      case DATA_TYPE_CODE_BYTES:
6,761,982✔
662
        code = tlvDecodeI32(pTlv, &pNode->bytes);
6,761,982✔
663
        break;
6,765,258✔
664
      default:
×
665
        break;
×
666
    }
667
  }
668

669
  return code;
6,768,377✔
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) {
807,163✔
675
  const SExprNode* pNode = (const SExprNode*)pObj;
807,163✔
676
  int32_t          code = tlvEncodeObj(pEncoder, EXPR_CODE_RES_TYPE, dataTypeToMsg, &pNode->resType);
807,163✔
677
  if (TSDB_CODE_SUCCESS == code) {
806,737!
678
    code = tlvEncodeI32(pEncoder, EXPR_CODE_BIND_TUPLE_FUNC_IDX, pNode->relatedTo);
806,757✔
679
  }
680
  if (TSDB_CODE_SUCCESS == code) {
807,173!
681
    code = tlvEncodeI32(pEncoder, EXPR_CODE_TUPLE_FUNC_IDX, pNode->bindExprID);
807,256✔
682
  }
683
  return code;
806,610✔
684
}
685

686
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
6,788,544✔
687
  SExprNode* pNode = (SExprNode*)pObj;
6,788,544✔
688

689
  int32_t code = TSDB_CODE_SUCCESS;
6,788,544✔
690
  STlv*   pTlv = NULL;
6,788,544✔
691
  tlvForEach(pDecoder, pTlv, code) {
27,078,589!
692
    switch (pTlv->type) {
20,317,922!
693
      case EXPR_CODE_RES_TYPE:
6,786,880✔
694
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
6,786,880✔
695
        break;
6,763,605✔
696
      case EXPR_CODE_BIND_TUPLE_FUNC_IDX:
6,763,690✔
697
        code = tlvDecodeI32(pTlv, &pNode->relatedTo);
6,763,690✔
698
        break;
6,762,252✔
699
      case EXPR_CODE_TUPLE_FUNC_IDX:
6,767,352✔
700
        code = tlvDecodeI32(pTlv, &pNode->bindExprID);
6,767,352✔
701
        break;
6,764,188✔
702
      default:
×
703
        break;
×
704
    }
705
  }
706

707
  return code;
6,749,067✔
708
}
709

710
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
711

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

715
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
590,692✔
716
  if (TSDB_CODE_SUCCESS == code) {
584,822!
717
    code = tlvEncodeValueI32(pEncoder, pNode->node.relatedTo);
584,867✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
583,466!
720
    code = tlvEncodeValueI32(pEncoder, pNode->node.bindExprID);
583,772✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
582,811!
723
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
583,213✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
583,363!
726
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
583,817✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
582,583!
729
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
583,064✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
583,055!
732
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
583,736✔
733
  }
734
  if (TSDB_CODE_SUCCESS == code) {
582,956!
735
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
583,703✔
736
  }
737
  if (TSDB_CODE_SUCCESS == code) {
584,431!
738
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
585,270✔
739
  }
740
  if (TSDB_CODE_SUCCESS == code) {
584,889!
741
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
585,810✔
742
  }
743
  if (TSDB_CODE_SUCCESS == code) {
584,970!
744
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
586,005✔
745
  }
746
  if (TSDB_CODE_SUCCESS == code) {
585,686!
747
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
586,873✔
748
  }
749
  if (TSDB_CODE_SUCCESS == code) {
583,615!
750
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
586,021✔
751
  }
752
  if (TSDB_CODE_SUCCESS == code) {
581,701!
753
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
584,395✔
754
  }
755
  if (TSDB_CODE_SUCCESS == code) {
582,870!
756
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
585,608✔
757
  }  
758
  if (TSDB_CODE_SUCCESS == code) {
579,916!
759
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
582,903✔
760
  }
761
  if (TSDB_CODE_SUCCESS == code) {
581,373!
762
    code = tlvEncodeValueBool(pEncoder, pNode->isPrimTs);
585,039✔
763
  }
764
  if (TSDB_CODE_SUCCESS == code) {
580,532!
765
    code = tlvEncodeValueBool(pEncoder, pNode->hasDep);
584,239✔
766
  }
767
  if (TSDB_CODE_SUCCESS == code) {
578,099!
768
    code = tlvEncodeValueBool(pEncoder, pNode->hasRef);
581,925✔
769
  }
770
  if (TSDB_CODE_SUCCESS == code) {
578,039!
771
    code = tlvEncodeValueCStr(pEncoder, pNode->refDbName);
582,046✔
772
  }
773
  if (TSDB_CODE_SUCCESS == code) {
580,419!
774
    code = tlvEncodeValueCStr(pEncoder, pNode->refTableName);
584,474✔
775
  }
776
  if (TSDB_CODE_SUCCESS == code) {
578,722!
777
    code = tlvEncodeValueCStr(pEncoder, pNode->refColName);
582,835✔
778
  }
779
  return code;
582,580✔
780
}
781

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

786
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
9,114,200✔
787
  SColumnNode* pNode = (SColumnNode*)pObj;
9,114,200✔
788

789
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
9,114,200✔
790
    if (TSDB_CODE_SUCCESS == code) {
9,092,057!
791
    code = tlvDecodeValueI32(pDecoder, &pNode->node.relatedTo);
9,092,246✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
9,084,603!
794
    code = tlvDecodeValueI32(pDecoder, &pNode->node.bindExprID);
9,088,058✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
9,078,138!
797
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
9,082,185✔
798
  }
799
  if (TSDB_CODE_SUCCESS == code) {
9,088,147!
800
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
9,092,507✔
801
  }
802
  if (TSDB_CODE_SUCCESS == code) {
9,111,172!
803
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
9,116,510✔
804
  }
805
  if (TSDB_CODE_SUCCESS == code) {
9,161,773!
806
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
9,165,900✔
807
  }
808
  if (TSDB_CODE_SUCCESS == code) {
9,139,980!
809
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
9,144,261✔
810
  }
811
  if (TSDB_CODE_SUCCESS == code) {
9,141,601!
812
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
9,146,050✔
813
  }
814
  if (TSDB_CODE_SUCCESS == code) {
9,142,767!
815
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
9,147,460✔
816
  }
817
  if (TSDB_CODE_SUCCESS == code) {
9,144,853!
818
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
9,149,314✔
819
  }
820
  if (TSDB_CODE_SUCCESS == code) {
9,147,939!
821
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
9,152,554✔
822
  }
823
  if (TSDB_CODE_SUCCESS == code) {
9,163,176!
824
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
9,168,354✔
825
  }
826
  if (TSDB_CODE_SUCCESS == code) {
9,163,944!
827
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
9,169,577✔
828
  }
829
  if (TSDB_CODE_SUCCESS == code) {
9,142,789!
830
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
9,147,982✔
831
  }  
832
  if (TSDB_CODE_SUCCESS == code) {
9,127,045!
833
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
9,132,722✔
834
  }
835
  if (TSDB_CODE_SUCCESS == code) {
9,163,546!
836
    code = tlvDecodeValueBool(pDecoder, &pNode->isPrimTs);
9,169,638✔
837
  }
838
  if (TSDB_CODE_SUCCESS == code) {
9,139,425!
839
    code = tlvDecodeValueBool(pDecoder, &pNode->hasDep);
9,145,798✔
840
  }
841
  if (TSDB_CODE_SUCCESS == code) {
9,122,063!
842
    code = tlvDecodeValueBool(pDecoder, &pNode->hasRef);
9,128,814✔
843
  }
844
  if (TSDB_CODE_SUCCESS == code) {
9,119,977!
845
    code = tlvDecodeValueCStr(pDecoder, pNode->refDbName);
9,127,261✔
846
  }
847
  if (TSDB_CODE_SUCCESS == code) {
9,143,020!
848
    code = tlvDecodeValueCStr(pDecoder, pNode->refTableName);
9,150,416✔
849
  }
850
  if (TSDB_CODE_SUCCESS == code) {
9,143,829!
851
    code = tlvDecodeValueCStr(pDecoder, pNode->refColName);
9,151,342✔
852
  }
853
  return code;
9,155,473✔
854
}
855

856
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
9,113,502✔
857
  SColumnNode* pNode = (SColumnNode*)pObj;
9,113,502✔
858

859
  int32_t code = TSDB_CODE_SUCCESS;
9,113,502✔
860
  STlv*   pTlv = NULL;
9,113,502✔
861
  tlvForEach(pDecoder, pTlv, code) {
18,267,609!
862
    switch (pTlv->type) {
9,115,336!
863
      case COLUMN_CODE_INLINE_ATTRS:
9,115,336✔
864
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
9,115,336✔
865
        break;
9,154,107✔
866
      default:
×
867
        break;
×
868
    }
869
  }
870

871
  return code;
9,146,138✔
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) {
681,489✔
885
  const SValueNode* pNode = (const SValueNode*)pObj;
681,489✔
886

887
  int32_t code = TSDB_CODE_SUCCESS;
681,489✔
888
  switch (pNode->node.resType.type) {
681,489!
889
    case TSDB_DATA_TYPE_NULL:
×
890
      break;
×
891
    case TSDB_DATA_TYPE_BOOL:
842✔
892
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
842✔
893
      break;
842✔
894
    case TSDB_DATA_TYPE_TINYINT:
667,162✔
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);
667,162✔
900
      break;
669,935✔
901
    case TSDB_DATA_TYPE_UTINYINT:
4✔
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);
4✔
906
      break;
4✔
907
    case TSDB_DATA_TYPE_FLOAT:
563✔
908
    case TSDB_DATA_TYPE_DOUBLE:
909
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
563✔
910
      break;
563✔
911
    case TSDB_DATA_TYPE_VARCHAR:
13,040✔
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));
13,040✔
916
      break;
13,048✔
917
    case TSDB_DATA_TYPE_JSON:
×
918
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
×
919
      break;
83✔
920
    case TSDB_DATA_TYPE_DECIMAL:
×
921
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, pNode->node.resType.bytes);
×
922
      break;
×
923
    case TSDB_DATA_TYPE_DECIMAL64:
×
924
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
×
925
      break;
×
926
    case TSDB_DATA_TYPE_BLOB:
×
927
      // todo
928
    default:
929
      break;
×
930
  }
931

932
  return code;
684,353✔
933
}
934

935
static int32_t valueNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
683,345✔
936
  const SValueNode* pNode = (const SValueNode*)pObj;
683,345✔
937

938
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
683,345✔
939
  if (TSDB_CODE_SUCCESS == code) {
682,977!
940
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
682,992✔
941
  }
942
  if (TSDB_CODE_SUCCESS == code) {
686,122!
943
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
686,160✔
944
  }
945
  if (TSDB_CODE_SUCCESS == code) {
683,407!
946
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
683,511✔
947
  }
948
  if (TSDB_CODE_SUCCESS == code) {
681,778!
949
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
681,926✔
950
  }
951
  if (TSDB_CODE_SUCCESS == code) {
679,730!
952
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
679,954✔
953
  }
954
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
680,132!
955
    code = datumToMsg(pNode, pEncoder);
680,415✔
956
  }
957

958
  return code;
684,071✔
959
}
960

961
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
2,671,328✔
962
  SValueNode* pNode = (SValueNode*)pObj;
2,671,328✔
963

964
  int32_t code = TSDB_CODE_SUCCESS;
2,671,328✔
965
  switch (pNode->node.resType.type) {
2,671,328!
966
    case TSDB_DATA_TYPE_NULL:
×
967
      break;
×
968
    case TSDB_DATA_TYPE_BOOL:
47,590✔
969
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
47,590✔
970
      *(bool*)&pNode->typeData = pNode->datum.b;
47,588✔
971
      break;
47,588✔
972
    case TSDB_DATA_TYPE_TINYINT:
886,066✔
973
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
886,066✔
974
      *(int8_t*)&pNode->typeData = pNode->datum.i;
886,133✔
975
      break;
886,133✔
976
    case TSDB_DATA_TYPE_SMALLINT:
46,952✔
977
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
46,952✔
978
      *(int16_t*)&pNode->typeData = pNode->datum.i;
46,953✔
979
      break;
46,953✔
980
    case TSDB_DATA_TYPE_INT:
55,103✔
981
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
55,103✔
982
      *(int32_t*)&pNode->typeData = pNode->datum.i;
55,111✔
983
      break;
55,111✔
984
    case TSDB_DATA_TYPE_BIGINT:
1,144,655✔
985
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,144,655✔
986
      *(int64_t*)&pNode->typeData = pNode->datum.i;
1,144,915✔
987
      break;
1,144,915✔
988
    case TSDB_DATA_TYPE_TIMESTAMP:
36,009✔
989
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
36,009✔
990
      *(int64_t*)&pNode->typeData = pNode->datum.i;
36,010✔
991
      break;
36,010✔
992
    case TSDB_DATA_TYPE_UTINYINT:
43✔
993
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
43✔
994
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
43✔
995
      break;
43✔
996
    case TSDB_DATA_TYPE_USMALLINT:
9✔
997
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
9✔
998
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
9✔
999
      break;
9✔
1000
    case TSDB_DATA_TYPE_UINT:
11✔
1001
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
11✔
1002
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
11✔
1003
      break;
11✔
1004
    case TSDB_DATA_TYPE_UBIGINT:
41✔
1005
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
41✔
1006
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
41✔
1007
      break;
41✔
1008
    case TSDB_DATA_TYPE_FLOAT:
388✔
1009
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
388✔
1010
      *(float*)&pNode->typeData = pNode->datum.d;
388✔
1011
      break;
388✔
1012
    case TSDB_DATA_TYPE_DOUBLE:
170,650✔
1013
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
170,650✔
1014
      *(double*)&pNode->typeData = pNode->datum.d;
170,681✔
1015
      break;
170,681✔
1016
    case TSDB_DATA_TYPE_NCHAR:
284,745✔
1017
    case TSDB_DATA_TYPE_VARCHAR:
1018
    case TSDB_DATA_TYPE_VARBINARY:
1019
    case TSDB_DATA_TYPE_GEOMETRY: {
1020
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
284,745!
1021
        code = TSDB_CODE_FAILED;
×
1022
        break;
×
1023
      }
1024
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
284,745!
1025
      if (NULL == pNode->datum.p) {
285,097!
1026
        code = terrno;
×
1027
        break;
×
1028
      }
1029
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
285,097✔
1030
      if (TSDB_CODE_SUCCESS == code) {
285,038!
1031
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
285,044✔
1032
      }
1033
      break;
285,038✔
1034
    }
1035
    case TSDB_DATA_TYPE_JSON: {
9✔
1036
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
9!
1037
        code = TSDB_CODE_FAILED;
×
1038
        break;
×
1039
      }
1040
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
9✔
1041
      break;
9✔
1042
    }
1043
    case TSDB_DATA_TYPE_DECIMAL:
×
1044
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
×
1045
      if (!pNode->datum.p) {
×
1046
        code = terrno;
×
1047
        break;
×
1048
      }
1049
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
×
1050
      break;
×
1051
    case TSDB_DATA_TYPE_DECIMAL64:
×
1052
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
×
1053
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
1054
      break;
×
1055
    case TSDB_DATA_TYPE_BLOB:
×
1056
      // todo
1057
    default:
1058
      break;
×
1059
  }
1060

1061
  return code;
2,671,987✔
1062
}
1063

1064
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
2,684,803✔
1065
  SValueNode* pNode = (SValueNode*)pObj;
2,684,803✔
1066

1067
  int32_t code = TSDB_CODE_SUCCESS;
2,684,803✔
1068
  STlv*   pTlv = NULL;
2,684,803✔
1069
  tlvForEach(pDecoder, pTlv, code) {
20,643,479!
1070
    switch (pTlv->type) {
17,960,757!
1071
      case VALUE_CODE_EXPR_BASE:
2,682,827✔
1072
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,682,827✔
1073
        break;
2,668,630✔
1074
      case VALUE_CODE_LITERAL:
1,893,359✔
1075
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
1,893,359✔
1076
        break;
1,911,467✔
1077
      case VALUE_CODE_FLAG:
2,685,182✔
1078
        code = tlvDecodeI32(pTlv, &pNode->flag);
2,685,182✔
1079
        break;
2,679,773✔
1080
      case VALUE_CODE_TRANSLATE:
2,678,166✔
1081
        code = tlvDecodeBool(pTlv, &pNode->translate);
2,678,166✔
1082
        break;
2,676,113✔
1083
      case VALUE_CODE_NOT_RESERVED:
2,675,484✔
1084
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
2,675,484✔
1085
        break;
2,675,135✔
1086
      case VALUE_CODE_IS_NULL:
2,674,679✔
1087
        code = tlvDecodeBool(pTlv, &pNode->isNull);
2,674,679✔
1088
        break;
2,675,637✔
1089
      case VALUE_CODE_DATUM:
2,671,060✔
1090
        code = msgToDatum(pTlv, pNode);
2,671,060✔
1091
        break;
2,671,921✔
1092
      default:
×
1093
        break;
×
1094
    }
1095
  }
1096

1097
  return code;
2,664,468✔
1098
}
1099

1100
enum { OPERATOR_CODE_EXPR_BASE = 1, OPERATOR_CODE_OP_TYPE, OPERATOR_CODE_LEFT, OPERATOR_CODE_RIGHT };
1101

1102
static int32_t operatorNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
44,940✔
1103
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
44,940✔
1104

1105
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
44,940✔
1106
  if (TSDB_CODE_SUCCESS == code) {
44,929!
1107
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
44,934✔
1108
  }
1109
  if (TSDB_CODE_SUCCESS == code) {
44,880!
1110
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
44,887✔
1111
  }
1112
  if (TSDB_CODE_SUCCESS == code) {
44,751!
1113
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
44,765✔
1114
  }
1115

1116
  return code;
44,843✔
1117
}
1118

1119
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
1,246,484✔
1120
  SOperatorNode* pNode = (SOperatorNode*)pObj;
1,246,484✔
1121

1122
  int32_t code = TSDB_CODE_SUCCESS;
1,246,484✔
1123
  STlv*   pTlv = NULL;
1,246,484✔
1124
  tlvForEach(pDecoder, pTlv, code) {
6,110,064!
1125
    switch (pTlv->type) {
4,863,417!
1126
      case OPERATOR_CODE_EXPR_BASE:
1,246,485✔
1127
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
1,246,485✔
1128
        break;
1,245,511✔
1129
      case OPERATOR_CODE_OP_TYPE:
1,245,541✔
1130
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
1,245,541✔
1131
        break;
1,246,045✔
1132
      case OPERATOR_CODE_LEFT:
1,245,997✔
1133
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
1,245,997✔
1134
        break;
1,247,041✔
1135
      case OPERATOR_CODE_RIGHT:
1,125,394✔
1136
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
1,125,394✔
1137
        break;
1,124,983✔
1138
      default:
×
1139
        break;
×
1140
    }
1141
  }
1142

1143
  return code;
1,245,285✔
1144
}
1145

1146
enum { LOGIC_COND_CODE_EXPR_BASE = 1, LOGIC_COND_CODE_COND_TYPE, LOGIC_COND_CODE_PARAMETERS };
1147

1148
static int32_t logicConditionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,611✔
1149
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
9,611✔
1150

1151
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
9,611✔
1152
  if (TSDB_CODE_SUCCESS == code) {
9,598!
1153
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
9,598✔
1154
  }
1155
  if (TSDB_CODE_SUCCESS == code) {
9,595!
1156
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
9,597✔
1157
  }
1158

1159
  return code;
9,603✔
1160
}
1161

1162
static int32_t msgToLogicConditionNode(STlvDecoder* pDecoder, void* pObj) {
249,182✔
1163
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
249,182✔
1164

1165
  int32_t code = TSDB_CODE_SUCCESS;
249,182✔
1166
  STlv*   pTlv = NULL;
249,182✔
1167
  tlvForEach(pDecoder, pTlv, code) {
996,712!
1168
    switch (pTlv->type) {
747,432!
1169
      case LOGIC_COND_CODE_EXPR_BASE:
249,184✔
1170
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
249,184✔
1171
        break;
249,101✔
1172
      case LOGIC_COND_CODE_COND_TYPE:
249,106✔
1173
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
249,106✔
1174
        break;
249,141✔
1175
      case LOGIC_COND_CODE_PARAMETERS:
249,142✔
1176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
249,142✔
1177
        break;
249,288✔
1178
      default:
×
1179
        break;
×
1180
    }
1181
  }
1182

1183
  return code;
249,197✔
1184
}
1185

1186
enum {
1187
  FUNCTION_CODE_EXPR_BASE = 1,
1188
  FUNCTION_CODE_FUNCTION_NAME,
1189
  FUNCTION_CODE_FUNCTION_ID,
1190
  FUNCTION_CODE_FUNCTION_TYPE,
1191
  FUNCTION_CODE_PARAMETERS,
1192
  FUNCTION_CODE_UDF_BUF_SIZE,
1193
  FUNCTION_NODE_HAS_PK,
1194
  FUNCTION_NODE_PK_BYTES,
1195
  FUNCTION_CODE_IS_MERGE_FUNC,
1196
  FUNCTION_CODE_MERGE_FUNC_OF,
1197
  FUNCTION_CODE_TRIM_TYPE,
1198
  FUNCTION_SRC_FUNC_INPUT_TYPE,
1199
};
1200

1201
static int32_t functionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
70,037✔
1202
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
70,037✔
1203

1204
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
70,037✔
1205
  if (TSDB_CODE_SUCCESS == code) {
70,038!
1206
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
70,048✔
1207
  }
1208
  if (TSDB_CODE_SUCCESS == code) {
70,048!
1209
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
70,058✔
1210
  }
1211
  if (TSDB_CODE_SUCCESS == code) {
70,051!
1212
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
70,066✔
1213
  }
1214
  if (TSDB_CODE_SUCCESS == code) {
70,023!
1215
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
70,041✔
1216
  }
1217
  if (TSDB_CODE_SUCCESS == code) {
69,987!
1218
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
70,010✔
1219
  }
1220
  if (TSDB_CODE_SUCCESS == code) {
70,108!
1221
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
70,130✔
1222
  }
1223
  if (TSDB_CODE_SUCCESS == code) {
70,082!
1224
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
70,109✔
1225
  }  
1226
  if (TSDB_CODE_SUCCESS == code) {
70,078!
1227
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
70,109✔
1228
  }
1229
  if (TSDB_CODE_SUCCESS == code) {
70,065!
1230
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
70,103✔
1231
  }
1232
  if (TSDB_CODE_SUCCESS == code) {
70,067!
1233
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
70,101✔
1234
  }
1235
  if (TSDB_CODE_SUCCESS == code) {
70,081!
1236
    code = tlvEncodeObj(pEncoder, FUNCTION_SRC_FUNC_INPUT_TYPE, dataTypeInlineToMsg, &pNode->srcFuncInputType);
70,116✔
1237
  }
1238

1239
  return code;
70,023✔
1240
}
1241

1242
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
2,613,259✔
1243
  SFunctionNode* pNode = (SFunctionNode*)pObj;
2,613,259✔
1244

1245
  int32_t code = TSDB_CODE_SUCCESS;
2,613,259✔
1246
  STlv*   pTlv = NULL;
2,613,259✔
1247
  tlvForEach(pDecoder, pTlv, code) {
33,445,835!
1248
    switch (pTlv->type) {
30,379,744!
1249
      case FUNCTION_CODE_EXPR_BASE:
2,612,653✔
1250
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,612,653✔
1251
        break;
2,607,833✔
1252
      case FUNCTION_CODE_FUNCTION_NAME:
2,607,876✔
1253
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
2,607,876✔
1254
        break;
2,608,273✔
1255
      case FUNCTION_CODE_FUNCTION_ID:
2,607,770✔
1256
        code = tlvDecodeI32(pTlv, &pNode->funcId);
2,607,770✔
1257
        break;
2,607,712✔
1258
      case FUNCTION_CODE_FUNCTION_TYPE:
2,607,301✔
1259
        code = tlvDecodeI32(pTlv, &pNode->funcType);
2,607,301✔
1260
        break;
2,606,660✔
1261
      case FUNCTION_CODE_PARAMETERS:
2,111,589✔
1262
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
2,111,589✔
1263
        break;
2,118,104✔
1264
      case FUNCTION_CODE_UDF_BUF_SIZE:
2,615,379✔
1265
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
2,615,379✔
1266
        break;
2,614,128✔
1267
      case FUNCTION_NODE_HAS_PK:
2,613,506✔
1268
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
2,613,506✔
1269
        break;
2,612,917✔
1270
      case FUNCTION_NODE_PK_BYTES:
2,612,290✔
1271
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
2,612,290✔
1272
        break;  
2,612,481✔
1273
      case FUNCTION_CODE_IS_MERGE_FUNC:
2,612,077✔
1274
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
2,612,077✔
1275
        break;
2,612,119✔
1276
      case FUNCTION_CODE_MERGE_FUNC_OF:
2,611,599✔
1277
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
2,611,599✔
1278
        break;
2,611,550✔
1279
      case FUNCTION_CODE_TRIM_TYPE:
2,611,312✔
1280
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
2,611,312✔
1281
        break;
2,611,630✔
1282
      case FUNCTION_SRC_FUNC_INPUT_TYPE:
2,611,921✔
1283
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->srcFuncInputType);
2,611,921✔
1284
      default:
2,609,169✔
1285
        break;
2,609,169✔
1286
    }
1287
  }
1288

1289
  return code;
3,052,846✔
1290
}
1291

1292
enum { ORDER_BY_EXPR_CODE_EXPR = 1, ORDER_BY_EXPR_CODE_ORDER, ORDER_BY_EXPR_CODE_NULL_ORDER };
1293

1294
static int32_t orderByExprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
10,697✔
1295
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
10,697✔
1296

1297
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
10,697✔
1298
  if (TSDB_CODE_SUCCESS == code) {
10,696!
1299
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
10,696✔
1300
  }
1301
  if (TSDB_CODE_SUCCESS == code) {
10,698!
1302
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
10,698✔
1303
  }
1304

1305
  return code;
10,702✔
1306
}
1307

1308
static int32_t msgToOrderByExprNode(STlvDecoder* pDecoder, void* pObj) {
239,308✔
1309
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
239,308✔
1310

1311
  int32_t code = TSDB_CODE_SUCCESS;
239,308✔
1312
  STlv*   pTlv = NULL;
239,308✔
1313
  tlvForEach(pDecoder, pTlv, code) {
957,233!
1314
    switch (pTlv->type) {
717,946!
1315
      case ORDER_BY_EXPR_CODE_EXPR:
239,312✔
1316
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
239,312✔
1317
        break;
239,315✔
1318
      case ORDER_BY_EXPR_CODE_ORDER:
239,317✔
1319
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
239,317✔
1320
        break;
239,318✔
1321
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
239,317✔
1322
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
239,317✔
1323
        break;
239,292✔
1324
      default:
×
1325
        break;
×
1326
    }
1327
  }
1328

1329
  return code;
239,277✔
1330
}
1331

1332
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1333

1334
static int32_t limitNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,706✔
1335
  const SLimitNode* pNode = (const SLimitNode*)pObj;
9,706✔
1336

1337
  int32_t code = tlvEncodeObj(pEncoder, LIMIT_CODE_LIMIT, nodeToMsg, pNode->limit);
9,706✔
1338
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
9,704!
1339
    code = tlvEncodeObj(pEncoder, LIMIT_CODE_OFFSET, nodeToMsg, pNode->offset);
1,678✔
1340
  }
1341

1342
  return code;
9,702✔
1343
}
1344

1345
static int32_t msgToLimitNode(STlvDecoder* pDecoder, void* pObj) {
145,863✔
1346
  SLimitNode* pNode = (SLimitNode*)pObj;
145,863✔
1347

1348
  int32_t code = TSDB_CODE_SUCCESS;
145,863✔
1349
  STlv*   pTlv = NULL;
145,863✔
1350
  tlvForEach(pDecoder, pTlv, code) {
352,911!
1351
    switch (pTlv->type) {
207,147!
1352
      case LIMIT_CODE_LIMIT:
145,860✔
1353
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->limit);
145,860✔
1354
        break;
145,760✔
1355
      case LIMIT_CODE_OFFSET:
61,287✔
1356
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->offset);
61,287✔
1357
        break;
61,288✔
1358
      default:
×
1359
        break;
×
1360
    }
1361
  }
1362

1363
  return code;
145,740✔
1364
}
1365

1366
enum { NAME_CODE_TYPE = 1, NAME_CODE_ACCT_ID, NAME_CODE_DB_NAME, NAME_CODE_TABLE_NAME };
1367

1368
static int32_t nameToMsg(const void* pObj, STlvEncoder* pEncoder) {
68,617✔
1369
  const SName* pNode = (const SName*)pObj;
68,617✔
1370

1371
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
68,617✔
1372
  if (TSDB_CODE_SUCCESS == code) {
68,777!
1373
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
68,813✔
1374
  }
1375
  if (TSDB_CODE_SUCCESS == code) {
68,920✔
1376
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
68,912✔
1377
  }
1378
  if (TSDB_CODE_SUCCESS == code) {
68,942!
1379
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
68,949✔
1380
  }
1381

1382
  return code;
68,879✔
1383
}
1384

1385
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
1,057,684✔
1386
  SName* pNode = (SName*)pObj;
1,057,684✔
1387

1388
  int32_t code = TSDB_CODE_SUCCESS;
1,057,684✔
1389
  STlv*   pTlv = NULL;
1,057,684✔
1390
  tlvForEach(pDecoder, pTlv, code) {
5,288,587✔
1391
    switch (pTlv->type) {
4,231,081!
1392
      case NAME_CODE_TYPE:
1,057,821✔
1393
        code = tlvDecodeU8(pTlv, &pNode->type);
1,057,821✔
1394
        break;
1,057,870✔
1395
      case NAME_CODE_ACCT_ID:
1,057,833✔
1396
        code = tlvDecodeI32(pTlv, &pNode->acctId);
1,057,833✔
1397
        break;
1,057,781✔
1398
      case NAME_CODE_DB_NAME:
1,057,797✔
1399
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
1,057,797✔
1400
        break;
1,057,607✔
1401
      case NAME_CODE_TABLE_NAME:
1,057,630✔
1402
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
1,057,630✔
1403
        break;
1,057,645✔
1404
      default:
×
1405
        break;
×
1406
    }
1407
  }
1408

1409
  return code;
1,057,857✔
1410
}
1411

1412
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1413

1414
static int32_t timeWindowToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,891✔
1415
  const STimeWindow* pNode = (const STimeWindow*)pObj;
4,891✔
1416

1417
  int32_t code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_START_KEY, pNode->skey);
4,891✔
1418
  if (TSDB_CODE_SUCCESS == code) {
4,896!
1419
    code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_END_KEY, pNode->ekey);
4,896✔
1420
  }
1421

1422
  return code;
4,897✔
1423
}
1424

1425
static int32_t msgToTimeWindow(STlvDecoder* pDecoder, void* pObj) {
33,445✔
1426
  STimeWindow* pNode = (STimeWindow*)pObj;
33,445✔
1427

1428
  int32_t code = TSDB_CODE_SUCCESS;
33,445✔
1429
  STlv*   pTlv = NULL;
33,445✔
1430
  tlvForEach(pDecoder, pTlv, code) {
100,342!
1431
    switch (pTlv->type) {
66,898!
1432
      case TIME_WINDOW_CODE_START_KEY:
33,450✔
1433
        code = tlvDecodeI64(pTlv, &pNode->skey);
33,450✔
1434
        break;
33,450✔
1435
      case TIME_WINDOW_CODE_END_KEY:
33,448✔
1436
        code = tlvDecodeI64(pTlv, &pNode->ekey);
33,448✔
1437
        break;
33,447✔
1438
      default:
×
1439
        break;
×
1440
    }
1441
  }
1442

1443
  return code;
33,444✔
1444
}
1445

1446
enum { NODE_LIST_CODE_DATA_TYPE = 1, NODE_LIST_CODE_NODE_LIST };
1447

1448
static int32_t nodeListNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,281✔
1449
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
1,281✔
1450

1451
  int32_t code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_DATA_TYPE, dataTypeInlineToMsg, &pNode->node.resType);
1,281✔
1452
  if (TSDB_CODE_SUCCESS == code) {
1,279!
1453
    code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_NODE_LIST, nodeListToMsg, pNode->pNodeList);
1,279✔
1454
  }
1455

1456
  return code;
1,280✔
1457
}
1458

1459
static int32_t msgToNodeListNode(STlvDecoder* pDecoder, void* pObj) {
37,552✔
1460
  SNodeListNode* pNode = (SNodeListNode*)pObj;
37,552✔
1461

1462
  int32_t code = TSDB_CODE_SUCCESS;
37,552✔
1463
  STlv*   pTlv = NULL;
37,552✔
1464
  tlvForEach(pDecoder, pTlv, code) {
112,665!
1465
    switch (pTlv->type) {
75,102!
1466
      case NODE_LIST_CODE_DATA_TYPE:
37,556✔
1467
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
37,556✔
1468
        break;
37,546✔
1469
      case NODE_LIST_CODE_NODE_LIST:
37,546✔
1470
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
37,546✔
1471
        break;
37,567✔
1472
      default:
×
1473
        break;
×
1474
    }
1475
  }
1476

1477
  return code;
37,556✔
1478
}
1479

1480
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1481

1482
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
497,065✔
1483
  const STargetNode* pNode = (const STargetNode*)pObj;
497,065✔
1484

1485
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
497,065✔
1486
  if (TSDB_CODE_SUCCESS == code) {
497,568!
1487
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
497,630✔
1488
  }
1489

1490
  return code;
495,751✔
1491
}
1492

1493
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
494,862✔
1494
  const STargetNode* pNode = (const STargetNode*)pObj;
494,862✔
1495

1496
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
494,862✔
1497
  if (TSDB_CODE_SUCCESS == code) {
496,576!
1498
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
496,649✔
1499
  }
1500

1501
  return code;
491,401✔
1502
}
1503

1504
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
7,460,171✔
1505
  STargetNode* pNode = (STargetNode*)pObj;
7,460,171✔
1506

1507
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
7,460,171✔
1508
  if (TSDB_CODE_SUCCESS == code) {
7,486,873!
1509
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
7,487,675✔
1510
  }
1511

1512
  return code;
7,485,292✔
1513
}
1514

1515
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
7,468,315✔
1516
  STargetNode* pNode = (STargetNode*)pObj;
7,468,315✔
1517

1518
  int32_t code = TSDB_CODE_SUCCESS;
7,468,315✔
1519
  STlv*   pTlv = NULL;
7,468,315✔
1520
  tlvForEach(pDecoder, pTlv, code) {
22,410,993!
1521
    switch (pTlv->type) {
14,939,491!
1522
      case TARGET_CODE_INLINE_ATTRS:
7,462,589✔
1523
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
7,462,589✔
1524
        break;
7,483,809✔
1525
      case TARGET_CODE_EXPR:
7,476,902✔
1526
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
7,476,902✔
1527
        break;
7,458,869✔
1528
      default:
×
1529
        break;
×
1530
    }
1531
  }
1532

1533
  return code;
7,439,953✔
1534
}
1535

1536
enum { TIME_RANGE_CODE_START = 1,
1537
       TIME_RANGE_CODE_END };
1538

1539
static int32_t timeRangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1540
  const STimeRangeNode* pNode = (const STimeRangeNode*)pObj;
×
1541

1542
  int32_t code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_START, nodeToMsg, pNode->pStart);
×
1543
  if (TSDB_CODE_SUCCESS == code) {
×
1544
    code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_END, nodeToMsg, pNode->pEnd);
×
1545
  }
1546

1547
  return code;
×
1548
}
1549

1550
static int32_t msgToTimeRangeNode(STlvDecoder* pDecoder, void* pObj) {
×
1551
  STimeRangeNode* pNode = (STimeRangeNode*)pObj;
×
1552

1553
  int32_t code = TSDB_CODE_SUCCESS;
×
1554
  STlv*   pTlv = NULL;
×
1555
  tlvForEach(pDecoder, pTlv, code) {
×
1556
    switch (pTlv->type) {
×
1557
      case TIME_RANGE_CODE_START:
×
1558
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStart);
×
1559
        break;
×
1560
      case TIME_RANGE_CODE_END:
×
1561
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEnd);
×
1562
        break;
×
1563
      default:
×
1564
        break;
×
1565
    }
1566
  }
1567

1568
  return code;
×
1569
}
1570

1571
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1572

1573
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
250,104✔
1574
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
250,104✔
1575

1576
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
250,104✔
1577
  if (TSDB_CODE_SUCCESS == code) {
249,509!
1578
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
249,547✔
1579
  }
1580
  if (TSDB_CODE_SUCCESS == code) {
249,299!
1581
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
249,319✔
1582
  }
1583
  if (TSDB_CODE_SUCCESS == code) {
248,979!
1584
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
249,064✔
1585
  }
1586

1587
  return code;
249,295✔
1588
}
1589

1590
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
250,363✔
1591
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
250,363✔
1592

1593
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
250,363✔
1594
  if (TSDB_CODE_SUCCESS == code) {
249,417!
1595
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
249,454✔
1596
  }
1597

1598
  return code;
249,151✔
1599
}
1600

1601
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
4,449,353✔
1602
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
4,449,353✔
1603

1604
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
4,449,353✔
1605
  if (TSDB_CODE_SUCCESS == code) {
4,452,195!
1606
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
4,452,290✔
1607
  }
1608
  if (TSDB_CODE_SUCCESS == code) {
4,448,946!
1609
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
4,449,077✔
1610
  }
1611
  if (TSDB_CODE_SUCCESS == code) {
4,447,170!
1612
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
4,447,342✔
1613
  }
1614

1615
  return code;
4,446,488✔
1616
}
1617

1618
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
4,450,285✔
1619
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
4,450,285✔
1620

1621
  int32_t code = TSDB_CODE_SUCCESS;
4,450,285✔
1622
  STlv*   pTlv = NULL;
4,450,285✔
1623
  tlvForEach(pDecoder, pTlv, code) {
13,346,904!
1624
    switch (pTlv->type) {
8,896,615!
1625
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
4,450,025✔
1626
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
4,450,025✔
1627
        break;
4,446,482✔
1628
      case DATA_BLOCK_DESC_CODE_SLOTS:
4,446,590✔
1629
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
4,446,590✔
1630
        break;
4,450,137✔
1631
      default:
×
1632
        break;
×
1633
    }
1634
  }
1635

1636
  return code;
4,447,942✔
1637
}
1638

1639
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1640

1641
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
936,606✔
1642
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
936,606✔
1643

1644
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
936,606✔
1645
  if (TSDB_CODE_SUCCESS == code) {
937,113!
1646
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
937,247✔
1647
  }
1648
  if (TSDB_CODE_SUCCESS == code) {
930,170!
1649
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
930,413✔
1650
  }
1651
  if (TSDB_CODE_SUCCESS == code) {
928,548!
1652
    code = tlvEncodeValueBool(pEncoder, pNode->output);
928,908✔
1653
  }
1654
  if (TSDB_CODE_SUCCESS == code) {
925,024!
1655
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
925,528✔
1656
  }
1657

1658
  return code;
924,866✔
1659
}
1660

1661
static int32_t slotDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
934,915✔
1662
  return tlvEncodeObj(pEncoder, SLOT_DESC_CODE_INLINE_ATTRS, slotDescNodeInlineToMsg, pObj);
934,915✔
1663
}
1664

1665
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
13,469,395✔
1666
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
13,469,395✔
1667

1668
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
13,469,395✔
1669
  if (TSDB_CODE_SUCCESS == code) {
13,554,300!
1670
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
13,555,533✔
1671
  }
1672
  if (TSDB_CODE_SUCCESS == code) {
13,419,083!
1673
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
13,420,039✔
1674
  }
1675
  if (TSDB_CODE_SUCCESS == code) {
13,432,798!
1676
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
13,434,092✔
1677
  }
1678
  if (TSDB_CODE_SUCCESS == code) {
13,432,103!
1679
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
13,434,241✔
1680
  }
1681

1682
  return code;
13,434,682✔
1683
}
1684

1685
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
13,485,581✔
1686
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
13,485,581✔
1687

1688
  int32_t code = TSDB_CODE_SUCCESS;
13,485,581✔
1689
  STlv*   pTlv = NULL;
13,485,581✔
1690
  tlvForEach(pDecoder, pTlv, code) {
26,921,756!
1691
    switch (pTlv->type) {
13,474,676!
1692
      case SLOT_DESC_CODE_INLINE_ATTRS:
13,474,676✔
1693
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
13,474,676✔
1694
        break;
13,436,175✔
1695
      default:
×
1696
        break;
×
1697
    }
1698
  }
1699

1700
  return code;
13,429,044✔
1701
}
1702

1703
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1704

1705
static int32_t epInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
119,599✔
1706
  const SEp* pNode = (const SEp*)pObj;
119,599✔
1707

1708
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
119,599✔
1709
  if (TSDB_CODE_SUCCESS == code) {
119,481!
1710
    code = tlvEncodeValueU16(pEncoder, pNode->port);
119,518✔
1711
  }
1712

1713
  return code;
119,598✔
1714
}
1715

1716
static int32_t epToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,405✔
1717
  const SEp* pNode = (const SEp*)pObj;
5,405✔
1718

1719
  int32_t code = tlvEncodeCStr(pEncoder, EP_CODE_FQDN, pNode->fqdn);
5,405✔
1720
  if (TSDB_CODE_SUCCESS == code) {
5,406!
1721
    code = tlvEncodeU16(pEncoder, EP_CODE_port, pNode->port);
5,406✔
1722
  }
1723

1724
  return code;
5,408✔
1725
}
1726

1727
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
1,901,154✔
1728
  SEp* pNode = (SEp*)pObj;
1,901,154✔
1729

1730
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
1,901,154✔
1731
  if (TSDB_CODE_SUCCESS == code) {
1,901,714!
1732
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
1,901,724✔
1733
  }
1734

1735
  return code;
1,901,821✔
1736
}
1737

1738
static int32_t msgToEp(STlvDecoder* pDecoder, void* pObj) {
31,839✔
1739
  SEp* pNode = (SEp*)pObj;
31,839✔
1740

1741
  int32_t code = TSDB_CODE_SUCCESS;
31,839✔
1742
  STlv*   pTlv = NULL;
31,839✔
1743
  tlvForEach(pDecoder, pTlv, code) {
95,541!
1744
    switch (pTlv->type) {
63,689!
1745
      case EP_CODE_FQDN:
31,844✔
1746
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
31,844✔
1747
        break;
31,843✔
1748
      case EP_CODE_port:
31,845✔
1749
        code = tlvDecodeU16(pTlv, &pNode->port);
31,845✔
1750
        break;
31,859✔
1751
      default:
×
1752
        break;
×
1753
    }
1754
  }
1755

1756
  return code;
31,856✔
1757
}
1758

1759
enum { EP_SET_CODE_IN_USE = 1, EP_SET_CODE_NUM_OF_EPS, EP_SET_CODE_EPS };
1760

1761
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
127,030✔
1762
  const SEpSet* pNode = (const SEpSet*)pObj;
127,030✔
1763

1764
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
127,030✔
1765
  if (TSDB_CODE_SUCCESS == code) {
126,870!
1766
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
126,896✔
1767
  }
1768

1769
  return code;
127,153✔
1770
}
1771

1772
static int32_t epSetToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,192✔
1773
  const SEpSet* pNode = (const SEpSet*)pObj;
5,192✔
1774

1775
  int32_t code = tlvEncodeI8(pEncoder, EP_SET_CODE_IN_USE, pNode->inUse);
5,192✔
1776
  if (TSDB_CODE_SUCCESS == code) {
5,189!
1777
    code = tlvEncodeI8(pEncoder, EP_SET_CODE_NUM_OF_EPS, pNode->numOfEps);
5,189✔
1778
  }
1779
  if (TSDB_CODE_SUCCESS == code) {
5,187!
1780
    code = tlvEncodeObjArray(pEncoder, EP_SET_CODE_EPS, epToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
5,188✔
1781
  }
1782

1783
  return code;
5,199✔
1784
}
1785

1786
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
2,281,885✔
1787
  SEpSet* pNode = (SEpSet*)pObj;
2,281,885✔
1788

1789
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
2,281,885✔
1790
  if (TSDB_CODE_SUCCESS == code) {
2,282,021✔
1791
    int32_t numOfEps = 0;
2,282,007✔
1792
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
2,282,007✔
1793
    pNode->numOfEps = numOfEps;
2,282,466✔
1794
  }
1795

1796
  return code;
2,282,480✔
1797
}
1798

1799
static int32_t msgToEpSet(STlvDecoder* pDecoder, void* pObj) {
31,234✔
1800
  SEpSet* pNode = (SEpSet*)pObj;
31,234✔
1801

1802
  int32_t code = TSDB_CODE_SUCCESS;
31,234✔
1803
  STlv*   pTlv = NULL;
31,234✔
1804
  tlvForEach(pDecoder, pTlv, code) {
124,967!
1805
    switch (pTlv->type) {
93,721!
1806
      case EP_SET_CODE_IN_USE:
31,239✔
1807
        code = tlvDecodeI8(pTlv, &pNode->inUse);
31,239✔
1808
        break;
31,243✔
1809
      case EP_SET_CODE_NUM_OF_EPS:
31,244✔
1810
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
31,244✔
1811
        break;
31,238✔
1812
      case EP_SET_CODE_EPS:
31,238✔
1813
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
31,238✔
1814
        break;
31,252✔
1815
      default:
×
1816
        break;
×
1817
    }
1818
  }
1819

1820
  return code;
31,250✔
1821
}
1822

1823
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1824

1825
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
126,822✔
1826
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
126,822✔
1827

1828
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
126,822✔
1829
  if (TSDB_CODE_SUCCESS == code) {
127,029!
1830
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
127,055✔
1831
  }
1832

1833
  return code;
127,156✔
1834
}
1835

1836
static int32_t queryNodeAddrToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1837
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
×
1838

1839
  int32_t code = tlvEncodeI32(pEncoder, QUERY_NODE_ADDR_CODE_NODE_ID, pNode->nodeId);
×
1840
  if (TSDB_CODE_SUCCESS == code) {
×
1841
    code = tlvEncodeObj(pEncoder, QUERY_NODE_ADDR_CODE_EP_SET, epSetToMsg, &pNode->epSet);
×
1842
  }
1843

1844
  return code;
×
1845
}
1846

1847
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
2,281,777✔
1848
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
2,281,777✔
1849

1850
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
2,281,777✔
1851
  if (TSDB_CODE_SUCCESS == code) {
2,282,068!
1852
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
2,282,098✔
1853
  }
1854

1855
  return code;
2,282,480✔
1856
}
1857

1858
static int32_t msgToQueryNodeAddr(STlvDecoder* pDecoder, void* pObj) {
×
1859
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
×
1860

1861
  int32_t code = TSDB_CODE_SUCCESS;
×
1862
  STlv*   pTlv = NULL;
×
1863
  tlvForEach(pDecoder, pTlv, code) {
×
1864
    switch (pTlv->type) {
×
1865
      case QUERY_NODE_ADDR_CODE_NODE_ID:
×
1866
        code = tlvDecodeI32(pTlv, &pNode->nodeId);
×
1867
        break;
×
1868
      case QUERY_NODE_ADDR_CODE_EP_SET:
×
1869
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
×
1870
        break;
×
1871
    }
1872
  }
1873

1874
  return code;
×
1875
}
1876

1877
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1878

1879
static int32_t downstreamSourceNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
47,129✔
1880
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
47,129✔
1881

1882
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
47,129✔
1883
  if (TSDB_CODE_SUCCESS == code) {
47,116!
1884
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
47,116✔
1885
  }
1886
  if (TSDB_CODE_SUCCESS == code) {
47,118!
1887
    code = tlvEncodeValueU64(pEncoder, pNode->sId);
47,118✔
1888
  }
1889
  if (TSDB_CODE_SUCCESS == code) {
47,121!
1890
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
47,121✔
1891
  }
1892
  if (TSDB_CODE_SUCCESS == code) {
47,124!
1893
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
47,124✔
1894
  }
1895
  if (TSDB_CODE_SUCCESS == code) {
47,119!
1896
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
47,119✔
1897
  }
1898

1899
  return code;
47,120✔
1900
}
1901

1902
static int32_t downstreamSourceNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
47,130✔
1903
  return tlvEncodeObj(pEncoder, DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS, downstreamSourceNodeInlineToMsg, pObj);
47,130✔
1904
}
1905

1906
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
838,270✔
1907
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
838,270✔
1908

1909
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
838,270✔
1910
  if (TSDB_CODE_SUCCESS == code) {
838,392!
1911
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
838,392✔
1912
  }
1913
  if (TSDB_CODE_SUCCESS == code) {
838,384✔
1914
    code = tlvDecodeValueU64(pDecoder, &pNode->sId);
838,368✔
1915
  }
1916
  if (TSDB_CODE_SUCCESS == code) {
838,372✔
1917
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
838,357✔
1918
  }
1919
  if (TSDB_CODE_SUCCESS == code) {
838,342✔
1920
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
838,329✔
1921
  }
1922
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
838,288✔
1923
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
838,274✔
1924
  }
1925

1926
  return code;
838,280✔
1927
}
1928

1929
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
838,267✔
1930
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
838,267✔
1931

1932
  int32_t code = TSDB_CODE_SUCCESS;
838,267✔
1933
  STlv*   pTlv = NULL;
838,267✔
1934
  tlvForEach(pDecoder, pTlv, code) {
1,676,546!
1935
    switch (pTlv->type) {
838,281!
1936
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
838,281✔
1937
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
838,281✔
1938
        break;
838,279✔
1939
      default:
×
1940
        break;
×
1941
    }
1942
  }
1943

1944
  return code;
838,277✔
1945
}
1946

1947
enum { WHEN_THEN_CODE_EXPR_BASE = 1, WHEN_THEN_CODE_WHEN, WHEN_THEN_CODE_THEN };
1948

1949
static int32_t whenThenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
107✔
1950
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
107✔
1951

1952
  int32_t code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
107✔
1953
  if (TSDB_CODE_SUCCESS == code) {
107!
1954
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_WHEN, nodeToMsg, pNode->pWhen);
107✔
1955
  }
1956
  if (TSDB_CODE_SUCCESS == code) {
107!
1957
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_THEN, nodeToMsg, pNode->pThen);
107✔
1958
  }
1959

1960
  return code;
107✔
1961
}
1962

1963
static int32_t msgToWhenThenNode(STlvDecoder* pDecoder, void* pObj) {
4,102✔
1964
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
4,102✔
1965

1966
  int32_t code = TSDB_CODE_SUCCESS;
4,102✔
1967
  STlv*   pTlv = NULL;
4,102✔
1968
  tlvForEach(pDecoder, pTlv, code) {
16,407!
1969
    switch (pTlv->type) {
12,305!
1970
      case WHEN_THEN_CODE_EXPR_BASE:
4,104✔
1971
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
4,104✔
1972
        break;
4,101✔
1973
      case WHEN_THEN_CODE_WHEN:
4,101✔
1974
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
4,101✔
1975
        break;
4,101✔
1976
      case WHEN_THEN_CODE_THEN:
4,100✔
1977
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
4,100✔
1978
        break;
4,103✔
1979
      default:
×
1980
        break;
×
1981
    }
1982
  }
1983

1984
  return code;
4,104✔
1985
}
1986

1987
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
1988

1989
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
76✔
1990
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
76✔
1991

1992
  int32_t code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
76✔
1993
  if (TSDB_CODE_SUCCESS == code) {
77!
1994
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_CASE, nodeToMsg, pNode->pCase);
77✔
1995
  }
1996
  if (TSDB_CODE_SUCCESS == code) {
77!
1997
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_ELSE, nodeToMsg, pNode->pElse);
77✔
1998
  }
1999
  if (TSDB_CODE_SUCCESS == code) {
77!
2000
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_WHEN_THEN_LIST, nodeListToMsg, pNode->pWhenThenList);
77✔
2001
  }
2002

2003
  return code;
77✔
2004
}
2005

2006
static int32_t msgToCaseWhenNode(STlvDecoder* pDecoder, void* pObj) {
3,434✔
2007
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
3,434✔
2008

2009
  int32_t code = TSDB_CODE_SUCCESS;
3,434✔
2010
  STlv*   pTlv = NULL;
3,434✔
2011
  tlvForEach(pDecoder, pTlv, code) {
13,770!
2012
    switch (pTlv->type) {
10,337!
2013
      case CASE_WHEN_CODE_EXPR_BASE:
3,436✔
2014
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
3,436✔
2015
        break;
3,432✔
2016
      case CASE_WHEN_CODE_CASE:
439✔
2017
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
439✔
2018
        break;
439✔
2019
      case CASE_WHEN_CODE_ELSE:
3,029✔
2020
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
3,029✔
2021
        break;
3,030✔
2022
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
3,433✔
2023
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
3,433✔
2024
        break;
3,435✔
2025
      default:
×
2026
        break;
×
2027
    }
2028
  }
2029

2030
  return code;
3,435✔
2031
}
2032

2033
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
2034

2035
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
668✔
2036
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
668✔
2037

2038
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
668✔
2039
  if (TSDB_CODE_SUCCESS == code) {
668!
2040
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
668✔
2041
  }
2042

2043
  return code;
668✔
2044
}
2045

2046
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
1,497✔
2047
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
1,497✔
2048

2049
  int32_t code = TSDB_CODE_SUCCESS;
1,497✔
2050
  STlv*   pTlv = NULL;
1,497✔
2051
  tlvForEach(pDecoder, pTlv, code) {
4,491!
2052
    switch (pTlv->type) {
2,994!
2053
      case WINDOW_OFFSET_CODE_START_OFFSET:
1,497✔
2054
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartOffset);
1,497✔
2055
        break;
1,497✔
2056
      case WINDOW_OFFSET_CODE_END_OFFSET:
1,497✔
2057
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndOffset);
1,497✔
2058
        break;
1,497✔
2059
      default:
×
2060
        break;
×
2061
    }
2062
  }
2063

2064
  return code;
1,497✔
2065
}
2066

2067

2068
enum {
2069
  PHY_NODE_CODE_OUTPUT_DESC = 1,
2070
  PHY_NODE_CODE_CONDITIONS,
2071
  PHY_NODE_CODE_CHILDREN,
2072
  PHY_NODE_CODE_LIMIT,
2073
  PHY_NODE_CODE_SLIMIT,
2074
  PHY_NODE_CODE_INPUT_TS_ORDER,
2075
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
2076
  PHY_NODE_CODE_DYNAMIC_OP,
2077
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
2078
};
2079

2080
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
170,553✔
2081
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
170,553✔
2082

2083
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
170,553✔
2084
  if (TSDB_CODE_SUCCESS == code) {
170,113!
2085
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
170,157✔
2086
  }
2087
  if (TSDB_CODE_SUCCESS == code) {
170,387!
2088
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
170,431✔
2089
  }
2090
  if (TSDB_CODE_SUCCESS == code) {
170,810!
2091
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
170,876✔
2092
  }
2093
  if (TSDB_CODE_SUCCESS == code) {
171,039!
2094
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
171,130✔
2095
  }
2096
  if (TSDB_CODE_SUCCESS == code) {
171,000!
2097
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
171,113✔
2098
  }
2099
  if (TSDB_CODE_SUCCESS == code) {
170,883!
2100
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
170,973✔
2101
  }
2102
  if (TSDB_CODE_SUCCESS == code) {
170,836!
2103
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
170,961✔
2104
  }
2105
  if (TSDB_CODE_SUCCESS == code) { 
170,878!
2106
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
171,030✔
2107
  }
2108

2109
  return code;
170,941✔
2110
}
2111

2112
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
3,006,467✔
2113
  SPhysiNode* pNode = (SPhysiNode*)pObj;
3,006,467✔
2114

2115
  int32_t code = TSDB_CODE_SUCCESS;
3,006,467✔
2116
  STlv*   pTlv = NULL;
3,006,467✔
2117
  tlvForEach(pDecoder, pTlv, code) {
19,908,110!
2118
    switch (pTlv->type) {
16,902,354!
2119
      case PHY_NODE_CODE_OUTPUT_DESC:
3,006,489✔
2120
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
3,006,489✔
2121
        break;
3,006,768✔
2122
      case PHY_NODE_CODE_CONDITIONS:
335,236✔
2123
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
335,236✔
2124
        break;
334,999✔
2125
      case PHY_NODE_CODE_CHILDREN:
1,390,907✔
2126
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
1,390,907✔
2127
        break;
1,391,040✔
2128
      case PHY_NODE_CODE_LIMIT:
137,586✔
2129
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
137,586✔
2130
        break;
137,459✔
2131
      case PHY_NODE_CODE_SLIMIT:
7,699✔
2132
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
7,699✔
2133
        break;
7,698✔
2134
      case PHY_NODE_CODE_INPUT_TS_ORDER:
3,006,647✔
2135
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
3,006,647✔
2136
        break;
3,006,298✔
2137
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
3,006,345✔
2138
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
3,006,345✔
2139
        break;
3,006,062✔
2140
      case PHY_NODE_CODE_DYNAMIC_OP:
3,005,990✔
2141
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
3,005,990✔
2142
        break;
3,005,643✔
2143
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
3,005,455✔
2144
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
3,005,455✔
2145
        break;
3,005,676✔
2146
      default:
×
2147
        break;
×
2148
    }
2149
  }
2150

2151
  return code;
3,001,774✔
2152
}
2153

2154
enum {
2155
  PHY_SCAN_CODE_BASE_NODE = 1,
2156
  PHY_SCAN_CODE_SCAN_COLS,
2157
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2158
  PHY_SCAN_CODE_BASE_UID,
2159
  PHY_SCAN_CODE_BASE_SUID,
2160
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2161
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2162
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN,
2163
  PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN
2164
};
2165

2166
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
68,527✔
2167
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
68,527✔
2168

2169
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
68,527✔
2170
  if (TSDB_CODE_SUCCESS == code) {
68,589!
2171
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
68,626✔
2172
  }
2173
  if (TSDB_CODE_SUCCESS == code) {
68,443!
2174
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
68,507✔
2175
  }
2176
  if (TSDB_CODE_SUCCESS == code) {
68,549!
2177
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
68,630✔
2178
  }
2179
  if (TSDB_CODE_SUCCESS == code) {
68,723!
2180
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
68,798✔
2181
  }
2182
  if (TSDB_CODE_SUCCESS == code) {
68,706!
2183
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
68,800✔
2184
  }
2185
  if (TSDB_CODE_SUCCESS == code) {
68,589!
2186
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
68,694✔
2187
  }
2188
  if (TSDB_CODE_SUCCESS == code) {
68,813!
2189
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
68,930✔
2190
  }
2191
  if (TSDB_CODE_SUCCESS == code) {
68,784!
2192
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN, pNode->virtualStableScan);
68,843✔
2193
  }
2194

2195
  return code;
68,815✔
2196
}
2197

2198
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
1,058,212✔
2199
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
1,058,212✔
2200

2201
  int32_t code = TSDB_CODE_SUCCESS;
1,058,212✔
2202
  STlv*   pTlv = NULL;
1,058,212✔
2203
  tlvForEach(pDecoder, pTlv, code) {
9,868,529!
2204
    switch (pTlv->type) {
8,785,514!
2205
      case PHY_SCAN_CODE_BASE_NODE:
1,058,330✔
2206
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,058,330✔
2207
        break;
1,057,769✔
2208
      case PHY_SCAN_CODE_SCAN_COLS:
1,026,889✔
2209
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
1,026,889✔
2210
        break;
1,027,686✔
2211
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
377,113✔
2212
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
377,113✔
2213
        break;
377,149✔
2214
      case PHY_SCAN_CODE_BASE_UID:
1,058,627✔
2215
        code = tlvDecodeU64(pTlv, &pNode->uid);
1,058,627✔
2216
        break;
1,058,379✔
2217
      case PHY_SCAN_CODE_BASE_SUID:
1,058,299✔
2218
        code = tlvDecodeU64(pTlv, &pNode->suid);
1,058,299✔
2219
        break;
1,058,046✔
2220
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
1,058,055✔
2221
        code = tlvDecodeI8(pTlv, &pNode->tableType);
1,058,055✔
2222
        break;
1,057,918✔
2223
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
1,057,981✔
2224
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
1,057,981✔
2225
        break;
1,057,628✔
2226
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
1,057,680✔
2227
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
1,057,680✔
2228
        break;
1,057,821✔
2229
      case PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN:
1,057,846✔
2230
        code = tlvDecodeBool(pTlv, &pNode->virtualStableScan);
1,057,846✔
2231
      default:
1,057,921✔
2232
        break;
1,057,921✔
2233
    }
2234
  }
2235

2236
  return code;
1,080,642✔
2237
}
2238

2239
enum {
2240
  PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN = 1,
2241
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS,
2242
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT,
2243
  PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS,
2244
  PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS,
2245
  PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS,
2246
  PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE,
2247
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED,
2248
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE,
2249
};
2250

2251
static int32_t physiVirtualTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,362✔
2252
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode *)pObj;
2,362✔
2253

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

2256
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2257
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS, nodeListToMsg, pNode->pGroupTags);
2,362✔
2258
  }
2259

2260
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2261
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT, pNode->groupSort);
2,362✔
2262
  }
2263

2264
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2265
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS, pNode->scanAllCols);
2,362✔
2266
  }
2267

2268
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2269
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
2,362✔
2270
  }
2271

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

2276
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2277
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
2,362✔
2278
  }
2279

2280
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2281
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED, pNode->igExpired);
2,362✔
2282
  }
2283

2284
  if (TSDB_CODE_SUCCESS == code) {
2,362!
2285
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE, pNode->igCheckUpdate);
2,362✔
2286
  }
2287

2288
  return code;
2,362✔
2289
}
2290

2291
static int32_t msgToPhysiVirtualTableScanNode(STlvDecoder* pDecoder, void* pObj) {
2,438✔
2292
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
2,438✔
2293

2294
  int32_t code = TSDB_CODE_SUCCESS;
2,438✔
2295
  STlv*   pTlv = NULL;
2,438✔
2296
  tlvForEach(pDecoder, pTlv, code) {
17,063!
2297
    switch (pTlv->type) {
14,625!
2298
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN:
2,438✔
2299
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
2,438✔
2300
        break;
2,438✔
2301
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS:
×
2302
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
×
2303
        break;
×
2304
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT:
2,438✔
2305
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
2,438✔
2306
        break;
2,438✔
2307
      case PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS:
2,438✔
2308
        code = tlvDecodeBool(pTlv, &pNode->scanAllCols);
2,438✔
2309
        break;
2,438✔
2310
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS:
2,435✔
2311
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
2,435✔
2312
        break;
2,435✔
2313
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS:
×
2314
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2315
        break;
×
2316
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE:
×
2317
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2318
        break;
×
2319
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED:
2,438✔
2320
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
2,438✔
2321
        break;
2,438✔
2322
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE:
2,438✔
2323
        code = tlvDecodeI8(pTlv, &pNode->igCheckUpdate);
2,438✔
2324
        break;
2,438✔
2325
      default:
×
2326
        break;
×
2327
    }
2328
  }
2329

2330
  return code;
2,438✔
2331
}
2332

2333
enum {
2334
  PHY_TAG_SCAN_CODE_SCAN = 1,
2335
  PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
2336
};
2337

2338
static int32_t physiTagScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,031✔
2339
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
1,031✔
2340

2341
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,031✔
2342

2343
  if (TSDB_CODE_SUCCESS == code) {
1,039!
2344
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
1,040✔
2345
  }
2346
  return code;
1,037✔
2347
}
2348

2349
static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
31,149✔
2350
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
31,149✔
2351

2352
  int32_t code = TSDB_CODE_SUCCESS;
31,149✔
2353
  STlv*   pTlv = NULL;
31,149✔
2354
  tlvForEach(pDecoder, pTlv, code) {
93,449!
2355
    switch (pTlv->type) {
62,306!
2356
      case PHY_TAG_SCAN_CODE_SCAN:
31,158✔
2357
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
31,158✔
2358
        break;
31,146✔
2359
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
31,148✔
2360
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
31,148✔
2361
        break;
31,154✔
2362
      default:
×
2363
        break;
×
2364
    }
2365
  }
2366

2367
  return code;
31,153✔
2368
}
2369

2370
enum {
2371
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2372
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2373
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2374
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2375
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2376
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2377
};
2378

2379
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
165✔
2380
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
165✔
2381

2382
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
165✔
2383
  if (TSDB_CODE_SUCCESS == code) {
167!
2384
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
167✔
2385
  }
2386
  if (TSDB_CODE_SUCCESS == code) {
167!
2387
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
167✔
2388
  }
2389
  if (TSDB_CODE_SUCCESS == code) {
167!
2390
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
167✔
2391
  }
2392
  if (TSDB_CODE_SUCCESS == code) {
168!
2393
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
168✔
2394
  }
2395
  if (TSDB_CODE_SUCCESS == code) {
167!
2396
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
167✔
2397
  }
2398

2399
  return code;
168✔
2400
}
2401

2402
static int32_t msgToPhysiLastRowScanNode(STlvDecoder* pDecoder, void* pObj) {
3,265✔
2403
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
3,265✔
2404

2405
  int32_t code = TSDB_CODE_SUCCESS;
3,265✔
2406
  STlv*   pTlv = NULL;
3,265✔
2407
  tlvForEach(pDecoder, pTlv, code) {
16,749!
2408
    switch (pTlv->type) {
13,485!
2409
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
3,267✔
2410
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
3,267✔
2411
        break;
3,263✔
2412
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
245✔
2413
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
245✔
2414
        break;
244✔
2415
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
3,264✔
2416
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
3,264✔
2417
        break;
3,266✔
2418
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
3,267✔
2419
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
3,267✔
2420
        break;
3,267✔
2421
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
3,266✔
2422
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
3,266✔
2423
        break;
3,268✔
2424
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
176✔
2425
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
176✔
2426
        break;
176✔
2427

2428
      default:
×
2429
        break;
×
2430
    }
2431
  }
2432

2433
  return code;
3,260✔
2434
}
2435

2436
enum {
2437
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2438
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2439
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2440
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2441
  PHY_TABLE_SCAN_CODE_TAGS,
2442
  PHY_TABLE_SCAN_CODE_SUBTABLE,
2443
  PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR,
2444
};
2445

2446
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
60,047✔
2447
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
60,047✔
2448

2449
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
60,047✔
2450
  if (TSDB_CODE_SUCCESS == code) {
59,936!
2451
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
59,957✔
2452
  }
2453
  if (TSDB_CODE_SUCCESS == code) {
59,726!
2454
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
59,768✔
2455
  }
2456
  if (TSDB_CODE_SUCCESS == code) {
59,634!
2457
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
59,693✔
2458
  }
2459
  if (TSDB_CODE_SUCCESS == code) {
59,621!
2460
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
59,646✔
2461
  }
2462
  if (TSDB_CODE_SUCCESS == code) {
59,677!
2463
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
59,734✔
2464
  }
2465
  if (TSDB_CODE_SUCCESS == code) {
59,737!
2466
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
59,807✔
2467
  }
2468
  if (TSDB_CODE_SUCCESS == code) {
59,702!
2469
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
59,781✔
2470
  }
2471
  if (TSDB_CODE_SUCCESS == code) {
59,672!
2472
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
59,707✔
2473
  }
2474
  if (TSDB_CODE_SUCCESS == code) {
59,677!
2475
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
59,731✔
2476
  }
2477
  if (TSDB_CODE_SUCCESS == code) {
59,699!
2478
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
59,769✔
2479
  }
2480
  if (TSDB_CODE_SUCCESS == code) {
59,672!
2481
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
59,746✔
2482
  }
2483
  if (TSDB_CODE_SUCCESS == code) {
59,469!
2484
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
59,552✔
2485
  }
2486
  if (TSDB_CODE_SUCCESS == code) {
59,483!
2487
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
59,621✔
2488
  }
2489
  if (TSDB_CODE_SUCCESS == code) {
59,640!
2490
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
59,788✔
2491
  }
2492
  if (TSDB_CODE_SUCCESS == code) {
59,643!
2493
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
59,802✔
2494
  }
2495
  if (TSDB_CODE_SUCCESS == code) {
59,639!
2496
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
59,753✔
2497
  }
2498
  if (TSDB_CODE_SUCCESS == code) {
59,566!
2499
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
59,717✔
2500
  }
2501
  if (TSDB_CODE_SUCCESS == code) {
59,532!
2502
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
59,702✔
2503
  }
2504
  if (TSDB_CODE_SUCCESS == code) {
59,530!
2505
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
59,731✔
2506
  }
2507
  if (TSDB_CODE_SUCCESS == code) {
59,530!
2508
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
59,738✔
2509
  }
2510
  return code;
59,733✔
2511
}
2512

2513
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
59,890✔
2514
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
59,890✔
2515

2516
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
59,890✔
2517
  if (TSDB_CODE_SUCCESS == code) {
60,043!
2518
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
60,084✔
2519
  }
2520
  if (TSDB_CODE_SUCCESS == code) {
59,787!
2521
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
59,845✔
2522
  }
2523
  if (TSDB_CODE_SUCCESS == code) {
59,930!
2524
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
59,995✔
2525
  }
2526
  if (TSDB_CODE_SUCCESS == code) {
59,985!
2527
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
60,025✔
2528
  }
2529
  if (TSDB_CODE_SUCCESS == code) {
60,160!
2530
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
60,238✔
2531
  }
2532
  if (TSDB_CODE_SUCCESS == code) {
60,126!
2533
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
60,224✔
2534
  }
2535

2536
  return code;
60,230✔
2537
}
2538

2539
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
989,370✔
2540
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
989,370✔
2541

2542
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
989,370✔
2543
  if (TSDB_CODE_SUCCESS == code) {
989,566!
2544
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
989,638✔
2545
  }
2546
  if (TSDB_CODE_SUCCESS == code) {
989,380✔
2547
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
989,160✔
2548
  }
2549
  if (TSDB_CODE_SUCCESS == code) {
989,541✔
2550
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
989,388✔
2551
  }
2552
  if (TSDB_CODE_SUCCESS == code) {
989,541✔
2553
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
989,425✔
2554
  }
2555
  if (TSDB_CODE_SUCCESS == code) {
989,628✔
2556
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
989,548✔
2557
  }
2558
  if (TSDB_CODE_SUCCESS == code) {
989,671✔
2559
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
989,225✔
2560
  }
2561
  if (TSDB_CODE_SUCCESS == code) {
990,187✔
2562
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
989,766✔
2563
  }
2564
  if (TSDB_CODE_SUCCESS == code) {
990,202✔
2565
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
989,793✔
2566
  }
2567
  if (TSDB_CODE_SUCCESS == code) {
989,873✔
2568
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
989,480✔
2569
  }
2570
  if (TSDB_CODE_SUCCESS == code) {
989,766✔
2571
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
989,073✔
2572
  }
2573
  if (TSDB_CODE_SUCCESS == code) {
990,237✔
2574
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
989,587✔
2575
  }
2576
  if (TSDB_CODE_SUCCESS == code) {
990,300✔
2577
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
989,675✔
2578
  }
2579
  if (TSDB_CODE_SUCCESS == code) {
990,530✔
2580
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
989,929✔
2581
  }
2582
  if (TSDB_CODE_SUCCESS == code) {
990,499✔
2583
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
989,717✔
2584
  }
2585
  if (TSDB_CODE_SUCCESS == code) {
990,686✔
2586
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
989,934✔
2587
  }
2588
  if (TSDB_CODE_SUCCESS == code) {
990,915✔
2589
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
990,166✔
2590
  }
2591
  if (TSDB_CODE_SUCCESS == code) {
990,925✔
2592
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
990,188✔
2593
  }
2594
  if (TSDB_CODE_SUCCESS == code) {
990,952✔
2595
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
990,046✔
2596
  }
2597
  if (TSDB_CODE_SUCCESS == code) {
990,892✔
2598
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
989,998✔
2599
  }
2600
  if (TSDB_CODE_SUCCESS == code) {
990,902✔
2601
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
990,026✔
2602
  }
2603
  return code;
990,083✔
2604
}
2605

2606
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
990,331✔
2607
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
990,331✔
2608

2609
  int32_t code = TSDB_CODE_SUCCESS;
990,331✔
2610
  STlv*   pTlv = NULL;
990,331✔
2611
  tlvForEach(pDecoder, pTlv, code) {
3,205,332!
2612
    switch (pTlv->type) {
2,215,338!
2613
      case PHY_TABLE_SCAN_CODE_SCAN:
990,394✔
2614
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
990,394✔
2615
        break;
989,399✔
2616
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
989,645✔
2617
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
989,645✔
2618
        break;
990,079✔
2619
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2620
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2621
        break;
×
2622
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
235,299✔
2623
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
235,299✔
2624
        break;
235,523✔
2625
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2626
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2627
        break;
×
2628
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2629
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2630
        break;
×
2631
      case PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR:
×
2632
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
2633
        break;
×
2634
      default:
×
2635
        break;
×
2636
    }
2637
  }
2638

2639
  return code;
989,840✔
2640
}
2641

2642
enum {
2643
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2644
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2645
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2646
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2647
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2648
};
2649

2650
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,152✔
2651
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
5,152✔
2652

2653
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
5,152✔
2654
  if (TSDB_CODE_SUCCESS == code) {
5,166!
2655
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
5,167✔
2656
  }
2657
  if (TSDB_CODE_SUCCESS == code) {
5,169!
2658
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
5,170✔
2659
  }
2660
  if (TSDB_CODE_SUCCESS == code) {
5,168!
2661
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
5,169✔
2662
  }
2663
  if (TSDB_CODE_SUCCESS == code) {
5,169!
2664
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
5,170✔
2665
  }
2666

2667
  return code;
5,170✔
2668
}
2669

2670
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
31,155✔
2671
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
31,155✔
2672

2673
  int32_t code = TSDB_CODE_SUCCESS;
31,155✔
2674
  STlv*   pTlv = NULL;
31,155✔
2675
  tlvForEach(pDecoder, pTlv, code) {
186,924!
2676
    switch (pTlv->type) {
155,778!
2677
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
31,158✔
2678
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
31,158✔
2679
        break;
31,145✔
2680
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
31,151✔
2681
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
31,151✔
2682
        break;
31,159✔
2683
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
31,161✔
2684
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
31,161✔
2685
        break;
31,160✔
2686
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
31,157✔
2687
        code = tlvDecodeI32(pTlv, &pNode->accountId);
31,157✔
2688
        break;
31,152✔
2689
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
31,151✔
2690
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
31,151✔
2691
        break;
31,153✔
2692
      default:
×
2693
        break;
×
2694
    }
2695
  }
2696

2697
  return code;
31,143✔
2698
}
2699

2700
enum {
2701
  PHY_PROJECT_CODE_BASE_NODE = 1,
2702
  PHY_PROJECT_CODE_PROJECTIONS,
2703
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2704
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2705
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2706
};
2707

2708
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
23,834✔
2709
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
23,834✔
2710

2711
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
23,834✔
2712
  if (TSDB_CODE_SUCCESS == code) {
23,971!
2713
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
23,972✔
2714
  }
2715
  if (TSDB_CODE_SUCCESS == code) {
23,946!
2716
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
23,948✔
2717
  }
2718
  if (TSDB_CODE_SUCCESS == code) {
23,969!
2719
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
23,971✔
2720
  }
2721
  if (TSDB_CODE_SUCCESS == code) {
23,979!
2722
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
23,980✔
2723
  }
2724

2725
  return code;
23,972✔
2726
}
2727

2728
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
429,562✔
2729
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
429,562✔
2730

2731
  int32_t code = TSDB_CODE_SUCCESS;
429,562✔
2732
  STlv*   pTlv = NULL;
429,562✔
2733
  tlvForEach(pDecoder, pTlv, code) {
2,577,151!
2734
    switch (pTlv->type) {
2,147,661!
2735
      case PHY_PROJECT_CODE_BASE_NODE:
429,635✔
2736
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
429,635✔
2737
        break;
429,439✔
2738
      case PHY_PROJECT_CODE_PROJECTIONS:
429,426✔
2739
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
429,426✔
2740
        break;
429,623✔
2741
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
429,602✔
2742
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
429,602✔
2743
        break;
429,547✔
2744
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
429,513✔
2745
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
429,513✔
2746
        break;
429,497✔
2747
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
429,485✔
2748
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
429,485✔
2749
        break;
429,483✔
2750
      default:
×
2751
        break;
×
2752
    }
2753
  }
2754

2755
  return code;
429,340✔
2756
}
2757

2758
enum {
2759
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2760
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2761
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2762
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2763
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2764
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2765
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2766
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2767
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2768
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2769
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2770
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2771
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2772
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2773
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2774
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2775
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2776
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2777
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2778
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2779
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2780
};
2781

2782
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,543✔
2783
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
5,543✔
2784

2785
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
5,543✔
2786
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2787
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
5,544✔
2788
  }
2789
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2790
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
5,544✔
2791
  }
2792
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2793
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
5,544✔
2794
  }
2795
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2796
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
5,544✔
2797
  }
2798
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2799
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
5,544✔
2800
  }  
2801
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2802
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
5,544✔
2803
  }
2804
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2805
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
5,544✔
2806
  }  
2807
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2808
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
5,544✔
2809
  }  
2810
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2811
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
5,544✔
2812
  }  
2813
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2814
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
5,544✔
2815
  }
2816
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2817
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
5,544✔
2818
  }
2819
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2820
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
5,544✔
2821
  }
2822
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2823
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
5,544✔
2824
  }
2825
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2826
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
5,544✔
2827
  }
2828
  if (TSDB_CODE_SUCCESS == code) {
5,543!
2829
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
5,543✔
2830
  }
2831
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2832
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
5,544✔
2833
  }
2834
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2835
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
5,544✔
2836
  }
2837
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2838
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
5,544✔
2839
  }
2840
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2841
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
5,544✔
2842
  }
2843
  if (TSDB_CODE_SUCCESS == code) {
5,544!
2844
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
5,544✔
2845
  }
2846
  
2847
  return code;
5,544✔
2848
}
2849

2850
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
73,497✔
2851
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
73,497✔
2852

2853
  int32_t code = TSDB_CODE_SUCCESS;
73,497✔
2854
  STlv*   pTlv = NULL;
73,497✔
2855
  tlvForEach(pDecoder, pTlv, code) {
1,079,164!
2856
    switch (pTlv->type) {
1,005,668!
2857
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
73,497✔
2858
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
73,497✔
2859
        break;
73,488✔
2860
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
73,490✔
2861
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
73,490✔
2862
        break;
73,492✔
2863
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
73,491✔
2864
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
73,491✔
2865
        break;
73,492✔
2866
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
1,497✔
2867
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
1,497✔
2868
        break;
1,497✔
2869
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
580✔
2870
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
580✔
2871
        break;
580✔
2872
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
73,492✔
2873
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
73,492✔
2874
        break;
73,488✔
2875
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
1,368✔
2876
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
1,368✔
2877
        break;
1,368✔
2878
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
1,265✔
2879
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
1,265✔
2880
        break;
1,265✔
2881
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
73,490✔
2882
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
73,490✔
2883
        break;
73,489✔
2884
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
73,488✔
2885
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
73,488✔
2886
        break;
73,486✔
2887
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
763✔
2888
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
763✔
2889
        break;
763✔
2890
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
763✔
2891
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
763✔
2892
        break;
763✔
2893
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
21,765✔
2894
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
21,765✔
2895
        break;
21,765✔
2896
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
22,261✔
2897
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
22,261✔
2898
        break;
22,261✔
2899
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
73,484✔
2900
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
73,484✔
2901
        break;
73,499✔
2902
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
73,499✔
2903
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
73,499✔
2904
        break;
73,498✔
2905
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
73,497✔
2906
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
73,497✔
2907
        break;
73,497✔
2908
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
73,496✔
2909
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
73,496✔
2910
        break;
73,494✔
2911
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
73,493✔
2912
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
73,493✔
2913
        break;
73,491✔
2914
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
73,494✔
2915
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
73,494✔
2916
        break;
73,496✔
2917
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
73,495✔
2918
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
73,495✔
2919
        break;
73,495✔
2920
      default:
×
2921
        break;
×
2922
    }
2923
  }
2924

2925
  return code;
73,481✔
2926
}
2927

2928
enum {
2929
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2930
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2931
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2932
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2933
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2934
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2935
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2936
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2937
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2938
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2939
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2940
  PHY_HASH_JOIN_CODE_TARGETS,
2941
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2942
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2943
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2944
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2945
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2946
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2947
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2948
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2949

2950
};
2951

2952
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
151✔
2953
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
151✔
2954

2955
  int32_t code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
151✔
2956
  if (TSDB_CODE_SUCCESS == code) {
151!
2957
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_TYPE, pNode->joinType);
151✔
2958
  }
2959
  if (TSDB_CODE_SUCCESS == code) {
151!
2960
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_STYPE, pNode->subType);
151✔
2961
  }
2962
  if (TSDB_CODE_SUCCESS == code) {
151!
2963
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN, nodeListToMsg, pNode->pOnLeft);
151✔
2964
  }
2965
  if (TSDB_CODE_SUCCESS == code) {
151!
2966
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN, nodeListToMsg, pNode->pOnRight);
151✔
2967
  }  
2968
  if (TSDB_CODE_SUCCESS == code) {
151!
2969
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
151✔
2970
  }
2971
  if (TSDB_CODE_SUCCESS == code) {
151!
2972
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
151✔
2973
  }
2974
  if (TSDB_CODE_SUCCESS == code) {
151!
2975
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID, pNode->leftPrimSlotId);
151✔
2976
  }
2977
  if (TSDB_CODE_SUCCESS == code) {
151!
2978
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID, pNode->rightPrimSlotId);
151✔
2979
  }
2980
  if (TSDB_CODE_SUCCESS == code) {
151!
2981
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET, pNode->timeRangeTarget);
151✔
2982
  }
2983
  if (TSDB_CODE_SUCCESS == code) {
151!
2984
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
151✔
2985
  }
2986
  if (TSDB_CODE_SUCCESS == code) {
151!
2987
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
151✔
2988
  }
2989
  if (TSDB_CODE_SUCCESS == code) {
151!
2990
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
151✔
2991
  }
2992
  if (TSDB_CODE_SUCCESS == code) {
151!
2993
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
151✔
2994
  }
2995
  if (TSDB_CODE_SUCCESS == code) {
151!
2996
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
151✔
2997
  }
2998
  if (TSDB_CODE_SUCCESS == code) {
151!
2999
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
151✔
3000
  }
3001
  if (TSDB_CODE_SUCCESS == code) {
151!
3002
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_ON_COND, nodeToMsg, pNode->pLeftOnCond);
151✔
3003
  }
3004
  if (TSDB_CODE_SUCCESS == code) {
151!
3005
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_ON_COND, nodeToMsg, pNode->pRightOnCond);
151✔
3006
  }
3007
  if (TSDB_CODE_SUCCESS == code) {
151!
3008
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY, pNode->timeRange.skey);
151✔
3009
  }
3010
  if (TSDB_CODE_SUCCESS == code) {
151!
3011
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY, pNode->timeRange.ekey);
151✔
3012
  }
3013

3014
  return code;
151✔
3015
}
3016

3017

3018
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
6,241✔
3019
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
6,241✔
3020

3021
  int32_t code = TSDB_CODE_SUCCESS;
6,241✔
3022
  STlv*   pTlv = NULL;
6,241✔
3023
  tlvForEach(pDecoder, pTlv, code) {
99,856!
3024
    switch (pTlv->type) {
93,615!
3025
      case PHY_HASH_JOIN_CODE_BASE_NODE:
6,241✔
3026
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,241✔
3027
        break;
6,241✔
3028
      case PHY_HASH_JOIN_CODE_JOIN_TYPE:
6,241✔
3029
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
6,241✔
3030
        break;
6,241✔
3031
      case PHY_HASH_JOIN_CODE_JOIN_STYPE:
6,241✔
3032
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
6,241✔
3033
        break;
6,241✔
3034
      case PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN:
6,241✔
3035
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnLeft);
6,241✔
3036
        break;
6,241✔
3037
      case PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN:
6,241✔
3038
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnRight);
6,241✔
3039
        break;
6,241✔
3040
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR:
×
3041
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
×
3042
        break;
×
3043
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR:
×
3044
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
×
3045
        break;
×
3046
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID:
6,241✔
3047
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
6,241✔
3048
        break;
6,241✔
3049
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID:
6,241✔
3050
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
6,241✔
3051
        break;
6,241✔
3052
      case PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET:
6,241✔
3053
        code = tlvDecodeI32(pTlv, &pNode->timeRangeTarget);
6,241✔
3054
        break;
6,241✔
3055
      case PHY_HASH_JOIN_CODE_ON_CONDITIONS:
×
3056
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
×
3057
        break;
×
3058
      case PHY_HASH_JOIN_CODE_TARGETS:
6,241✔
3059
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
6,241✔
3060
        break;
6,241✔
3061
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0:
6,241✔
3062
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
6,241✔
3063
        break;
6,241✔
3064
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1:
6,241✔
3065
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
6,241✔
3066
        break;
6,241✔
3067
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0:
6,241✔
3068
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
6,241✔
3069
        break;
6,241✔
3070
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1:
6,241✔
3071
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
6,241✔
3072
        break;
6,241✔
3073
      case PHY_HASH_JOIN_CODE_LEFT_ON_COND:
×
3074
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeftOnCond);
×
3075
        break;
×
3076
      case PHY_HASH_JOIN_CODE_RIGHT_ON_COND:
×
3077
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRightOnCond);
×
3078
        break;
×
3079
      case PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY:
6,241✔
3080
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
6,241✔
3081
        break;
6,241✔
3082
      case PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY:
6,241✔
3083
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
6,241✔
3084
        break;
6,241✔
3085
      default:
×
3086
        break;
×
3087
    }
3088
  }
3089

3090
  return code;
6,241✔
3091
}
3092

3093

3094
enum {
3095
  PHY_AGG_CODE_BASE_NODE = 1,
3096
  PHY_AGG_CODE_EXPR,
3097
  PHY_AGG_CODE_GROUP_KEYS,
3098
  PHY_AGG_CODE_AGG_FUNCS,
3099
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
3100
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
3101
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
3102
};
3103

3104
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
17,649✔
3105
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
17,649✔
3106

3107
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
17,649✔
3108
  if (TSDB_CODE_SUCCESS == code) {
17,715!
3109
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
17,717✔
3110
  }
3111
  if (TSDB_CODE_SUCCESS == code) {
17,716✔
3112
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
17,708✔
3113
  }
3114
  if (TSDB_CODE_SUCCESS == code) {
17,716✔
3115
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
17,713✔
3116
  }
3117
  if (TSDB_CODE_SUCCESS == code) {
17,734✔
3118
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
17,731✔
3119
  }
3120
  if (TSDB_CODE_SUCCESS == code) {
17,740✔
3121
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
17,737✔
3122
  }
3123
  if (TSDB_CODE_SUCCESS == code) {
17,734✔
3124
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
17,729✔
3125
  }
3126

3127
  return code;
17,730✔
3128
}
3129

3130
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
603,314✔
3131
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
603,314✔
3132

3133
  int32_t code = TSDB_CODE_SUCCESS;
603,314✔
3134
  STlv*   pTlv = NULL;
603,314✔
3135
  tlvForEach(pDecoder, pTlv, code) {
3,843,334!
3136
    switch (pTlv->type) {
3,240,393!
3137
      case PHY_AGG_CODE_BASE_NODE:
603,380✔
3138
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
603,380✔
3139
        break;
602,742✔
3140
      case PHY_AGG_CODE_EXPR:
211,418✔
3141
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
211,418✔
3142
        break;
211,599✔
3143
      case PHY_AGG_CODE_GROUP_KEYS:
195,784✔
3144
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
195,784✔
3145
        break;
195,814✔
3146
      case PHY_AGG_CODE_AGG_FUNCS:
421,012✔
3147
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
421,012✔
3148
        break;
421,220✔
3149
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
603,120✔
3150
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
603,120✔
3151
        break;
602,978✔
3152
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
602,878✔
3153
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
602,878✔
3154
        break;
602,838✔
3155
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
602,801✔
3156
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
602,801✔
3157
        break;
602,829✔
3158
      default:
×
3159
        break;
×
3160
    }
3161
  }
3162

3163
  return code;
602,493✔
3164
}
3165

3166
enum {
3167
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
3168
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
3169
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
3170
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
3171
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
3172
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA,
3173
  PHY_EXCHANGE_CODE_DYN_TBNAME
3174
};
3175

3176
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
37,980✔
3177
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
37,980✔
3178

3179
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
37,980✔
3180
  if (TSDB_CODE_SUCCESS == code) {
37,971!
3181
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
37,971✔
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
37,968!
3184
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
37,968✔
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
37,970!
3187
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
37,970✔
3188
  }
3189
  if (TSDB_CODE_SUCCESS == code) {
37,969!
3190
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
37,969✔
3191
  }
3192
  if (TSDB_CODE_SUCCESS == code) {
37,973!
3193
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
37,973✔
3194
  }
3195
  if (TSDB_CODE_SUCCESS == code) {
37,969!
3196
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_DYN_TBNAME, pNode->dynTbname);
37,969✔
3197
  }
3198

3199
  return code;
37,970✔
3200
}
3201

3202
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
559,432✔
3203
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
559,432✔
3204

3205
  int32_t code = TSDB_CODE_SUCCESS;
559,432✔
3206
  STlv*   pTlv = NULL;
559,432✔
3207
  tlvForEach(pDecoder, pTlv, code) {
4,475,189!
3208
    switch (pTlv->type) {
3,915,798!
3209
      case PHY_EXCHANGE_CODE_BASE_NODE:
559,438✔
3210
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
559,438✔
3211
        break;
559,376✔
3212
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
559,386✔
3213
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
559,386✔
3214
        break;
559,371✔
3215
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
559,368✔
3216
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
559,368✔
3217
        break;
559,363✔
3218
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
559,372✔
3219
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
559,372✔
3220
        break;
559,382✔
3221
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
559,382✔
3222
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
559,382✔
3223
        break;
559,454✔
3224
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
559,443✔
3225
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
559,443✔
3226
        break;
559,418✔
3227
      case PHY_EXCHANGE_CODE_DYN_TBNAME:
559,409✔
3228
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
559,409✔
3229
        break;
559,393✔
3230
      default:
×
3231
        break;
×
3232
    }
3233
  }
3234

3235
  return code;
559,299✔
3236
}
3237

3238
enum {
3239
  PHY_MERGE_CODE_BASE_NODE = 1,
3240
  PHY_MERGE_CODE_MERGE_KEYS,
3241
  PHY_MERGE_CODE_TARGETS,
3242
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3243
  PHY_MERGE_CODE_SRC_GROUP_ID,
3244
  PHY_MERGE_CODE_GROUP_SORT,
3245
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3246
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3247
  PHY_MERGE_CODE_TYPE,
3248
};
3249

3250
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,733✔
3251
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
6,733✔
3252

3253
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
6,733✔
3254
  if (TSDB_CODE_SUCCESS == code) {
6,730!
3255
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
6,730✔
3256
  }
3257
  if (TSDB_CODE_SUCCESS == code) {
6,733!
3258
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
6,733✔
3259
  }
3260
  if (TSDB_CODE_SUCCESS == code) {
6,733!
3261
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
6,733✔
3262
  }
3263
  if (TSDB_CODE_SUCCESS == code) {
6,733!
3264
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
6,733✔
3265
  }
3266
  if (TSDB_CODE_SUCCESS == code) {
6,733!
3267
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
6,733✔
3268
  }
3269
  if (TSDB_CODE_SUCCESS == code) {
6,733!
3270
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
6,733✔
3271
  }
3272
  if (TSDB_CODE_SUCCESS == code) {
6,733!
3273
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
6,733✔
3274
  }
3275
  if (TSDB_CODE_SUCCESS == code) {
6,733!
3276
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
6,733✔
3277
  }
3278

3279
  return code;
6,733✔
3280
}
3281

3282
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
57,501✔
3283
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
57,501✔
3284

3285
  int32_t code = TSDB_CODE_SUCCESS;
57,501✔
3286
  STlv*   pTlv = NULL;
57,501✔
3287
  tlvForEach(pDecoder, pTlv, code) {
574,111!
3288
    switch (pTlv->type) {
516,612!
3289
      case PHY_MERGE_CODE_BASE_NODE:
57,501✔
3290
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
57,501✔
3291
        break;
57,499✔
3292
      case PHY_MERGE_CODE_MERGE_KEYS:
56,634✔
3293
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
56,634✔
3294
        break;
56,638✔
3295
      case PHY_MERGE_CODE_TARGETS:
57,503✔
3296
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
57,503✔
3297
        break;
57,501✔
3298
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
57,501✔
3299
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
57,501✔
3300
        break;
57,499✔
3301
      case PHY_MERGE_CODE_SRC_GROUP_ID:
57,497✔
3302
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
57,497✔
3303
        break;
57,496✔
3304
      case PHY_MERGE_CODE_GROUP_SORT:
57,495✔
3305
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
57,495✔
3306
        break;
57,494✔
3307
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
57,493✔
3308
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
57,493✔
3309
        break;
57,494✔
3310
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
57,494✔
3311
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
57,494✔
3312
        break;
57,495✔
3313
      case PHY_MERGE_CODE_TYPE:
57,494✔
3314
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
57,494✔
3315
        break;
57,494✔
3316
      default:
×
3317
        break;
×
3318
    }
3319
  }
3320

3321
  return code;
57,498✔
3322
}
3323

3324
enum {
3325
  PHY_SORT_CODE_BASE_NODE = 1,
3326
  PHY_SORT_CODE_EXPR,
3327
  PHY_SORT_CODE_SORT_KEYS,
3328
  PHY_SORT_CODE_TARGETS,
3329
  PHY_SORT_CODE_CALC_GROUPID,
3330
  PHY_SORT_CODE_EXCLUDE_PK_COL
3331
};
3332

3333
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,338✔
3334
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
3,338✔
3335

3336
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
3,338✔
3337
  if (TSDB_CODE_SUCCESS == code) {
3,330!
3338
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
3,330✔
3339
  }
3340
  if (TSDB_CODE_SUCCESS == code) {
3,333!
3341
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
3,333✔
3342
  }
3343
  if (TSDB_CODE_SUCCESS == code) {
3,341!
3344
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
3,342✔
3345
  }
3346
  if (TSDB_CODE_SUCCESS == code) {
3,333!
3347
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
3,334✔
3348
  }
3349
  if (TSDB_CODE_SUCCESS == code) {
3,337!
3350
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
3,338✔
3351
  }
3352

3353
  return code;
3,338✔
3354
}
3355

3356
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
139,084✔
3357
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
139,084✔
3358

3359
  int32_t code = TSDB_CODE_SUCCESS;
139,084✔
3360
  STlv*   pTlv = NULL;
139,084✔
3361
  tlvForEach(pDecoder, pTlv, code) {
834,869!
3362
    switch (pTlv->type) {
695,574!
3363
      case PHY_SORT_CODE_BASE_NODE:
139,087✔
3364
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
139,087✔
3365
        break;
139,057✔
3366
      case PHY_SORT_CODE_EXPR:
411✔
3367
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
411✔
3368
        break;
411✔
3369
      case PHY_SORT_CODE_SORT_KEYS:
139,057✔
3370
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
139,057✔
3371
        break;
139,084✔
3372
      case PHY_SORT_CODE_TARGETS:
139,083✔
3373
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
139,083✔
3374
        break;
139,087✔
3375
      case PHY_SORT_CODE_CALC_GROUPID:
139,082✔
3376
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
139,082✔
3377
        break;
139,077✔
3378
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
139,073✔
3379
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
139,073✔
3380
      default:
139,069✔
3381
        break;
139,069✔
3382
    }
3383
  }
3384

3385
  return code;
139,239✔
3386
}
3387

3388
enum {
3389
  PHY_WINDOW_CODE_BASE_NODE = 1,
3390
  PHY_WINDOW_CODE_EXPR,
3391
  PHY_WINDOW_CODE_FUNCS,
3392
  PHY_WINDOW_CODE_TS_PK,
3393
  PHY_WINDOW_CODE_TS_END,
3394
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3395
  PHY_WINDOW_CODE_WATERMARK,
3396
  PHY_WINDOW_CODE_DELETE_MARK,
3397
  PHY_WINDOW_CODE_IG_EXPIRED,
3398
  PHY_WINDOW_CODE_INDEF_ROWS_FUNC,
3399
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3400
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3401
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3402
};
3403

3404
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,616✔
3405
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
3,616✔
3406

3407
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
3,616✔
3408
  if (TSDB_CODE_SUCCESS == code) {
3,627!
3409
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
3,632✔
3410
  }
3411
  if (TSDB_CODE_SUCCESS == code) {
3,625!
3412
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
3,631✔
3413
  }
3414
  if (TSDB_CODE_SUCCESS == code) {
3,632!
3415
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
3,640✔
3416
  }
3417
  if (TSDB_CODE_SUCCESS == code) {
3,635!
3418
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
3,642✔
3419
  }
3420
  if (TSDB_CODE_SUCCESS == code) {
3,635!
3421
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
3,642✔
3422
  }
3423
  if (TSDB_CODE_SUCCESS == code) {
3,639!
3424
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
3,646✔
3425
  }
3426
  if (TSDB_CODE_SUCCESS == code) {
3,641!
3427
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
3,648✔
3428
  }
3429
  if (TSDB_CODE_SUCCESS == code) {
3,641!
3430
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
3,647✔
3431
  }
3432
  if (TSDB_CODE_SUCCESS == code) {
3,638!
3433
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
3,645✔
3434
  }
3435
  if (TSDB_CODE_SUCCESS == code) {
3,639!
3436
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_INDEF_ROWS_FUNC, pNode->indefRowsFunc);
3,646✔
3437
  }
3438

3439
  return code;
3,646✔
3440
}
3441

3442
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
20,677✔
3443
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
20,677✔
3444

3445
  int32_t code = TSDB_CODE_SUCCESS;
20,677✔
3446
  STlv*   pTlv = NULL;
20,677✔
3447
  tlvForEach(pDecoder, pTlv, code) {
210,535!
3448
    switch (pTlv->type) {
189,854!
3449
      case PHY_WINDOW_CODE_BASE_NODE:
20,676✔
3450
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
20,676✔
3451
        break;
20,665✔
3452
      case PHY_WINDOW_CODE_EXPR:
2,480✔
3453
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
2,480✔
3454
        break;
2,481✔
3455
      case PHY_WINDOW_CODE_FUNCS:
20,660✔
3456
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
20,660✔
3457
        break;
20,679✔
3458
      case PHY_WINDOW_CODE_TS_PK:
20,678✔
3459
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
20,678✔
3460
        break;
20,680✔
3461
      case PHY_WINDOW_CODE_TS_END:
1,333✔
3462
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
1,333✔
3463
        break;
1,333✔
3464
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
20,681✔
3465
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
20,681✔
3466
        break;
20,680✔
3467
      case PHY_WINDOW_CODE_WATERMARK:
20,677✔
3468
        code = tlvDecodeI64(pTlv, &pNode->watermark);
20,677✔
3469
        break;
20,671✔
3470
      case PHY_WINDOW_CODE_DELETE_MARK:
20,671✔
3471
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
20,671✔
3472
        break;
20,669✔
3473
      case PHY_WINDOW_CODE_IG_EXPIRED:
20,667✔
3474
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
20,667✔
3475
        break;
20,666✔
3476
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
20,665✔
3477
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
20,665✔
3478
        break;
20,668✔
3479
      case PHY_WINDOW_CODE_INDEF_ROWS_FUNC:
20,666✔
3480
        code = tlvDecodeI8(pTlv, &pNode->indefRowsFunc);
20,666✔
3481
        break;
20,666✔
3482
      default:
×
3483
        break;
×
3484
    }
3485
  }
3486

3487
  return code;
20,682✔
3488
}
3489

3490
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS, PHY_INTERVAL_CODE_TIME_RANGE };
3491

3492
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,303✔
3493
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
3,303✔
3494

3495
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
3,303✔
3496
  if (TSDB_CODE_SUCCESS == code) {
3,301!
3497
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
3,301✔
3498
  }
3499
  if (TSDB_CODE_SUCCESS == code) {
3,299✔
3500
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
3,298✔
3501
  }
3502
  if (TSDB_CODE_SUCCESS == code) {
3,300✔
3503
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
3,299✔
3504
  }
3505
  if (TSDB_CODE_SUCCESS == code) {
3,302✔
3506
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
3,300✔
3507
  }
3508

3509
  return code;
3,296✔
3510
}
3511

3512
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,272✔
3513
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
3,272✔
3514

3515
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
3,272✔
3516
  if (TSDB_CODE_SUCCESS == code) {
3,303!
3517
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
3,303✔
3518
  }
3519
  if (TSDB_CODE_SUCCESS == code) {
3,296!
3520
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
3,296✔
3521
  }
3522

3523
  return code;
3,302✔
3524
}
3525

3526
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
17,174✔
3527
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
17,174✔
3528

3529
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
17,174✔
3530
  if (TSDB_CODE_SUCCESS == code) {
17,176!
3531
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
17,177✔
3532
  }
3533
  if (TSDB_CODE_SUCCESS == code) {
17,175!
3534
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
17,176✔
3535
  }
3536
  if (TSDB_CODE_SUCCESS == code) {
17,172!
3537
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
17,173✔
3538
  }
3539
  if (TSDB_CODE_SUCCESS == code) {
17,177!
3540
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
17,177✔
3541
  }
3542

3543
  return code;
17,176✔
3544
}
3545

3546
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
17,175✔
3547
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
17,175✔
3548

3549
  int32_t code = TSDB_CODE_SUCCESS;
17,175✔
3550
  STlv*   pTlv = NULL;
17,175✔
3551
  tlvForEach(pDecoder, pTlv, code) {
68,703!
3552
    switch (pTlv->type) {
51,528!
3553
      case PHY_INTERVAL_CODE_WINDOW:
17,188✔
3554
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
17,188✔
3555
        break;
17,175✔
3556
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
17,176✔
3557
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
17,176✔
3558
        break;
17,176✔
3559
      case PHY_INTERVAL_CODE_TIME_RANGE:
17,176✔
3560
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
17,176✔
3561
      default:
17,177✔
3562
        break;
17,177✔
3563
    }
3564
  }
3565

3566
  return code;
17,174✔
3567
}
3568

3569
enum {
3570
  PHY_FILL_CODE_BASE_NODE = 1,
3571
  PHY_FILL_CODE_MODE,
3572
  PHY_FILL_CODE_FILL_EXPRS,
3573
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3574
  PHY_FILL_CODE_WSTART,
3575
  PHY_FILL_CODE_VALUES,
3576
  PHY_FILL_CODE_TIME_RANGE,
3577
  PHY_FILL_CODE_INPUT_TS_ORDER,
3578
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3579
  PHY_FILL_CODE_TIME_RANGE_EXPR,
3580
};
3581

3582
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
241✔
3583
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
241✔
3584

3585
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
241✔
3586
  if (TSDB_CODE_SUCCESS == code) {
243!
3587
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
243✔
3588
  }
3589
  if (TSDB_CODE_SUCCESS == code) {
243!
3590
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
243✔
3591
  }
3592
  if (TSDB_CODE_SUCCESS == code) {
243!
3593
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
243✔
3594
  }
3595
  if (TSDB_CODE_SUCCESS == code) {
242!
3596
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
242✔
3597
  }
3598
  if (TSDB_CODE_SUCCESS == code) {
243!
3599
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
243✔
3600
  }
3601
  if (TSDB_CODE_SUCCESS == code) {
243!
3602
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
243✔
3603
  }
3604
  if (TSDB_CODE_SUCCESS == code) {
243!
3605
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
243✔
3606
  }
3607
  if (TSDB_CODE_SUCCESS == code) {
243!
3608
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
243✔
3609
  }
3610
  return code;
243✔
3611
}
3612

3613
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
3,045✔
3614
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
3,045✔
3615

3616
  int32_t code = TSDB_CODE_SUCCESS;
3,045✔
3617
  STlv*   pTlv = NULL;
3,045✔
3618
  tlvForEach(pDecoder, pTlv, code) {
21,313!
3619
    switch (pTlv->type) {
18,272!
3620
      case PHY_FILL_CODE_BASE_NODE:
3,044✔
3621
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,044✔
3622
        break;
3,041✔
3623
      case PHY_FILL_CODE_MODE:
3,042✔
3624
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
3,042✔
3625
        break;
3,042✔
3626
      case PHY_FILL_CODE_FILL_EXPRS:
3,043✔
3627
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
3,043✔
3628
        break;
3,043✔
3629
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
2,761✔
3630
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
2,761✔
3631
        break;
2,762✔
3632
      case PHY_FILL_CODE_WSTART:
3,044✔
3633
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
3,044✔
3634
        break;
3,044✔
3635
      case PHY_FILL_CODE_VALUES:
294✔
3636
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
294✔
3637
        break;
294✔
3638
      case PHY_FILL_CODE_TIME_RANGE:
3,043✔
3639
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
3,043✔
3640
        break;
3,041✔
3641
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
1✔
3642
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
1✔
3643
        break;
1✔
3644
      case PHY_FILL_CODE_TIME_RANGE_EXPR:
×
3645
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
3646
        break;
×
3647
      default:
×
3648
        break;
×
3649
    }
3650
  }
3651

3652
  return code;
3,039✔
3653
}
3654

3655
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3656

3657
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
136✔
3658
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
136✔
3659

3660
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
136✔
3661
  if (TSDB_CODE_SUCCESS == code) {
136!
3662
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
136✔
3663
  }
3664

3665
  return code;
136✔
3666
}
3667

3668
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
1,333✔
3669
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
1,333✔
3670

3671
  int32_t code = TSDB_CODE_SUCCESS;
1,333✔
3672
  STlv*   pTlv = NULL;
1,333✔
3673
  tlvForEach(pDecoder, pTlv, code) {
3,999!
3674
    switch (pTlv->type) {
2,666!
3675
      case PHY_SESSION_CODE_WINDOW:
1,333✔
3676
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,333✔
3677
        break;
1,333✔
3678
      case PHY_SESSION_CODE_GAP:
1,333✔
3679
        code = tlvDecodeI64(pTlv, &pNode->gap);
1,333✔
3680
        break;
1,333✔
3681
      default:
×
3682
        break;
×
3683
    }
3684
  }
3685

3686
  return code;
1,333✔
3687
}
3688

3689
enum { PHY_EXT_CODE_WINDOW = 1, PHY_EXT_CODE_SKEY, PHY_EXT_CODE_EKEY };
3690

3691
static int32_t physiExternalWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3692
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
×
3693
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3694
  if (TSDB_CODE_SUCCESS == code) {
×
3695
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_SKEY, pNode->timeRange.skey);
×
3696
  }
3697
  if (TSDB_CODE_SUCCESS == code) {
×
3698
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_EKEY, pNode->timeRange.ekey);
×
3699
  }
3700

3701
  return code;
×
3702
}
3703

3704
static int32_t msgToPhysiExternalWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3705
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
×
3706

3707
  int32_t code = TSDB_CODE_SUCCESS;
×
3708
  STlv*   pTlv = NULL;
×
3709
  tlvForEach(pDecoder, pTlv, code) {
×
3710
    switch (pTlv->type) {
×
3711
      case PHY_EXT_CODE_WINDOW:
×
3712
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
3713
        break;
×
3714
      case PHY_EXT_CODE_SKEY:
×
3715
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
×
3716
        break;
×
3717
      case PHY_EXT_CODE_EKEY:
×
3718
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
×
3719
        break;
×
3720
      default:
×
3721
        break;
×
3722
    }
3723
  }
3724
  return code;
×
3725
}
3726

3727
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY, PHY_STATE_CODE_TRUE_FOR_LIMIT };
3728

3729
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
46✔
3730
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
46✔
3731

3732
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
46✔
3733
  if (TSDB_CODE_SUCCESS == code) {
46!
3734
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
46✔
3735
  }
3736
  if (TSDB_CODE_SUCCESS == code) {
46!
3737
    code = tlvEncodeI64(pEncoder, PHY_STATE_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
46✔
3738
  }
3739

3740
  return code;
46✔
3741
}
3742

3743
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
1,877✔
3744
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
1,877✔
3745

3746
  int32_t code = TSDB_CODE_SUCCESS;
1,877✔
3747
  STlv*   pTlv = NULL;
1,877✔
3748
  tlvForEach(pDecoder, pTlv, code) {
7,508!
3749
    switch (pTlv->type) {
5,631!
3750
      case PHY_STATE_CODE_WINDOW:
1,877✔
3751
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,877✔
3752
        break;
1,877✔
3753
      case PHY_STATE_CODE_KEY:
1,877✔
3754
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
1,877✔
3755
        break;
1,877✔
3756
      case PHY_STATE_CODE_TRUE_FOR_LIMIT:
1,877✔
3757
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
1,877✔
3758
        break;
1,877✔
3759
      default:
×
3760
        break;
×
3761
    }
3762
  }
3763

3764
  return code;
1,877✔
3765
}
3766

3767
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND, PHY_EVENT_CODE_TRUE_FOR_LIMIT };
3768

3769
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
70✔
3770
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
70✔
3771

3772
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
70✔
3773
  if (TSDB_CODE_SUCCESS == code) {
70!
3774
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
70✔
3775
  }
3776
  if (TSDB_CODE_SUCCESS == code) {
70!
3777
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
70✔
3778
  }
3779
  if (TSDB_CODE_SUCCESS == code) {
70!
3780
    code = tlvEncodeI64(pEncoder, PHY_EVENT_CODE_TRUE_FOR_LIMIT, pNode->trueForLimit);
70✔
3781
  }
3782

3783
  return code;
70✔
3784
}
3785

3786
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
141✔
3787
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
141✔
3788

3789
  int32_t code = TSDB_CODE_SUCCESS;
141✔
3790
  STlv*   pTlv = NULL;
141✔
3791
  tlvForEach(pDecoder, pTlv, code) {
705!
3792
    switch (pTlv->type) {
564!
3793
      case PHY_EVENT_CODE_WINDOW:
141✔
3794
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
141✔
3795
        break;
141✔
3796
      case PHY_EVENT_CODE_START_COND:
141✔
3797
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
141✔
3798
        break;
141✔
3799
      case PHY_EVENT_CODE_END_COND:
141✔
3800
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
141✔
3801
        break;
141✔
3802
      case PHY_EVENT_CODE_TRUE_FOR_LIMIT:
141✔
3803
        code = tlvDecodeI64(pTlv, &pNode->trueForLimit);
141✔
3804
        break;
141✔
3805
      default:
×
3806
        break;
×
3807
    }
3808
  }
3809

3810
  return code;
141✔
3811
}
3812

3813
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3814

3815
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
78✔
3816
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
78✔
3817

3818
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
78✔
3819
  if (TSDB_CODE_SUCCESS == code) {
79!
3820
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
79✔
3821
  }
3822
  if (TSDB_CODE_SUCCESS == code) {
79!
3823
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
79✔
3824
  }
3825

3826
  return code;
79✔
3827
}
3828

3829
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
128✔
3830
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
128✔
3831

3832
  int32_t code = TSDB_CODE_SUCCESS;
128✔
3833
  STlv*   pTlv = NULL;
128✔
3834
  tlvForEach(pDecoder, pTlv, code) {
512!
3835
    switch (pTlv->type) {
384!
3836
      case PHY_COUNT_CODE_WINDOW:
128✔
3837
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
128✔
3838
        break;
128✔
3839
      case PHY_COUNT_CODE_WINDOW_COUNT:
128✔
3840
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
128✔
3841
        break;
128✔
3842
      case PHY_COUNT_CODE_WINDOW_SLIDING:
128✔
3843
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
128✔
3844
        break;
128✔
3845
      default:
×
3846
        break;
×
3847
    }
3848
  }
3849

3850
  return code;
128✔
3851
}
3852

3853
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3854

3855
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
12✔
3856
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
12✔
3857

3858
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
12✔
3859
  if (TSDB_CODE_SUCCESS == code) {
12!
3860
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
12✔
3861
  }
3862
  if (TSDB_CODE_SUCCESS == code) {
12!
3863
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
12✔
3864
  }
3865

3866
  return code;
12✔
3867
}
3868

3869
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
12✔
3870
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
12✔
3871

3872
  int32_t code = TSDB_CODE_SUCCESS;
12✔
3873
  STlv*   pTlv = NULL;
12✔
3874
  tlvForEach(pDecoder, pTlv, code) {
48!
3875
    switch (pTlv->type) {
36!
3876
      case PHY_ANOMALY_CODE_WINDOW:
12✔
3877
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
12✔
3878
        break;
12✔
3879
      case PHY_ANOMALY_CODE_KEY:
12✔
3880
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAnomalyKey);
12✔
3881
        break;
12✔
3882
      case PHY_ANOMALY_CODE_WINDOW_OPTION:
12✔
3883
        code = tlvDecodeCStr(pTlv, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
12✔
3884
        break;
12✔
3885
      default:
×
3886
        break;
×
3887
    }
3888
  }
3889

3890
  return code;
12✔
3891
}
3892

3893
enum {
3894
  PHY_PARTITION_CODE_BASE_NODE = 1,
3895
  PHY_PARTITION_CODE_EXPR,
3896
  PHY_PARTITION_CODE_KEYS,
3897
  PHY_PARTITION_CODE_TARGETS,
3898
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3899
  PHY_PARTITION_CODE_TS_SLOTID
3900
};
3901

3902
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,205✔
3903
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
2,205✔
3904

3905
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
2,205✔
3906
  if (TSDB_CODE_SUCCESS == code) {
2,221!
3907
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
2,223✔
3908
  }
3909
  if (TSDB_CODE_SUCCESS == code) {
2,225!
3910
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
2,227✔
3911
  }
3912
  if (TSDB_CODE_SUCCESS == code) {
2,181!
3913
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
2,184✔
3914
  }
3915
  if (TSDB_CODE_SUCCESS == code) {
2,158!
3916
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
2,162✔
3917
  }
3918
  if (TSDB_CODE_SUCCESS == code) {
2,184!
3919
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
2,189✔
3920
  }
3921

3922
  return code;
2,208✔
3923
}
3924

3925
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
11,484✔
3926
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
11,484✔
3927

3928
  int32_t code = TSDB_CODE_SUCCESS;
11,484✔
3929
  STlv*   pTlv = NULL;
11,484✔
3930
  tlvForEach(pDecoder, pTlv, code) {
68,996!
3931
    switch (pTlv->type) {
57,521!
3932
      case PHY_PARTITION_CODE_BASE_NODE:
11,484✔
3933
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
11,484✔
3934
        break;
11,473✔
3935
      case PHY_PARTITION_CODE_EXPR:
118✔
3936
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
118✔
3937
        break;
118✔
3938
      case PHY_PARTITION_CODE_KEYS:
11,477✔
3939
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
11,477✔
3940
        break;
11,483✔
3941
      case PHY_PARTITION_CODE_TARGETS:
11,483✔
3942
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
11,483✔
3943
        break;
11,483✔
3944
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
11,482✔
3945
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
11,482✔
3946
        break;
11,479✔
3947
      case PHY_PARTITION_CODE_TS_SLOTID:
11,477✔
3948
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
11,477✔
3949
        break;
11,476✔
3950
      default:
×
3951
        break;
×
3952
    }
3953
  }
3954

3955
  return code;
11,468✔
3956
}
3957

3958
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
3959

3960
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
227✔
3961
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
227✔
3962

3963
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
227✔
3964
  if (TSDB_CODE_SUCCESS == code) {
227!
3965
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
227✔
3966
  }
3967
  if (TSDB_CODE_SUCCESS == code) {
227!
3968
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
227✔
3969
  }
3970

3971
  return code;
227✔
3972
}
3973

3974
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
20,449✔
3975
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
20,449✔
3976

3977
  int32_t code = TSDB_CODE_SUCCESS;
20,449✔
3978
  STlv*   pTlv = NULL;
20,449✔
3979
  tlvForEach(pDecoder, pTlv, code) {
61,467!
3980
    switch (pTlv->type) {
41,015!
3981
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
20,450✔
3982
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
20,450✔
3983
        break;
20,451✔
3984
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
114✔
3985
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
114✔
3986
        break;
114✔
3987
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
20,451✔
3988
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
20,451✔
3989
        break;
20,453✔
3990
      default:
×
3991
        break;
×
3992
    }
3993
  }
3994

3995
  return code;
20,451✔
3996
}
3997

3998
enum {
3999
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
4000
  PHY_INERP_FUNC_CODE_EXPR,
4001
  PHY_INERP_FUNC_CODE_FUNCS,
4002
  PHY_INERP_FUNC_CODE_TIME_RANGE,
4003
  PHY_INERP_FUNC_CODE_INTERVAL,
4004
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
4005
  PHY_INERP_FUNC_CODE_FILL_MODE,
4006
  PHY_INERP_FUNC_CODE_FILL_VALUES,
4007
  PHY_INERP_FUNC_CODE_TIME_SERIES,
4008
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL,
4009
  PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT,
4010
};
4011

4012
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
332✔
4013
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
332✔
4014

4015
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
332✔
4016
  if (TSDB_CODE_SUCCESS == code) {
332!
4017
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
332✔
4018
  }
4019
  if (TSDB_CODE_SUCCESS == code) {
332!
4020
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
332✔
4021
  }
4022
  if (TSDB_CODE_SUCCESS == code) {
332!
4023
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
332✔
4024
  }
4025
  if (TSDB_CODE_SUCCESS == code) {
332!
4026
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
332✔
4027
  }
4028
  if (TSDB_CODE_SUCCESS == code) {
332!
4029
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
332✔
4030
  }
4031
  if (TSDB_CODE_SUCCESS == code) {
332!
4032
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
332✔
4033
  }
4034
  if (TSDB_CODE_SUCCESS == code) {
332!
4035
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
332✔
4036
  }
4037
  if (TSDB_CODE_SUCCESS == code) {
332!
4038
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
332✔
4039
  }
4040
  if (TSDB_CODE_SUCCESS == code) {
332!
4041
    code = tlvEncodeI64(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL, pNode->rangeInterval);
332✔
4042
  }
4043
  if (TSDB_CODE_SUCCESS == code) {
332!
4044
    code = tlvEncodeI8(pEncoder, PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT, pNode->rangeIntervalUnit);
332✔
4045
  }
4046

4047
  return code;
332✔
4048
}
4049

4050
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
12,099✔
4051
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
12,099✔
4052

4053
  int32_t code = TSDB_CODE_SUCCESS;
12,099✔
4054
  STlv*   pTlv = NULL;
12,099✔
4055
  tlvForEach(pDecoder, pTlv, code) {
126,846!
4056
    switch (pTlv->type) {
114,749!
4057
      case PHY_INERP_FUNC_CODE_BASE_NODE:
12,099✔
4058
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
12,099✔
4059
        break;
12,099✔
4060
      case PHY_INERP_FUNC_CODE_EXPR:
146✔
4061
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
146✔
4062
        break;
146✔
4063
      case PHY_INERP_FUNC_CODE_FUNCS:
12,099✔
4064
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
12,099✔
4065
        break;
12,098✔
4066
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
12,098✔
4067
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
12,098✔
4068
        break;
12,096✔
4069
      case PHY_INERP_FUNC_CODE_INTERVAL:
12,097✔
4070
        code = tlvDecodeI64(pTlv, &pNode->interval);
12,097✔
4071
        break;
12,096✔
4072
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
12,096✔
4073
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
12,096✔
4074
        break;
12,096✔
4075
      case PHY_INERP_FUNC_CODE_FILL_MODE:
12,096✔
4076
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
12,096✔
4077
        break;
12,096✔
4078
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
5,721✔
4079
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
5,721✔
4080
        break;
5,723✔
4081
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
12,099✔
4082
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
12,099✔
4083
        break;
12,099✔
4084
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL:
12,099✔
4085
        code = tlvDecodeI64(pTlv, &pNode->rangeInterval);
12,099✔
4086
        break;
12,099✔
4087
      case PHY_INTERP_FUNC_CODE_RANGE_INTERVAL_UNIT:
12,099✔
4088
        code = tlvDecodeI8(pTlv, &pNode->rangeIntervalUnit);
12,099✔
4089
        break;
12,099✔
4090
      default:
×
4091
        break;
×
4092
    }
4093
  }
4094

4095
  return code;
12,097✔
4096
}
4097

4098
enum {
4099
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
4100
  PHY_FORECAST_FUNC_CODE_EXPR,
4101
  PHY_FORECAST_FUNC_CODE_FUNCS,
4102
};
4103

4104
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
41✔
4105
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
41✔
4106

4107
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
41✔
4108
  if (TSDB_CODE_SUCCESS == code) {
41!
4109
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
41✔
4110
  }
4111
  if (TSDB_CODE_SUCCESS == code) {
41!
4112
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
41✔
4113
  }
4114

4115
  return code;
41✔
4116
}
4117

4118
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
41✔
4119
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
41✔
4120

4121
  int32_t code = TSDB_CODE_SUCCESS;
41✔
4122
  STlv*   pTlv = NULL;
41✔
4123
  tlvForEach(pDecoder, pTlv, code) {
123!
4124
    switch (pTlv->type) {
82!
4125
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
41✔
4126
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
41✔
4127
        break;
41✔
4128
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
4129
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
4130
        break;
×
4131
      case PHY_FORECAST_FUNC_CODE_FUNCS:
41✔
4132
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
41✔
4133
        break;
41✔
4134
      default:
×
4135
        break;
×
4136
    }
4137
  }
4138

4139
  return code;
41✔
4140
}
4141

4142
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
4143

4144
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,417✔
4145
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
80,417✔
4146
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
80,417✔
4147
}
4148

4149
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
1,442,824✔
4150
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
1,442,824✔
4151

4152
  int32_t code = TSDB_CODE_SUCCESS;
1,442,824✔
4153
  STlv*   pTlv = NULL;
1,442,824✔
4154
  tlvForEach(pDecoder, pTlv, code) {
2,886,001!
4155
    switch (pTlv->type) {
1,443,021!
4156
      case PHY_DATA_SINK_CODE_INPUT_DESC:
1,443,021✔
4157
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
1,443,021✔
4158
        break;
1,443,177✔
4159
      default:
×
4160
        break;
×
4161
    }
4162
  }
4163

4164
  return code;
1,442,986✔
4165
}
4166

4167
enum { PHY_DISPATCH_CODE_SINK = 1 };
4168

4169
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
79,483✔
4170
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
79,483✔
4171
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
79,483✔
4172
}
4173

4174
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
1,441,458✔
4175
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
1,441,458✔
4176

4177
  int32_t code = TSDB_CODE_SUCCESS;
1,441,458✔
4178
  STlv*   pTlv = NULL;
1,441,458✔
4179
  tlvForEach(pDecoder, pTlv, code) {
2,883,125!
4180
    switch (pTlv->type) {
1,442,037!
4181
      case PHY_DISPATCH_CODE_SINK:
1,442,037✔
4182
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,442,037✔
4183
        break;
1,441,667✔
4184
      default:
×
4185
        break;
×
4186
    }
4187
  }
4188

4189
  return code;
1,440,672✔
4190
}
4191

4192
enum {
4193
  PHY_QUERY_INSERT_CODE_SINK = 1,
4194
  PHY_QUERY_INSERT_CODE_COLS,
4195
  PHY_QUERY_INSERT_CODE_TABLE_ID,
4196
  PHY_QUERY_INSERT_CODE_STABLE_ID,
4197
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
4198
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
4199
  PHY_QUERY_INSERT_CODE_VG_ID,
4200
  PHY_QUERY_INSERT_CODE_EP_SET,
4201
  PHY_QUERY_INSERT_CODE_EXPLAIN
4202
};
4203

4204
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
25✔
4205
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
25✔
4206

4207
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
25✔
4208
  if (TSDB_CODE_SUCCESS == code) {
25!
4209
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
25✔
4210
  }
4211
  if (TSDB_CODE_SUCCESS == code) {
25!
4212
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
25✔
4213
  }
4214
  if (TSDB_CODE_SUCCESS == code) {
25!
4215
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
25✔
4216
  }
4217
  if (TSDB_CODE_SUCCESS == code) {
25!
4218
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
25✔
4219
  }
4220
  if (TSDB_CODE_SUCCESS == code) {
25!
4221
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
25✔
4222
  }
4223
  if (TSDB_CODE_SUCCESS == code) {
25!
4224
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
25✔
4225
  }
4226
  if (TSDB_CODE_SUCCESS == code) {
25!
4227
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
25✔
4228
  }
4229
  if (TSDB_CODE_SUCCESS == code) {
25!
4230
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
25✔
4231
  }
4232

4233
  return code;
25✔
4234
}
4235

4236
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
81✔
4237
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
81✔
4238

4239
  int32_t code = TSDB_CODE_SUCCESS;
81✔
4240
  STlv*   pTlv = NULL;
81✔
4241
  tlvForEach(pDecoder, pTlv, code) {
810!
4242
    switch (pTlv->type) {
729!
4243
      case PHY_QUERY_INSERT_CODE_SINK:
81✔
4244
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
81✔
4245
        break;
81✔
4246
      case PHY_QUERY_INSERT_CODE_COLS:
81✔
4247
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
81✔
4248
        break;
81✔
4249
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
81✔
4250
        code = tlvDecodeU64(pTlv, &pNode->tableId);
81✔
4251
        break;
81✔
4252
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
81✔
4253
        code = tlvDecodeU64(pTlv, &pNode->stableId);
81✔
4254
        break;
81✔
4255
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
81✔
4256
        code = tlvDecodeI8(pTlv, &pNode->tableType);
81✔
4257
        break;
81✔
4258
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
81✔
4259
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
81✔
4260
        break;
81✔
4261
      case PHY_QUERY_INSERT_CODE_VG_ID:
81✔
4262
        code = tlvDecodeI32(pTlv, &pNode->vgId);
81✔
4263
        break;
81✔
4264
      case PHY_QUERY_INSERT_CODE_EP_SET:
81✔
4265
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
81✔
4266
        break;
81✔
4267
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
81✔
4268
        code = tlvDecodeBool(pTlv, &pNode->explain);
81✔
4269
        break;
81✔
4270
      default:
×
4271
        break;
×
4272
    }
4273
  }
4274

4275
  return code;
81✔
4276
}
4277

4278
enum {
4279
  PHY_DELETER_CODE_SINK = 1,
4280
  PHY_DELETER_CODE_TABLE_ID,
4281
  PHY_DELETER_CODE_TABLE_TYPE,
4282
  PHY_DELETER_CODE_TABLE_FNAME,
4283
  PHY_DELETER_CODE_TS_COL_NAME,
4284
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4285
  PHY_DELETER_CODE_AFFECTED_ROWS,
4286
  PHY_DELETER_CODE_START_TS,
4287
  PHY_DELETER_CODE_END_TS
4288
};
4289

4290
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,020✔
4291
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
1,020✔
4292

4293
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,020✔
4294
  if (TSDB_CODE_SUCCESS == code) {
1,020!
4295
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
1,020✔
4296
  }
4297
  if (TSDB_CODE_SUCCESS == code) {
1,021!
4298
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
1,021✔
4299
  }
4300
  if (TSDB_CODE_SUCCESS == code) {
1,021!
4301
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
1,021✔
4302
  }
4303
  if (TSDB_CODE_SUCCESS == code) {
1,021!
4304
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
1,021✔
4305
  }
4306
  if (TSDB_CODE_SUCCESS == code) {
1,021!
4307
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
1,021✔
4308
  }
4309
  if (TSDB_CODE_SUCCESS == code) {
1,021!
4310
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
1,021✔
4311
  }
4312
  if (TSDB_CODE_SUCCESS == code) {
1,021!
4313
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
1,021✔
4314
  }
4315
  if (TSDB_CODE_SUCCESS == code) {
1,021!
4316
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
1,021✔
4317
  }
4318

4319
  return code;
1,021✔
4320
}
4321

4322
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
1,133✔
4323
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
1,133✔
4324

4325
  int32_t code = TSDB_CODE_SUCCESS;
1,133✔
4326
  STlv*   pTlv = NULL;
1,133✔
4327
  tlvForEach(pDecoder, pTlv, code) {
11,330!
4328
    switch (pTlv->type) {
10,197!
4329
      case PHY_DELETER_CODE_SINK:
1,133✔
4330
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,133✔
4331
        break;
1,133✔
4332
      case PHY_DELETER_CODE_TABLE_ID:
1,133✔
4333
        code = tlvDecodeU64(pTlv, &pNode->tableId);
1,133✔
4334
        break;
1,133✔
4335
      case PHY_DELETER_CODE_TABLE_TYPE:
1,133✔
4336
        code = tlvDecodeI8(pTlv, &pNode->tableType);
1,133✔
4337
        break;
1,133✔
4338
      case PHY_DELETER_CODE_TABLE_FNAME:
1,133✔
4339
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
1,133✔
4340
        break;
1,133✔
4341
      case PHY_DELETER_CODE_TS_COL_NAME:
1,133✔
4342
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
1,133✔
4343
        break;
1,133✔
4344
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
1,133✔
4345
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
1,133✔
4346
        break;
1,133✔
4347
      case PHY_DELETER_CODE_AFFECTED_ROWS:
1,133✔
4348
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
1,133✔
4349
        break;
1,133✔
4350
      case PHY_DELETER_CODE_START_TS:
1,133✔
4351
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
1,133✔
4352
        break;
1,133✔
4353
      case PHY_DELETER_CODE_END_TS:
1,133✔
4354
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
1,133✔
4355
        break;
1,133✔
4356
      default:
×
4357
        break;
×
4358
    }
4359
  }
4360

4361
  return code;
1,133✔
4362
}
4363

4364
enum {
4365
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4366
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4367
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4368
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4369
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4370
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4371
};
4372

4373
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
151✔
4374
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
151✔
4375

4376
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
151✔
4377
  if (TSDB_CODE_SUCCESS == code) {
151!
4378
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
151✔
4379
  }
4380
  if (TSDB_CODE_SUCCESS == code) {
151!
4381
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
151✔
4382
  }
4383
  if (TSDB_CODE_SUCCESS == code) {
151!
4384
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
151✔
4385
  }
4386
  if (TSDB_CODE_SUCCESS == code) {
151!
4387
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
151✔
4388
  }
4389
  if (TSDB_CODE_SUCCESS == code) {
151!
4390
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
151✔
4391
  }
4392

4393
  return code;
151✔
4394
}
4395

4396
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
6,241✔
4397
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
6,241✔
4398

4399
  int32_t code = TSDB_CODE_SUCCESS;
6,241✔
4400
  STlv*   pTlv = NULL;
6,241✔
4401
  tlvForEach(pDecoder, pTlv, code) {
37,446!
4402
    switch (pTlv->type) {
31,205!
4403
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
6,241✔
4404
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,241✔
4405
        break;
6,241✔
4406
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4407
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4408
        break;
×
4409
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
6,241✔
4410
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
6,241✔
4411
        break;    
6,241✔
4412
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
6,241✔
4413
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
6,241✔
4414
        break;    
6,241✔
4415
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
6,241✔
4416
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
6,241✔
4417
        break;    
6,241✔
4418
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
6,241✔
4419
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
6,241✔
4420
        break;    
6,241✔
4421
      default:
×
4422
        break;
×
4423
    }
4424
  }
4425

4426
  return code;
6,241✔
4427
}
4428

4429

4430
enum {
4431
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4432
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4433
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4434
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4435
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4436
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4437
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4438
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4439
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4440
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS,
4441
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID,
4442
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME,
4443
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME,
4444
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID,
4445
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET,
4446
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS,
4447
  PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME
4448
};
4449

4450
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
151✔
4451
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
151✔
4452

4453
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
151✔
4454
  if (TSDB_CODE_SUCCESS == code) {
151!
4455
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
151✔
4456
  }
4457
  if (TSDB_CODE_SUCCESS == code) {
151!
4458
    switch (pNode->qType) {
151!
4459
      case DYN_QTYPE_STB_HASH: {
151✔
4460
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
151✔
4461
        if (TSDB_CODE_SUCCESS == code) {
151!
4462
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
151✔
4463
        }
4464
        if (TSDB_CODE_SUCCESS == code) {
151!
4465
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
151✔
4466
        }
4467
        if (TSDB_CODE_SUCCESS == code) {
151!
4468
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
151✔
4469
        }
4470
        if (TSDB_CODE_SUCCESS == code) {
151!
4471
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
151✔
4472
        }
4473
        if (TSDB_CODE_SUCCESS == code) {
151!
4474
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
151✔
4475
        }
4476
        if (TSDB_CODE_SUCCESS == code) {
151!
4477
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
151✔
4478
        }
4479
        break;
151✔
4480
      }
4481
      case DYN_QTYPE_VTB_SCAN: {
×
4482
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS, pNode->vtbScan.scanAllCols);
×
4483
        if (TSDB_CODE_SUCCESS == code) {
×
4484
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID, pNode->vtbScan.suid);
×
4485
        }
4486
        if (TSDB_CODE_SUCCESS == code) {
×
4487
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME, pNode->vtbScan.dbName);
×
4488
        }
4489
        if (TSDB_CODE_SUCCESS == code) {
×
4490
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME, pNode->vtbScan.stbName);
×
4491
        }
4492
        if (TSDB_CODE_SUCCESS == code) {
×
4493
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID, pNode->vtbScan.accountId);
×
4494
        }
4495
        if (TSDB_CODE_SUCCESS == code) {
×
4496
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET, epSetToMsg, &pNode->vtbScan.mgmtEpSet);
×
4497
        }
4498
        if (TSDB_CODE_SUCCESS == code) {
×
4499
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS, nodeListToMsg, pNode->vtbScan.pScanCols);
×
4500
        }
4501
        break;
×
4502
      }
4503
      default:
×
4504
        return TSDB_CODE_INVALID_PARA;
×
4505
    }
4506
  }
4507
  if (TSDB_CODE_SUCCESS == code) {
151!
4508
    code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME, pNode->dynTbname);
151✔
4509
  }
4510
  return code;
151✔
4511
}
4512

4513
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
6,247✔
4514
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
6,247✔
4515

4516
  int32_t code = TSDB_CODE_SUCCESS;
6,247✔
4517
  STlv*   pTlv = NULL;
6,247✔
4518
  tlvForEach(pDecoder, pTlv, code) {
68,717!
4519
    switch (pTlv->type) {
62,470!
4520
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
6,247✔
4521
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
6,247✔
4522
        break;
6,247✔
4523
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
6,247✔
4524
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
6,247✔
4525
        break;
6,247✔
4526
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
6,241✔
4527
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
6,241✔
4528
        break;
6,241✔
4529
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
6,241✔
4530
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
6,241✔
4531
        break;
6,241✔
4532
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
6,241✔
4533
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
6,241✔
4534
        break;
6,241✔
4535
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
6,241✔
4536
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
6,241✔
4537
        break;
6,241✔
4538
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
6,241✔
4539
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
6,241✔
4540
        break;      
6,241✔
4541
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
6,241✔
4542
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
6,241✔
4543
        break;
6,241✔
4544
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
6,241✔
4545
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
6,241✔
4546
        break;
6,241✔
4547
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS:
6✔
4548
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.scanAllCols);
6✔
4549
        break;
6✔
4550
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID:
6✔
4551
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.suid);
6✔
4552
        break;
6✔
4553
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME:
6✔
4554
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.dbName, sizeof(pNode->vtbScan.dbName));
6✔
4555
        break;
6✔
4556
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME:
6✔
4557
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.stbName, sizeof(pNode->vtbScan.stbName));
6✔
4558
        break;
6✔
4559
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID:
6✔
4560
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.accountId);
6✔
4561
        break;
6✔
4562
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET:
6✔
4563
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->vtbScan.mgmtEpSet);
6✔
4564
        break;
6✔
4565
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS:
6✔
4566
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pScanCols);
6✔
4567
        break;
6✔
4568
      case PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME:
6,247✔
4569
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
6,247✔
4570
        break;
6,247✔
4571
      default:
×
4572
        break;
×
4573
    }
4574
  }
4575

4576
  return code;
6,247✔
4577
}
4578

4579

4580

4581
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4582

4583
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,452✔
4584
  const SSubplanId* pNode = (const SSubplanId*)pObj;
80,452✔
4585

4586
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
80,452✔
4587
  if (TSDB_CODE_SUCCESS == code) {
80,315!
4588
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
80,348✔
4589
  }
4590
  if (TSDB_CODE_SUCCESS == code) {
80,112✔
4591
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
79,931✔
4592
  }
4593

4594
  return code;
79,882✔
4595
}
4596

4597
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4598
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4599

4600
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4601
  if (TSDB_CODE_SUCCESS == code) {
×
4602
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4603
  }
4604
  if (TSDB_CODE_SUCCESS == code) {
×
4605
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4606
  }
4607

4608
  return code;
×
4609
}
4610

4611
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
1,443,628✔
4612
  SSubplanId* pNode = (SSubplanId*)pObj;
1,443,628✔
4613

4614
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
1,443,628✔
4615
  if (TSDB_CODE_SUCCESS == code) {
1,443,737!
4616
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
1,443,808✔
4617
  }
4618
  if (TSDB_CODE_SUCCESS == code) {
1,443,659✔
4619
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
1,443,518✔
4620
  }
4621

4622
  return code;
1,443,589✔
4623
}
4624

4625
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4626
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4627

4628
  int32_t code = TSDB_CODE_SUCCESS;
×
4629
  STlv*   pTlv = NULL;
×
4630
  tlvForEach(pDecoder, pTlv, code) {
×
4631
    switch (pTlv->type) {
×
4632
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4633
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4634
        break;
×
4635
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4636
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4637
        break;
×
4638
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4639
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4640
        break;
×
4641
      default:
×
4642
        break;
×
4643
    }
4644
  }
4645

4646
  return code;
×
4647
}
4648

4649
enum {
4650
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4651
  SUBPLAN_CODE_ROOT_NODE,
4652
  SUBPLAN_CODE_DATA_SINK,
4653
  SUBPLAN_CODE_TAG_COND,
4654
  SUBPLAN_CODE_TAG_INDEX_COND
4655
};
4656

4657
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,423✔
4658
  const SSubplan* pNode = (const SSubplan*)pObj;
80,423✔
4659

4660
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
80,423✔
4661
  if (TSDB_CODE_SUCCESS == code) {
79,864!
4662
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
79,891✔
4663
  }
4664
  if (TSDB_CODE_SUCCESS == code) {
79,778✔
4665
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
79,730✔
4666
  }
4667
  if (TSDB_CODE_SUCCESS == code) {
79,744✔
4668
    code = tlvEncodeValueI32(pEncoder, pNode->level);
79,721✔
4669
  }
4670
  if (TSDB_CODE_SUCCESS == code) {
79,708!
4671
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
79,712✔
4672
  }
4673
  if (TSDB_CODE_SUCCESS == code) {
79,762!
4674
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
79,846✔
4675
  }
4676
  if (TSDB_CODE_SUCCESS == code) {
79,851!
4677
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
79,880✔
4678
  }
4679
  if (TSDB_CODE_SUCCESS == code) {
80,010!
4680
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
80,055✔
4681
  }
4682
  if (TSDB_CODE_SUCCESS == code) {
79,755!
4683
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
79,816✔
4684
  }
4685
  if (TSDB_CODE_SUCCESS == code) {
79,752!
4686
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
79,823✔
4687
  }
4688
  if (TSDB_CODE_SUCCESS == code) {
79,731!
4689
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
79,751✔
4690
  }
4691
  if (TSDB_CODE_SUCCESS == code) {
79,734!
4692
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
79,783✔
4693
  }
4694
  if (TSDB_CODE_SUCCESS == code) {
79,732!
4695
    code = tlvEncodeValueBool(pEncoder, pNode->processOneBlock);
79,801✔
4696
  }
4697
  if (TSDB_CODE_SUCCESS == code) {
79,764!
4698
    code = tlvEncodeValueBool(pEncoder, pNode->dynTbname);
79,859✔
4699
  }
4700
  return code;
79,931✔
4701
}
4702

4703
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,625✔
4704
  const SSubplan* pNode = (const SSubplan*)pObj;
80,625✔
4705

4706
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
80,625✔
4707
  if (TSDB_CODE_SUCCESS == code) {
80,006!
4708
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
80,020✔
4709
  }
4710
  if (TSDB_CODE_SUCCESS == code) {
80,648!
4711
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
80,687✔
4712
  }
4713
  if (TSDB_CODE_SUCCESS == code) {
80,057!
4714
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
80,132✔
4715
  }
4716
  if (TSDB_CODE_SUCCESS == code) {
80,187!
4717
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
80,275✔
4718
  }
4719

4720
  return code;
80,361✔
4721
}
4722

4723
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
1,443,688✔
4724
  SSubplan* pNode = (SSubplan*)pObj;
1,443,688✔
4725

4726
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
1,443,688✔
4727
  if (TSDB_CODE_SUCCESS == code) {
1,443,586!
4728
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
1,443,604✔
4729
  }
4730
  if (TSDB_CODE_SUCCESS == code) {
1,443,432✔
4731
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
1,443,369✔
4732
  }
4733
  if (TSDB_CODE_SUCCESS == code) {
1,443,536✔
4734
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
1,443,487✔
4735
  }
4736
  if (TSDB_CODE_SUCCESS == code) {
1,443,521✔
4737
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
1,443,489✔
4738
  }
4739
  if (TSDB_CODE_SUCCESS == code) {
1,443,963✔
4740
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
1,443,935✔
4741
  }
4742
  if (TSDB_CODE_SUCCESS == code) {
1,444,001✔
4743
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
1,443,741✔
4744
  }
4745
  if (TSDB_CODE_SUCCESS == code) {
1,444,380✔
4746
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
1,444,127✔
4747
  }
4748
  if (TSDB_CODE_SUCCESS == code) {
1,444,211✔
4749
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
1,443,992✔
4750
  }
4751
  if (TSDB_CODE_SUCCESS == code) {
1,444,007✔
4752
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
1,443,782✔
4753
  }
4754
  if (TSDB_CODE_SUCCESS == code) {
1,443,985✔
4755
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
1,443,688✔
4756
  }
4757
  if (TSDB_CODE_SUCCESS == code) {
1,443,964✔
4758
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
1,443,678✔
4759
  }
4760
  if (TSDB_CODE_SUCCESS == code) {
1,443,941✔
4761
    code = tlvDecodeValueBool(pDecoder, &pNode->processOneBlock);
1,443,665✔
4762
  }
4763
  if (TSDB_CODE_SUCCESS == code) {
1,443,937✔
4764
    code = tlvDecodeValueBool(pDecoder, &pNode->dynTbname);
1,443,681✔
4765
  }
4766
  return code;
1,443,685✔
4767
}
4768

4769
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
1,443,582✔
4770
  SSubplan* pNode = (SSubplan*)pObj;
1,443,582✔
4771

4772
  int32_t code = TSDB_CODE_SUCCESS;
1,443,582✔
4773
  STlv*   pTlv = NULL;
1,443,582✔
4774
  tlvForEach(pDecoder, pTlv, code) {
5,847,069!
4775
    switch (pTlv->type) {
4,405,063!
4776
      case SUBPLAN_CODE_INLINE_ATTRS:
1,443,764✔
4777
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
1,443,764✔
4778
        break;
1,443,508✔
4779
      case SUBPLAN_CODE_ROOT_NODE:
1,443,691✔
4780
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
1,443,691✔
4781
        break;
1,442,544✔
4782
      case SUBPLAN_CODE_DATA_SINK:
1,442,557✔
4783
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
1,442,557✔
4784
        break;
1,442,393✔
4785
      case SUBPLAN_CODE_TAG_COND:
60,443✔
4786
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
60,443✔
4787
        break;
60,445✔
4788
      case SUBPLAN_CODE_TAG_INDEX_COND:
14,608✔
4789
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
14,608✔
4790
        break;
14,597✔
4791
      default:
×
4792
        break;
×
4793
    }
4794
  }
4795

4796
  return code;
1,441,929✔
4797
}
4798

4799
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4800

4801
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
12✔
4802
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
12✔
4803

4804
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
12✔
4805
  if (TSDB_CODE_SUCCESS == code) {
12!
4806
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
12✔
4807
  }
4808

4809
  return code;
12✔
4810
}
4811

4812
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
12✔
4813
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
12✔
4814

4815
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
12✔
4816
  if (TSDB_CODE_SUCCESS == code) {
12!
4817
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
12✔
4818
  }
4819

4820
  return code;
12✔
4821
}
4822

4823
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
6✔
4824
  SQueryPlan* pNode = (SQueryPlan*)pObj;
6✔
4825

4826
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
6✔
4827
  if (TSDB_CODE_SUCCESS == code) {
6!
4828
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
6✔
4829
  }
4830

4831
  return code;
6✔
4832
}
4833

4834
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
6✔
4835
  SQueryPlan* pNode = (SQueryPlan*)pObj;
6✔
4836

4837
  int32_t code = TSDB_CODE_SUCCESS;
6✔
4838
  STlv*   pTlv = NULL;
6✔
4839
  tlvForEach(pDecoder, pTlv, code) {
18!
4840
    switch (pTlv->type) {
12!
4841
      case QUERY_PLAN_CODE_INLINE_ATTRS:
6✔
4842
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
6✔
4843
        break;
6✔
4844
      case QUERY_PLAN_CODE_SUBPLANS:
6✔
4845
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
6✔
4846
        break;
6✔
4847
      default:
×
4848
        break;
×
4849
    }
4850
  }
4851

4852
  return code;
6✔
4853
}
4854

4855
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,422,170✔
4856
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4857
  int32_t code = TSDB_CODE_SUCCESS;
3,422,170✔
4858
  switch (nodeType(pObj)) {
3,422,170!
4859
    case QUERY_NODE_COLUMN:
592,740✔
4860
      code = columnNodeToMsg(pObj, pEncoder);
592,740✔
4861
      break;
583,481✔
4862
    case QUERY_NODE_VALUE:
683,203✔
4863
      code = valueNodeToMsg(pObj, pEncoder);
683,203✔
4864
      break;
683,900✔
4865
    case QUERY_NODE_OPERATOR:
44,935✔
4866
      code = operatorNodeToMsg(pObj, pEncoder);
44,935✔
4867
      break;
44,842✔
4868
    case QUERY_NODE_LOGIC_CONDITION:
9,604✔
4869
      code = logicConditionNodeToMsg(pObj, pEncoder);
9,604✔
4870
      break;
9,603✔
4871
    case QUERY_NODE_FUNCTION:
70,055✔
4872
      code = functionNodeToMsg(pObj, pEncoder);
70,055✔
4873
      break;
70,022✔
4874
    case QUERY_NODE_ORDER_BY_EXPR:
10,697✔
4875
      code = orderByExprNodeToMsg(pObj, pEncoder);
10,697✔
4876
      break;
10,702✔
4877
    case QUERY_NODE_LIMIT:
9,714✔
4878
      code = limitNodeToMsg(pObj, pEncoder);
9,714✔
4879
      break;
9,700✔
4880
    case QUERY_NODE_NODE_LIST:
1,282✔
4881
      code = nodeListNodeToMsg(pObj, pEncoder);
1,282✔
4882
      break;
1,280✔
4883
    case QUERY_NODE_TARGET:
494,970✔
4884
      code = targetNodeToMsg(pObj, pEncoder);
494,970✔
4885
      break;
491,396✔
4886
    case QUERY_NODE_TIME_RANGE:
×
4887
      code = timeRangeNodeToMsg(pObj, pEncoder);
×
4888
      break;
×
4889
    case QUERY_NODE_DATABLOCK_DESC:
250,399✔
4890
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
250,399✔
4891
      break;
249,169✔
4892
    case QUERY_NODE_SLOT_DESC:
934,741✔
4893
      code = slotDescNodeToMsg(pObj, pEncoder);
934,741✔
4894
      break;
925,935✔
4895
    case QUERY_NODE_DOWNSTREAM_SOURCE:
47,130✔
4896
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
47,130✔
4897
      break;
47,119✔
4898
    case QUERY_NODE_LEFT_VALUE:
418✔
4899
      break;
418✔
4900
    case QUERY_NODE_WHEN_THEN:
107✔
4901
      code = whenThenNodeToMsg(pObj, pEncoder);
107✔
4902
      break;
107✔
4903
    case QUERY_NODE_CASE_WHEN:
76✔
4904
      code = caseWhenNodeToMsg(pObj, pEncoder);
76✔
4905
      break;
77✔
4906
    case QUERY_NODE_WINDOW_OFFSET:
668✔
4907
      code = windowOffsetNodeToMsg(pObj, pEncoder);
668✔
4908
      break;
668✔
4909
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
1,036✔
4910
      code = physiTagScanNodeToMsg(pObj, pEncoder);
1,036✔
4911
      break;
1,038✔
4912
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
9✔
4913
      code = physiScanNodeToMsg(pObj, pEncoder);
9✔
4914
      break;
9✔
4915
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
167✔
4916
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4917
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
167✔
4918
      break;
168✔
4919
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
59,959✔
4920
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4921
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4922
      code = physiTableScanNodeToMsg(pObj, pEncoder);
59,959✔
4923
      break;
60,114✔
4924
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
5,164✔
4925
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
5,164✔
4926
      break;
5,170✔
4927
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
23,938✔
4928
      code = physiProjectNodeToMsg(pObj, pEncoder);
23,938✔
4929
      break;
23,976✔
4930
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
5,543✔
4931
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
5,543✔
4932
      break;
5,544✔
4933
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
151✔
4934
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
151✔
4935
      break;
151✔
4936
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
17,703✔
4937
      code = physiAggNodeToMsg(pObj, pEncoder);
17,703✔
4938
      break;
17,726✔
4939
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
37,980✔
4940
      code = physiExchangeNodeToMsg(pObj, pEncoder);
37,980✔
4941
      break;
37,969✔
4942
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
6,733✔
4943
      code = physiMergeNodeToMsg(pObj, pEncoder);
6,733✔
4944
      break;
6,733✔
4945
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
3,342✔
4946
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4947
      code = physiSortNodeToMsg(pObj, pEncoder);
3,342✔
4948
      break;
3,337✔
4949
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
3,282✔
4950
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4951
      code = physiIntervalNodeToMsg(pObj, pEncoder);
3,282✔
4952
      break;
3,300✔
4953
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
241✔
4954
      code = physiFillNodeToMsg(pObj, pEncoder);
241✔
4955
      break;
243✔
4956
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
136✔
4957
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
136✔
4958
      break;
136✔
4959
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
4960
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
4961
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
4962
      code = physiExternalWindowNodeToMsg(pObj, pEncoder);
×
4963
      break;
×
4964
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
46✔
4965
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
46✔
4966
      break;
46✔
4967
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
70✔
4968
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
70✔
4969
      break;
70✔
4970
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
78✔
4971
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
78✔
4972
      break;
79✔
4973
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
12✔
4974
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
12✔
4975
      break;
12✔
4976
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
2,203✔
4977
      code = physiPartitionNodeToMsg(pObj, pEncoder);
2,203✔
4978
      break;
2,202✔
4979
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
227✔
4980
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
227✔
4981
      break;
227✔
4982
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
332✔
4983
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
332✔
4984
      break;
332✔
4985
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
41✔
4986
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
41✔
4987
      break;
41✔
4988
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
79,532✔
4989
      code = physiDispatchNodeToMsg(pObj, pEncoder);
79,532✔
4990
      break;
79,033✔
4991
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
25✔
4992
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
25✔
4993
      break;
25✔
4994
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,020✔
4995
      code = physiDeleteNodeToMsg(pObj, pEncoder);
1,020✔
4996
      break;
1,021✔
4997
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
151✔
4998
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
151✔
4999
      break;
151✔
5000
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
151✔
5001
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
151✔
5002
      break;
151✔
5003
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
2,362✔
5004
      code = physiVirtualTableScanNodeToMsg(pObj, pEncoder);
2,362✔
5005
      break;
2,362✔
5006
    case QUERY_NODE_PHYSICAL_SUBPLAN:
80,549✔
5007
      code = subplanToMsg(pObj, pEncoder);
80,549✔
5008
      break;
80,366✔
5009
    case QUERY_NODE_PHYSICAL_PLAN:
12✔
5010
      code = queryPlanToMsg(pObj, pEncoder);
12✔
5011
      break;
12✔
5012
    default:
×
5013
      break;
×
5014
  }
5015
  if (TSDB_CODE_SUCCESS != code) {
3,399,399!
5016
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
5017
  }
5018
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
5019
  return code;
3,402,859✔
5020
}
5021

5022
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
48,190,057✔
5023
  int32_t code = TSDB_CODE_SUCCESS;
48,190,057✔
5024
  switch (nodeType(pObj)) {
48,190,057!
5025
    case QUERY_NODE_COLUMN:
9,112,991✔
5026
      code = msgToColumnNode(pDecoder, pObj);
9,112,991✔
5027
      break;
9,148,267✔
5028
    case QUERY_NODE_VALUE:
2,685,178✔
5029
      code = msgToValueNode(pDecoder, pObj);
2,685,178✔
5030
      break;
2,674,354✔
5031
    case QUERY_NODE_OPERATOR:
1,246,592✔
5032
      code = msgToOperatorNode(pDecoder, pObj);
1,246,592✔
5033
      break;
1,246,214✔
5034
    case QUERY_NODE_LOGIC_CONDITION:
249,219✔
5035
      code = msgToLogicConditionNode(pDecoder, pObj);
249,219✔
5036
      break;
249,258✔
5037
    case QUERY_NODE_FUNCTION:
2,613,409✔
5038
      code = msgToFunctionNode(pDecoder, pObj);
2,613,409✔
5039
      break;
2,609,155✔
5040
    case QUERY_NODE_ORDER_BY_EXPR:
239,322✔
5041
      code = msgToOrderByExprNode(pDecoder, pObj);
239,322✔
5042
      break;
239,263✔
5043
    case QUERY_NODE_LIMIT:
145,883✔
5044
      code = msgToLimitNode(pDecoder, pObj);
145,883✔
5045
      break;
145,741✔
5046
    case QUERY_NODE_NODE_LIST:
37,562✔
5047
      code = msgToNodeListNode(pDecoder, pObj);
37,562✔
5048
      break;
37,555✔
5049
    case QUERY_NODE_TARGET:
7,469,094✔
5050
      code = msgToTargetNode(pDecoder, pObj);
7,469,094✔
5051
      break;
7,452,283✔
5052
    case QUERY_NODE_TIME_RANGE:
×
5053
      code = msgToTimeRangeNode(pDecoder, pObj);
×
5054
      break;
×
5055
    case QUERY_NODE_DATABLOCK_DESC:
4,450,419✔
5056
      code = msgToDataBlockDescNode(pDecoder, pObj);
4,450,419✔
5057
      break;
4,449,269✔
5058
    case QUERY_NODE_SLOT_DESC:
13,486,860✔
5059
      code = msgToSlotDescNode(pDecoder, pObj);
13,486,860✔
5060
      break;
13,433,253✔
5061
    case QUERY_NODE_DOWNSTREAM_SOURCE:
838,274✔
5062
      code = msgToDownstreamSourceNode(pDecoder, pObj);
838,274✔
5063
    case QUERY_NODE_LEFT_VALUE:
894,403✔
5064
      break;
894,403✔
5065
    case QUERY_NODE_WHEN_THEN:
4,104✔
5066
      code = msgToWhenThenNode(pDecoder, pObj);
4,104✔
5067
      break;
4,103✔
5068
    case QUERY_NODE_CASE_WHEN:
3,434✔
5069
      code = msgToCaseWhenNode(pDecoder, pObj);
3,434✔
5070
      break;
3,435✔
5071
    case QUERY_NODE_WINDOW_OFFSET:
1,497✔
5072
      code = msgToWindowOffsetNode(pDecoder, pObj);
1,497✔
5073
      break;
1,497✔
5074
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
31,150✔
5075
      code = msgToPhysiTagScanNode(pDecoder, pObj);
31,150✔
5076
      break;
31,148✔
5077
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
21✔
5078
      code = msgToPhysiScanNode(pDecoder, pObj);
21✔
5079
      break;
21✔
5080
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
3,267✔
5081
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5082
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
3,267✔
5083
      break;
3,267✔
5084
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
990,432✔
5085
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5086
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5087
      code = msgToPhysiTableScanNode(pDecoder, pObj);
990,432✔
5088
      break;
989,917✔
5089
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
31,159✔
5090
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
31,159✔
5091
      break;
31,142✔
5092
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
429,643✔
5093
      code = msgToPhysiProjectNode(pDecoder, pObj);
429,643✔
5094
      break;
429,447✔
5095
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
73,498✔
5096
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
73,498✔
5097
      break;
73,494✔
5098
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
6,241✔
5099
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
6,241✔
5100
      break;
6,241✔
5101
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
603,402✔
5102
      code = msgToPhysiAggNode(pDecoder, pObj);
603,402✔
5103
      break;
602,748✔
5104
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
559,449✔
5105
      code = msgToPhysiExchangeNode(pDecoder, pObj);
559,449✔
5106
      break;
559,365✔
5107
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
57,502✔
5108
      code = msgToPhysiMergeNode(pDecoder, pObj);
57,502✔
5109
      break;
57,492✔
5110
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
139,088✔
5111
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5112
      code = msgToPhysiSortNode(pDecoder, pObj);
139,088✔
5113
      break;
139,053✔
5114
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
17,184✔
5115
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5116
      code = msgToPhysiIntervalNode(pDecoder, pObj);
17,184✔
5117
      break;
17,166✔
5118
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
3,045✔
5119
      code = msgToPhysiFillNode(pDecoder, pObj);
3,045✔
5120
      break;
3,041✔
5121
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
1,333✔
5122
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
1,333✔
5123
      break;
1,333✔
5124
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
×
5125
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5126
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5127
      code = msgToPhysiExternalWindowNode(pDecoder, pObj);
×
5128
      break;
×
5129
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
1,877✔
5130
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
1,877✔
5131
      break;
1,877✔
5132
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
141✔
5133
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
141✔
5134
      break;
141✔
5135
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
128✔
5136
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
128✔
5137
      break;
128✔
5138
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
12✔
5139
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
12✔
5140
      break;
12✔
5141
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
11,483✔
5142
      code = msgToPhysiPartitionNode(pDecoder, pObj);
11,483✔
5143
      break;
11,474✔
5144
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
20,449✔
5145
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
20,449✔
5146
      break;
20,453✔
5147
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
12,099✔
5148
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
12,099✔
5149
      break;
12,099✔
5150
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
41✔
5151
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
41✔
5152
      break;
41✔
5153
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,441,815✔
5154
      code = msgToPhysiDispatchNode(pDecoder, pObj);
1,441,815✔
5155
      break;
1,440,986✔
5156
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
81✔
5157
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
81✔
5158
      break;
81✔
5159
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,133✔
5160
      code = msgToPhysiDeleteNode(pDecoder, pObj);
1,133✔
5161
      break;
1,133✔
5162
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
6,241✔
5163
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
6,241✔
5164
      break;
6,241✔
5165
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
6,247✔
5166
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
6,247✔
5167
      break;
6,247✔
5168
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
2,438✔
5169
      code = msgToPhysiVirtualTableScanNode(pDecoder, pObj);
2,438✔
5170
      break;
2,438✔
5171
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,443,691✔
5172
      code = msgToSubplan(pDecoder, pObj);
1,443,691✔
5173
      break;
1,442,230✔
5174
    case QUERY_NODE_PHYSICAL_PLAN:
6✔
5175
      code = msgToQueryPlan(pDecoder, pObj);
6✔
5176
      break;
6✔
5177
    default:
×
5178
      break;
×
5179
  }
5180
  if (TSDB_CODE_SUCCESS != code) {
48,478,512!
5181
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
5182
  }
5183
  return code;
48,142,261✔
5184
}
5185

5186
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,415,850✔
5187
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
3,415,850✔
5188
}
5189

5190
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
48,390,460✔
5191
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
48,390,460✔
5192
}
5193

5194
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
18,265,806✔
5195
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
18,265,806✔
5196
  return msgToNode(&decoder, pObj);
18,265,806✔
5197
}
5198

5199
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
595,049✔
5200
  const SNodeList* pList = (const SNodeList*)pObj;
595,049✔
5201

5202
  SNode* pNode = NULL;
595,049✔
5203
  FOREACH(pNode, pList) {
2,901,069!
5204
    int32_t code = nodeToMsg(pNode, pEncoder);
2,320,103✔
5205
    if (TSDB_CODE_SUCCESS != code) {
2,306,020!
5206
      return code;
×
5207
    }
5208
  }
5209

5210
  return TSDB_CODE_SUCCESS;
580,966✔
5211
}
5212
enum {
5213
  SARRAY_CODE_CAPACITY = 1,
5214
  SARRAY_CODE_ELEMSIZE,
5215
  SARRAY_CODE_SIZE,
5216
  SARRAY_CODE_PDATA
5217
};
5218

5219
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
44✔
5220
  const SArray* pArray = (const SArray*)pObj;
44✔
5221
  int32_t code = TSDB_CODE_SUCCESS;
44✔
5222
  if (TSDB_CODE_SUCCESS == code) {
44!
5223
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
44✔
5224
  }
5225
  if (TSDB_CODE_SUCCESS == code) {
44!
5226
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
44✔
5227
  }
5228
  if (TSDB_CODE_SUCCESS == code) {
44!
5229
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
44✔
5230
  }
5231
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
44!
5232
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
44✔
5233
  }
5234
  return code;
44✔
5235
}
5236

5237

5238
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
12,256,513✔
5239
  SNodeList* pList = NULL;
12,256,513✔
5240
  int32_t code = TSDB_CODE_SUCCESS;
12,256,513✔
5241
  code = nodesMakeList(&pList);
12,256,513✔
5242

5243
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
41,138,662✔
5244
    SNode* pNode = NULL;
28,816,276✔
5245
    code = msgToNode(pDecoder, (void**)&pNode);
28,816,276✔
5246
    if (TSDB_CODE_SUCCESS == code) {
28,621,200!
5247
      code = nodesListAppend(pList, pNode);
28,622,633✔
5248
    }
5249
  }
5250
  if (TSDB_CODE_SUCCESS == code) {
12,276,948!
5251
    *pObj = pList;
12,276,948✔
5252
  } else {
5253
    nodesDestroyList(pList);
×
5254
  }
5255
  return code;
12,276,651✔
5256
}
5257

5258
static int32_t msgToSArray(STlv* pTlv, void** pObj){
176✔
5259
  SArray* pArray = NULL;
176✔
5260
  uint32_t capacity = 0;
176✔
5261
  uint32_t elemSize = 0;
176✔
5262
  uint32_t actualSize;
5263
  int32_t decodeFieldNum = 0;;
176✔
5264
  int32_t code = TSDB_CODE_SUCCESS;
176✔
5265
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
176✔
5266
  STlv*   pTlvTemp = NULL;
176✔
5267
  STlv*   pDataTlv = NULL;
176✔
5268

5269
  tlvForEach(&decoder, pTlvTemp, code) {
880!
5270
    switch (pTlvTemp->type) {
704!
5271
      case SARRAY_CODE_CAPACITY:
176✔
5272
        code = tlvDecodeI32(pTlvTemp, &capacity);
176✔
5273
        break;
176✔
5274
      case SARRAY_CODE_ELEMSIZE:
176✔
5275
        code = tlvDecodeI32(pTlvTemp, &elemSize);
176✔
5276
        break;
176✔
5277
      case SARRAY_CODE_SIZE:
176✔
5278
        code = tlvDecodeI32(pTlvTemp, &actualSize);
176✔
5279
        break;
176✔
5280
      case SARRAY_CODE_PDATA:
176✔
5281
        if (decodeFieldNum < 3) {
176!
5282
          pDataTlv = pTlvTemp;
×
5283
          break;
×
5284
        }
5285
        pArray = taosArrayInit(capacity, elemSize);
176✔
5286
        if (NULL == pArray) {
176!
5287
          return terrno;
×
5288
        }
5289
        pArray->size = actualSize;
176✔
5290
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
176!
5291
          taosArrayDestroy(pArray);
×
5292
          return TSDB_CODE_OUT_OF_MEMORY;
×
5293
        }
5294
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
176✔
5295
        break;
176✔
5296
      default:
×
5297
        break;
×
5298
    }
5299
    decodeFieldNum++;
704✔
5300
  }
5301

5302
  if (pDataTlv != NULL) {
176!
5303
    pArray = taosArrayInit(capacity, elemSize);
×
5304
    if (NULL == pArray) {
×
5305
      return terrno;
×
5306
    }
5307
    pArray->size = actualSize;
×
5308
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5309
      taosArrayDestroy(pArray);
×
5310
      return TSDB_CODE_OUT_OF_MEMORY;
×
5311
    }
5312
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
5313
  }
5314
  *pObj = pArray;
176✔
5315
  return code;
176✔
5316
}
5317

5318

5319
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
12,255,879✔
5320
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
12,255,879✔
5321
  return msgToNodeList(&decoder, pObj);
12,255,879✔
5322
}
5323

5324
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
80,059✔
5325
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
80,059!
5326
    terrno = TSDB_CODE_FAILED;
×
5327
    return TSDB_CODE_FAILED;
×
5328
  }
5329

5330
  STlvEncoder encoder;
5331
  int32_t     code = initTlvEncoder(&encoder);
80,967✔
5332
  if (TSDB_CODE_SUCCESS == code) {
80,842!
5333
    code = nodeToMsg(pNode, &encoder);
80,852✔
5334
  }
5335
  if (TSDB_CODE_SUCCESS == code) {
80,281!
5336
    endTlvEncode(&encoder, pMsg, pLen);
80,324✔
5337
  }
5338
  clearTlvEncoder(&encoder);
80,243✔
5339

5340
  terrno = code;
80,586✔
5341
  return code;
80,325✔
5342
}
5343

5344
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
1,443,811✔
5345
  if (NULL == pMsg || NULL == pNode) {
1,443,811!
5346
    return TSDB_CODE_SUCCESS;
×
5347
  }
5348

5349
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
1,444,087✔
5350
  int32_t     code = msgToNode(&decoder, (void**)pNode);
1,444,087✔
5351
  if (TSDB_CODE_SUCCESS != code) {
1,442,147!
5352
    nodesDestroyNode(*pNode);
×
5353
    *pNode = NULL;
×
5354
  }
5355

5356
  terrno = code;
1,442,147✔
5357
  return code;
1,441,995✔
5358
}
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