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

taosdata / TDengine / #5059

17 May 2026 01:15AM UTC coverage: 73.443% (+0.06%) from 73.387%
#5059

push

travis-ci

web-flow
feat (TDgpt): Dynamic Model Synchronization Enhancements (#35344)

* refactor: do some internal refactor.

* fix: fix multiprocess sync issue.

* feat: add dynamic anomaly detection and forecasting services

* fix: log error message for undeploying model in exception handling

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix: handle undeploy when model exists only on disk

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/286aafa0-c3ce-4c27-b803-2707571e9dc1

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: guard dynamic registry concurrent access

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/5e4db858-6458-40f4-ac28-d1b1b7f97c18

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: tighten service list locking scope

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/5e4db858-6458-40f4-ac28-d1b1b7f97c18

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: restore prophet support and update tests per review feedback

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/92298ae1-7da6-4d07-b20e-101c7cd0b26b

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* fix: improve test name and move copy inside lock scope

Agent-Logs-Url: https://github.com/taosdata/TDengine/sessions/92298ae1-7da6-4d07-b20e-101c7cd0b26b

Co-authored-by: hjxilinx <8252296+hjxilinx@users.noreply.github.com>

* Potential fix for pull request finding

Co-au... (continued)

281870 of 383795 relevant lines covered (73.44%)

135516561.93 hits per line

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

90.19
/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) {
560,130,338✔
78
  pEncoder->allocSize = NODES_MSG_DEFAULT_LEN;
560,130,338✔
79
  pEncoder->offset = 0;
560,317,266✔
80
  pEncoder->tlvCount = 0;
560,347,665✔
81
  pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize);
559,980,986✔
82
  return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS;
559,307,232✔
83
}
84

85
static void clearTlvEncoder(STlvEncoder* pEncoder) { taosMemoryFree(pEncoder->pBuf); }
559,510,615✔
86

87
static void endTlvEncode(STlvEncoder* pEncoder, char** pMsg, int32_t* pLen) {
559,723,296✔
88
  *pMsg = pEncoder->pBuf;
559,723,296✔
89
  pEncoder->pBuf = NULL;
560,027,013✔
90
  *pLen = pEncoder->offset;
560,024,429✔
91
}
559,694,430✔
92

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

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
2,147,483,647✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
2,147,483,647✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
261,474,502✔
115
    if (NULL == pNewBuf) {
261,169,596✔
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
261,169,596✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
261,139,342✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
2,147,483,647✔
122
  pEncoder->offset += len;
2,147,483,647✔
123
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
2,147,483,647✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
2,147,483,647✔
132
}
133

134
static int32_t tlvEncodeI16(STlvEncoder* pEncoder, int16_t type, int16_t value) {
607,009,924✔
135
  value = htons(value);
607,009,924✔
136
  return tlvEncodeImpl(pEncoder, type, &value, sizeof(value));
607,009,924✔
137
}
138

139
static int32_t tlvEncodeValueI16(STlvEncoder* pEncoder, int16_t value) {
2,147,483,647✔
140
  value = htons(value);
2,147,483,647✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
2,147,483,647✔
142
}
143

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

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

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

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

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

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

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

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

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

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

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

198
static int32_t tlvEncodeValueDouble(STlvEncoder* pEncoder, double value) {
403,832,235✔
199
  int64_t temp = *(int64_t*)&value;
403,832,235✔
200
  temp = htonll(temp);
404,184,608✔
201
  return tlvEncodeValueImpl(pEncoder, &temp, sizeof(temp));
404,184,608✔
202
}
203

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

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

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

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

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
2,147,483,647✔
223
  if (NULL == pValue) {
2,147,483,647✔
224
    return TSDB_CODE_SUCCESS;
267,440,044✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
2,088,804,259✔
227
}
228

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

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

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

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
2,147,483,647✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
139,108,145✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
138,997,980✔
250
    if (NULL == pNewBuf) {
138,967,191✔
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
138,967,191✔
254
  }
255

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

268
static int32_t tlvEncodeObjArray(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pArray, int32_t itemSize,
47,785,254✔
269
                                 int32_t num) {
270
  int32_t code = TSDB_CODE_SUCCESS;
47,785,254✔
271
  if (num > 0) {
47,785,254✔
272
    int32_t start = pEncoder->offset;
47,812,308✔
273
    pEncoder->offset += sizeof(STlv);
47,836,300✔
274
    for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
96,130,606✔
275
      code = tlvEncodeObj(pEncoder, TLV_TYPE_ARRAY_ELEM, func, (const char*)pArray + i * itemSize);
48,238,064✔
276
    }
277
    if (TSDB_CODE_SUCCESS == code) {
47,892,542✔
278
      STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
47,795,014✔
279
      pTlv->type = htons(type);
47,824,558✔
280
      pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
47,821,107✔
281
    }
282
  }
283
  return code;
47,772,683✔
284
}
285

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
828,686,314✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
828,686,314✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
1,578,394,574✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
749,258,166✔
291
  }
292
  return code;
829,136,408✔
293
}
294

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

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

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
2,147,483,647✔
312

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

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

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

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
2,147,483,647✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,147,483,647✔
339
}
340

341
static int32_t tlvDecodeI16(STlv* pTlv, int16_t* pValue) {
464,519,127✔
342
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
464,519,127✔
343
  if (TSDB_CODE_SUCCESS == code) {
464,573,447✔
344
    *pValue = ntohs(*pValue);
464,572,017✔
345
  }
346
  return code;
464,524,055✔
347
}
348

349
static int32_t tlvDecodeValueI16(STlvDecoder* pDecoder, int16_t* pValue) {
2,147,483,647✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,147,483,647✔
351
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
352
    *pValue = ntohs(*pValue);
2,147,483,647✔
353
  }
354
  return code;
2,147,483,647✔
355
}
356

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

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

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
453,806,751✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
453,806,751✔
375
  if (TSDB_CODE_SUCCESS == code) {
453,838,293✔
376
    *pValue = ntohll(*pValue);
453,838,861✔
377
  }
378
  return code;
453,847,894✔
379
}
380

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

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

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

400
static int32_t tlvDecodeU16(STlv* pTlv, uint16_t* pValue) {
54,310,643✔
401
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
54,310,643✔
402
  if (TSDB_CODE_SUCCESS == code) {
54,309,498✔
403
    *pValue = ntohs(*pValue);
54,310,231✔
404
  }
405
  return code;
54,306,096✔
406
}
407

408
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
539,092,057✔
409
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
539,092,057✔
410
  if (TSDB_CODE_SUCCESS == code) {
539,164,281✔
411
    *pValue = ntohs(*pValue);
539,165,765✔
412
  }
413
  return code;
539,117,867✔
414
}
415

416
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
676,873,037✔
417
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
676,873,037✔
418
  if (TSDB_CODE_SUCCESS == code) {
676,985,042✔
419
    *pValue = ntohll(*pValue);
676,985,362✔
420
  }
421
  return code;
676,976,413✔
422
}
423

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

432
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
28,863,838✔
433
  volatile int64_t temp = 0;
28,863,838✔
434
  int32_t code = tlvDecodeI64(pTlv, (int64_t*)&temp);
28,865,598✔
435
  if (TSDB_CODE_SUCCESS == code) {
28,859,012✔
436
    *pValue = *(double*)&temp;
28,858,595✔
437
  }
438
  return code;
28,862,037✔
439
}
440

441
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
294,637,961✔
442
  volatile int64_t temp = 0;
294,637,961✔
443
  int32_t code = tlvDecodeValueI64(pDecoder, (int64_t*)&temp);
294,670,324✔
444
  if (TSDB_CODE_SUCCESS == code) {
294,719,721✔
445
    *pValue = *(double*)&temp;
294,719,721✔
446
  }
447
  return code;
294,626,893✔
448
}
449

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

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

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

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

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

503
static int32_t tlvDecodeCStr(STlv* pTlv, char* pValue, int32_t size) {
1,323,037,377✔
504
  if (pTlv->len > size - 1) {
1,323,037,377✔
505
    return TSDB_CODE_FAILED;
×
506
  }
507
  memcpy(pValue, pTlv->value, pTlv->len);
1,323,086,446✔
508
  return TSDB_CODE_SUCCESS;
1,323,083,570✔
509
}
510

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

520
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
271,302,892✔
521
  *pValue = taosStrndup(pTlv->value, pTlv->len);
271,302,892✔
522
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
271,274,615✔
523
}
524

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

534
static int32_t tlvDecodeBinary(STlv* pTlv, void* pValue) {
181,479,896✔
535
  memcpy(pValue, pTlv->value, pTlv->len);
181,479,896✔
536
  return TSDB_CODE_SUCCESS;
181,474,340✔
537
}
538

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

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

553
static int32_t tlvDecodeObjArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize) {
28,469,793✔
554
  int32_t code = TSDB_CODE_SUCCESS;
28,469,793✔
555
  int32_t i = 0;
28,469,793✔
556
  STlv*   pTlv = NULL;
28,469,793✔
557
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
57,299,805✔
558
  return code;
28,476,348✔
559
}
560

561
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
600,281,840✔
562
                                   int32_t* pNum) {
563
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
600,281,840✔
564
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
1,139,485,127✔
565
    code = func(pDecoder, (char*)pArray + i * itemSize);
539,226,378✔
566
  }
567
  return code;
600,309,517✔
568
}
569

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

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

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

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

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

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

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

611
static int32_t dataTypeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,811,375,866✔
612
  const SDataType* pNode = (const SDataType*)pObj;
1,811,375,866✔
613

614
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
1,811,375,866✔
615
  if (TSDB_CODE_SUCCESS == code) {
1,811,901,667✔
616
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
1,811,943,188✔
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
1,812,894,401✔
619
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
1,812,910,608✔
620
  }
621
  if (TSDB_CODE_SUCCESS == code) {
1,812,939,334✔
622
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
1,812,960,559✔
623
  }
624

625
  return code;
1,812,894,839✔
626
}
627

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

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

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

645
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
1,448,291,200✔
646
  SDataType* pNode = (SDataType*)pObj;
1,448,291,200✔
647

648
  int32_t code = TSDB_CODE_SUCCESS;
1,448,291,200✔
649
  STlv*   pTlv = NULL;
1,448,291,200✔
650
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
651
    switch (pTlv->type) {
2,147,483,647✔
652
      case DATA_TYPE_CODE_TYPE:
1,448,414,179✔
653
        code = tlvDecodeI8(pTlv, &pNode->type);
1,448,414,179✔
654
        break;
1,448,318,252✔
655
      case DATA_TYPE_CODE_PRECISION:
1,448,452,318✔
656
        code = tlvDecodeU8(pTlv, &pNode->precision);
1,448,452,318✔
657
        break;
1,448,393,149✔
658
      case DATA_TYPE_CODE_SCALE:
1,448,462,277✔
659
        code = tlvDecodeU8(pTlv, &pNode->scale);
1,448,462,277✔
660
        break;
1,448,451,897✔
661
      case DATA_TYPE_CODE_BYTES:
1,447,965,931✔
662
        code = tlvDecodeI32(pTlv, &pNode->bytes);
1,447,965,931✔
663
        break;
1,448,377,187✔
664
      default:
×
665
        break;
×
666
    }
667
  }
668

669
  return code;
1,448,270,610✔
670
}
671

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

674
static int32_t exprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,811,377,469✔
675
  const SExprNode* pNode = (const SExprNode*)pObj;
1,811,377,469✔
676
  int32_t          code = tlvEncodeObj(pEncoder, EXPR_CODE_RES_TYPE, dataTypeToMsg, &pNode->resType);
1,811,377,469✔
677
  if (TSDB_CODE_SUCCESS == code) {
1,812,898,903✔
678
    code = tlvEncodeBool(pEncoder, EXPR_CODE_HAS_NULL, pNode->hasNull);
1,812,204,637✔
679
  }
680
  if (TSDB_CODE_SUCCESS == code) {
1,812,798,062✔
681
    code = tlvEncodeI32(pEncoder, EXPR_CODE_BIND_TUPLE_FUNC_IDX, pNode->relatedTo);
1,812,802,107✔
682
  }
683
  if (TSDB_CODE_SUCCESS == code) {
1,812,942,148✔
684
    code = tlvEncodeI32(pEncoder, EXPR_CODE_TUPLE_FUNC_IDX, pNode->bindExprID);
1,812,948,818✔
685
  }
686
  return code;
1,812,966,878✔
687
}
688

689
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
1,448,225,303✔
690
  SExprNode* pNode = (SExprNode*)pObj;
1,448,225,303✔
691

692
  int32_t code = TSDB_CODE_SUCCESS;
1,448,225,303✔
693
  STlv*   pTlv = NULL;
1,448,225,303✔
694
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
695
    switch (pTlv->type) {
2,147,483,647✔
696
      case EXPR_CODE_RES_TYPE:
1,448,413,464✔
697
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
1,448,413,464✔
698
        break;
1,448,297,347✔
699
      case EXPR_CODE_BIND_TUPLE_FUNC_IDX:
1,448,443,495✔
700
        code = tlvDecodeI32(pTlv, &pNode->relatedTo);
1,448,443,495✔
701
        break;
1,448,418,642✔
702
      case EXPR_CODE_TUPLE_FUNC_IDX:
1,448,449,039✔
703
        code = tlvDecodeI32(pTlv, &pNode->bindExprID);
1,448,449,039✔
704
        break;
1,448,404,457✔
705
      case EXPR_CODE_HAS_NULL:
1,447,877,019✔
706
        code = tlvDecodeBool(pTlv, &pNode->hasNull);
1,447,877,019✔
707
        break;
1,448,340,334✔
708
      default:
×
709
        break;
×
710
    }
711
  }
712

713
  return code;
1,448,906,353✔
714
}
715

716
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
717

718
static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
719
  const SColumnNode* pNode = (const SColumnNode*)pObj;
2,147,483,647✔
720

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

788
static int32_t columnNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
789
  return tlvEncodeObj(pEncoder, COLUMN_CODE_INLINE_ATTRS, columnNodeInlineToMsg, pObj);
2,147,483,647✔
790
}
791

792
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
793
  SColumnNode* pNode = (SColumnNode*)pObj;
2,147,483,647✔
794

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

862
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
863
  SColumnNode* pNode = (SColumnNode*)pObj;
2,147,483,647✔
864

865
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
866
  STlv*   pTlv = NULL;
2,147,483,647✔
867
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
868
    switch (pTlv->type) {
2,147,483,647✔
869
      case COLUMN_CODE_INLINE_ATTRS:
2,147,483,647✔
870
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
2,147,483,647✔
871
        break;
2,147,483,647✔
872
      default:
×
873
        break;
×
874
    }
875
  }
876

877
  return code;
2,147,483,647✔
878
}
879

880
enum {
881
  VALUE_CODE_EXPR_BASE = 1,
882
  VALUE_CODE_LITERAL,
883
  VALUE_CODE_FLAG,
884
  VALUE_CODE_TRANSLATE,
885
  VALUE_CODE_NOT_RESERVED,
886
  VALUE_CODE_IS_NULL,
887
  VALUE_CODE_DATUM,
888
  VALUE_CODE_PLACEHOLDER_NO
889
};
890

891
static int32_t datumToMsg(const void* pObj, STlvEncoder* pEncoder) {
511,017,133✔
892
  const SValueNode* pNode = (const SValueNode*)pObj;
511,017,133✔
893

894
  int32_t code = TSDB_CODE_SUCCESS;
511,017,133✔
895
  switch (pNode->node.resType.type) {
511,017,133✔
896
    case TSDB_DATA_TYPE_NULL:
×
897
      break;
×
898
    case TSDB_DATA_TYPE_BOOL:
20,647,312✔
899
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
20,647,312✔
900
      break;
20,661,726✔
901
    case TSDB_DATA_TYPE_TINYINT:
382,376,794✔
902
    case TSDB_DATA_TYPE_SMALLINT:
903
    case TSDB_DATA_TYPE_INT:
904
    case TSDB_DATA_TYPE_BIGINT:
905
    case TSDB_DATA_TYPE_TIMESTAMP:
906
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
382,376,794✔
907
      break;
382,912,892✔
908
    case TSDB_DATA_TYPE_UTINYINT:
18,403✔
909
    case TSDB_DATA_TYPE_USMALLINT:
910
    case TSDB_DATA_TYPE_UINT:
911
    case TSDB_DATA_TYPE_UBIGINT:
912
      code = tlvEncodeU64(pEncoder, VALUE_CODE_DATUM, pNode->datum.u);
18,403✔
913
      break;
18,403✔
914
    case TSDB_DATA_TYPE_FLOAT:
28,849,323✔
915
    case TSDB_DATA_TYPE_DOUBLE:
916
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
28,849,323✔
917
      break;
28,921,200✔
918
    case TSDB_DATA_TYPE_VARCHAR:
78,364,901✔
919
    case TSDB_DATA_TYPE_VARBINARY:
920
    case TSDB_DATA_TYPE_NCHAR:
921
    case TSDB_DATA_TYPE_GEOMETRY:
922
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, varDataTLen(pNode->datum.p));
78,364,901✔
923
      break;
78,681,671✔
924
    case TSDB_DATA_TYPE_JSON:
1,644✔
925
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
1,644✔
926
      break;
3,310✔
927
    case TSDB_DATA_TYPE_DECIMAL:
1,708✔
928
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, pNode->node.resType.bytes);
1,708✔
929
      break;
2,512✔
930
    case TSDB_DATA_TYPE_DECIMAL64:
100✔
931
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
100✔
932
      break;
100✔
933
    case TSDB_DATA_TYPE_BLOB:
×
934
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, blobDataTLen(pNode->datum.p));
×
935
      break;
×
936
      // todo
937
    default:
2,521✔
938
      break;
2,521✔
939
  }
940

941
  return code;
511,060,938✔
942
}
943

944
static int32_t valueNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
607,144,757✔
945
  const SValueNode* pNode = (const SValueNode*)pObj;
607,144,757✔
946

947
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
607,144,757✔
948
  if (TSDB_CODE_SUCCESS == code) {
607,609,125✔
949
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
607,612,536✔
950
  }
951
  if (TSDB_CODE_SUCCESS == code) {
607,510,293✔
952
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
607,511,113✔
953
  }
954
  if (TSDB_CODE_SUCCESS == code) {
607,550,172✔
955
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
607,552,559✔
956
  }
957
  if (TSDB_CODE_SUCCESS == code) {
607,610,567✔
958
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
607,578,180✔
959
  }
960
  if (TSDB_CODE_SUCCESS == code) {
607,236,434✔
961
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
607,206,709✔
962
  }
963
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull && !IS_VAL_UNSET(pNode->flag)) {
607,614,054✔
964
    code = datumToMsg(pNode, pEncoder);
511,198,802✔
965
  }
966
  if (TSDB_CODE_SUCCESS == code) {
607,681,192✔
967
    code = tlvEncodeI16(pEncoder, VALUE_CODE_PLACEHOLDER_NO, pNode->placeholderNo);
607,231,071✔
968
  }
969

970
  return code;
607,572,868✔
971
}
972

973
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
432,021,844✔
974
  SValueNode* pNode = (SValueNode*)pObj;
432,021,844✔
975

976
  int32_t code = TSDB_CODE_SUCCESS;
432,021,844✔
977
  switch (pNode->node.resType.type) {
432,021,844✔
978
    case TSDB_DATA_TYPE_NULL:
×
979
      break;
×
980
    case TSDB_DATA_TYPE_BOOL:
20,608,558✔
981
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
20,608,558✔
982
      *(bool*)&pNode->typeData = pNode->datum.b;
20,610,726✔
983
      break;
20,610,143✔
984
    case TSDB_DATA_TYPE_TINYINT:
164,430,670✔
985
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
164,430,670✔
986
      *(int8_t*)&pNode->typeData = pNode->datum.i;
164,464,570✔
987
      break;
164,465,828✔
988
    case TSDB_DATA_TYPE_SMALLINT:
9,581,835✔
989
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
9,581,835✔
990
      *(int16_t*)&pNode->typeData = pNode->datum.i;
9,586,806✔
991
      break;
9,589,817✔
992
    case TSDB_DATA_TYPE_INT:
21,404,964✔
993
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
21,404,964✔
994
      *(int32_t*)&pNode->typeData = pNode->datum.i;
21,409,894✔
995
      break;
21,408,549✔
996
    case TSDB_DATA_TYPE_BIGINT:
113,449,882✔
997
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
113,449,882✔
998
      *(int64_t*)&pNode->typeData = pNode->datum.i;
113,462,728✔
999
      break;
113,476,261✔
1000
    case TSDB_DATA_TYPE_TIMESTAMP:
11,243,210✔
1001
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
11,243,210✔
1002
      *(int64_t*)&pNode->typeData = pNode->datum.i;
11,242,764✔
1003
      break;
11,242,764✔
1004
    case TSDB_DATA_TYPE_UTINYINT:
7,057✔
1005
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
7,057✔
1006
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
7,057✔
1007
      break;
7,057✔
1008
    case TSDB_DATA_TYPE_USMALLINT:
1,407✔
1009
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
1,407✔
1010
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
1,407✔
1011
      break;
1,407✔
1012
    case TSDB_DATA_TYPE_UINT:
2,521✔
1013
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
2,521✔
1014
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
2,521✔
1015
      break;
2,521✔
1016
    case TSDB_DATA_TYPE_UBIGINT:
7,370✔
1017
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
7,370✔
1018
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
7,370✔
1019
      break;
7,370✔
1020
    case TSDB_DATA_TYPE_FLOAT:
1,491,362✔
1021
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
1,491,362✔
1022
      *(float*)&pNode->typeData = pNode->datum.d;
1,491,362✔
1023
      break;
1,491,362✔
1024
    case TSDB_DATA_TYPE_DOUBLE:
27,371,892✔
1025
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
27,371,892✔
1026
      *(double*)&pNode->typeData = pNode->datum.d;
27,364,521✔
1027
      break;
27,370,186✔
1028
    case TSDB_DATA_TYPE_NCHAR:
62,347,345✔
1029
    case TSDB_DATA_TYPE_VARCHAR:
1030
    case TSDB_DATA_TYPE_VARBINARY:
1031
    case TSDB_DATA_TYPE_GEOMETRY: {
1032
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
62,347,345✔
1033
        code = TSDB_CODE_FAILED;
×
1034
        break;
×
1035
      }
1036
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
62,343,182✔
1037
      if (NULL == pNode->datum.p) {
62,352,429✔
1038
        code = terrno;
×
1039
        break;
×
1040
      }
1041
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
62,339,357✔
1042
      if (TSDB_CODE_SUCCESS == code) {
62,329,641✔
1043
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
62,328,029✔
1044
      }
1045
      break;
62,327,885✔
1046
    }
1047
    case TSDB_DATA_TYPE_JSON: {
1,644✔
1048
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
1,644✔
1049
        code = TSDB_CODE_FAILED;
×
1050
        break;
×
1051
      }
1052
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
1,644✔
1053
      break;
1,644✔
1054
    }
1055
    case TSDB_DATA_TYPE_DECIMAL:
2,412✔
1056
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes);
2,412✔
1057
      if (!pNode->datum.p) {
2,412✔
1058
        code = terrno;
×
1059
        break;
×
1060
      }
1061
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
2,412✔
1062
      break;
2,412✔
1063
    case TSDB_DATA_TYPE_DECIMAL64:
×
1064
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
×
1065
      *(int64_t*)&pNode->typeData = pNode->datum.i;
×
1066
      break;
×
1067
    case TSDB_DATA_TYPE_BLOB:
×
1068
      if (pTlv->len > pNode->node.resType.bytes + BLOBSTR_HEADER_SIZE) {
×
1069
        code = TSDB_CODE_FAILED;
×
1070
        break;
×
1071
      }
1072
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
×
1073
      if (NULL == pNode->datum.p) {
×
1074
        code = terrno;
×
1075
        break;
×
1076
      }
1077
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
×
1078
      if (TSDB_CODE_SUCCESS == code) {
×
1079
        blobDataSetLen(pNode->datum.p, pTlv->len - BLOBSTR_HEADER_SIZE);
×
1080
      }
1081
      break;
×
1082
      // todo
1083
    default:
×
1084
      break;
×
1085
  }
1086

1087
  return code;
432,002,060✔
1088
}
1089

1090
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
464,530,420✔
1091
  SValueNode* pNode = (SValueNode*)pObj;
464,530,420✔
1092

1093
  int32_t code = TSDB_CODE_SUCCESS;
464,530,420✔
1094
  STlv*   pTlv = NULL;
464,530,420✔
1095
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
1096
    switch (pTlv->type) {
2,147,483,647✔
1097
      case VALUE_CODE_EXPR_BASE:
464,525,449✔
1098
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
464,525,449✔
1099
        break;
464,573,874✔
1100
      case VALUE_CODE_LITERAL:
271,344,189✔
1101
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
271,344,189✔
1102
        break;
271,298,693✔
1103
      case VALUE_CODE_FLAG:
464,593,098✔
1104
        code = tlvDecodeI32(pTlv, &pNode->flag);
464,593,098✔
1105
        break;
464,571,071✔
1106
      case VALUE_CODE_TRANSLATE:
464,593,086✔
1107
        code = tlvDecodeBool(pTlv, &pNode->translate);
464,593,086✔
1108
        break;
464,511,221✔
1109
      case VALUE_CODE_NOT_RESERVED:
464,592,702✔
1110
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
464,592,702✔
1111
        break;
464,576,787✔
1112
      case VALUE_CODE_IS_NULL:
464,537,339✔
1113
        code = tlvDecodeBool(pTlv, &pNode->isNull);
464,537,339✔
1114
        break;
464,570,441✔
1115
      case VALUE_CODE_DATUM:
432,096,179✔
1116
        code = msgToDatum(pTlv, pNode);
432,096,179✔
1117
        break;
432,007,091✔
1118
      case VALUE_CODE_PLACEHOLDER_NO:
464,482,963✔
1119
        code = tlvDecodeI16(pTlv, &pNode->placeholderNo);
464,482,963✔
1120
        break;
464,557,430✔
1121
      default:
×
1122
        break;
×
1123
    }
1124
  }
1125

1126
  return code;
464,976,635✔
1127
}
1128

1129
enum {
1130
  REMOTE_VALUE_CODE_VAL = 1,
1131
  REMOTE_VALUE_CODE_VAL_SET,
1132
  REMOTE_VALUE_CODE_SUBQ_IDX
1133
};
1134

1135
static int32_t remoteValueNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
63,540,986✔
1136
  const SRemoteValueNode* pNode = (const SRemoteValueNode*)pObj;
63,540,986✔
1137

1138
  int32_t code = tlvEncodeObj(pEncoder, REMOTE_VALUE_CODE_VAL, valueNodeToMsg, pNode);
63,540,986✔
1139
/*
1140
  if (TSDB_CODE_SUCCESS == code) {
1141
    code = tlvEncodeBool(pEncoder, REMOTE_VALUE_CODE_VAL_SET, pNode->valSet);
1142
  }
1143
*/
1144
  if (TSDB_CODE_SUCCESS == code) {
63,603,306✔
1145
    code = tlvEncodeI32(pEncoder, REMOTE_VALUE_CODE_SUBQ_IDX, pNode->subQIdx);
63,604,072✔
1146
  }
1147

1148
  return code;
63,596,042✔
1149
}
1150

1151

1152
static int32_t msgToRemoteValueNode(STlvDecoder* pDecoder, void* pObj) {
5,768,478✔
1153
  SRemoteValueNode* pNode = (SRemoteValueNode*)pObj;
5,768,478✔
1154

1155
  int32_t code = TSDB_CODE_SUCCESS;
5,768,478✔
1156
  STlv*   pTlv = NULL;
5,768,478✔
1157
  tlvForEach(pDecoder, pTlv, code) {
17,306,652✔
1158
    switch (pTlv->type) {
11,538,783✔
1159
      case REMOTE_VALUE_CODE_VAL:
5,769,087✔
1160
        code = tlvDecodeObjFromTlv(pTlv, msgToValueNode, &pNode->val);
5,769,087✔
1161
        break;
5,769,087✔
1162
/*
1163
      case REMOTE_VALUE_CODE_VAL_SET:
1164
        code = tlvDecodeBool(pTlv, &pNode->valSet);
1165
        break;
1166
*/
1167
      case REMOTE_VALUE_CODE_SUBQ_IDX:
5,769,696✔
1168
        code = tlvDecodeI32(pTlv, &pNode->subQIdx);
5,769,696✔
1169
        break;
5,769,087✔
1170
      default:
×
1171
        break;
×
1172
    }
1173
  }
1174

1175
  return code;
5,768,478✔
1176
}
1177

1178
enum {
1179
  REMOTE_VALUELIST_CODE_EXPR = 1,
1180
  REMOTE_VALUELIST_CODE_FLAG,
1181
  REMOTE_VALUELIST_CODE_SUBQ_IDX
1182
};
1183

1184
static int32_t remoteValueListNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
19,552,105✔
1185
  const SRemoteValueListNode* pNode = (const SRemoteValueListNode*)pObj;
19,552,105✔
1186

1187
  int32_t code = tlvEncodeObj(pEncoder, REMOTE_VALUELIST_CODE_EXPR, exprNodeToMsg, pNode);
19,552,105✔
1188
  if (TSDB_CODE_SUCCESS == code) {
19,560,939✔
1189
    code = tlvEncodeI32(pEncoder, REMOTE_VALUELIST_CODE_FLAG, pNode->flag);
19,561,014✔
1190
  }
1191
  if (TSDB_CODE_SUCCESS == code) {
19,559,129✔
1192
    code = tlvEncodeI32(pEncoder, REMOTE_VALUELIST_CODE_SUBQ_IDX, pNode->subQIdx);
19,556,319✔
1193
  }
1194

1195
  return code;
19,560,162✔
1196
}
1197

1198

1199
static int32_t msgToRemoteValueListNode(STlvDecoder* pDecoder, void* pObj) {
13,076,257✔
1200
  SRemoteValueListNode* pNode = (SRemoteValueListNode*)pObj;
13,076,257✔
1201

1202
  int32_t code = TSDB_CODE_SUCCESS;
13,076,257✔
1203
  STlv*   pTlv = NULL;
13,076,257✔
1204
  tlvForEach(pDecoder, pTlv, code) {
52,305,028✔
1205
    switch (pTlv->type) {
39,228,771✔
1206
      case REMOTE_VALUELIST_CODE_EXPR:
13,076,257✔
1207
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
13,076,257✔
1208
        break;
13,076,257✔
1209
      case REMOTE_VALUELIST_CODE_FLAG:
13,076,257✔
1210
        code = tlvDecodeI32(pTlv, &pNode->flag);
13,076,257✔
1211
        break;
13,076,257✔
1212
      case REMOTE_VALUELIST_CODE_SUBQ_IDX:
13,076,257✔
1213
        code = tlvDecodeI32(pTlv, &pNode->subQIdx);
13,076,257✔
1214
        break;
13,076,257✔
1215
      default:
×
1216
        break;
×
1217
    }
1218
  }
1219

1220
  return code;
13,075,657✔
1221
}
1222

1223
enum {
1224
  REMOTE_ROW_CODE_VAL = 1,
1225
  REMOTE_ROW_CODE_IS_MIN,
1226
  REMOTE_ROW_CODE_VAL_SET,
1227
  REMOTE_ROW_CODE_HAS_VALUE,
1228
  REMOTE_ROW_CODE_HAS_NULL,
1229
  REMOTE_ROW_CODE_SUBQ_IDX
1230
};
1231

1232
static int32_t remoteRowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
25,232,570✔
1233
  const SRemoteRowNode* pNode = (const SRemoteRowNode*)pObj;
25,232,570✔
1234

1235
  int32_t code = tlvEncodeObj(pEncoder, REMOTE_ROW_CODE_VAL, valueNodeToMsg, pNode);
25,232,570✔
1236
  if (TSDB_CODE_SUCCESS == code) {
25,235,008✔
1237
    code = tlvEncodeBool(pEncoder, REMOTE_ROW_CODE_IS_MIN, pNode->isMinVal);
25,235,182✔
1238
  }
1239
  if (TSDB_CODE_SUCCESS == code) {
25,235,182✔
1240
    code = tlvEncodeBool(pEncoder, REMOTE_ROW_CODE_VAL_SET, pNode->valSet);
25,234,484✔
1241
  }
1242
  if (TSDB_CODE_SUCCESS == code) {
25,234,246✔
1243
    code = tlvEncodeBool(pEncoder, REMOTE_ROW_CODE_HAS_VALUE, pNode->hasValue);
25,233,548✔
1244
  }
1245
  if (TSDB_CODE_SUCCESS == code) {
25,236,047✔
1246
    code = tlvEncodeBool(pEncoder, REMOTE_ROW_CODE_HAS_NULL, pNode->hasNull);
25,235,349✔
1247
  }
1248
  if (TSDB_CODE_SUCCESS == code) {
25,234,671✔
1249
    code = tlvEncodeI32(pEncoder, REMOTE_ROW_CODE_SUBQ_IDX, pNode->subQIdx);
25,233,886✔
1250
  }
1251

1252
  return code;
25,235,182✔
1253
}
1254

1255

1256
static int32_t msgToRemoteRowNode(STlvDecoder* pDecoder, void* pObj) {
23,735,308✔
1257
  SRemoteRowNode* pNode = (SRemoteRowNode*)pObj;
23,735,308✔
1258

1259
  int32_t code = TSDB_CODE_SUCCESS;
23,735,308✔
1260
  STlv*   pTlv = NULL;
23,735,308✔
1261
  tlvForEach(pDecoder, pTlv, code) {
166,147,156✔
1262
    switch (pTlv->type) {
142,411,848✔
1263
      case REMOTE_ROW_CODE_VAL:
23,735,308✔
1264
        code = tlvDecodeObjFromTlv(pTlv, msgToValueNode, &pNode->val);
23,735,308✔
1265
        break;
23,735,308✔
1266
      case REMOTE_ROW_CODE_IS_MIN:
23,735,308✔
1267
        code = tlvDecodeBool(pTlv, &pNode->isMinVal);
23,735,308✔
1268
        break;
23,735,308✔
1269
      case REMOTE_ROW_CODE_VAL_SET:
23,735,308✔
1270
        code = tlvDecodeBool(pTlv, &pNode->valSet);
23,735,308✔
1271
        break;
23,735,308✔
1272
      case REMOTE_ROW_CODE_HAS_VALUE:
23,735,308✔
1273
        code = tlvDecodeBool(pTlv, &pNode->hasValue);
23,735,308✔
1274
        break;
23,735,308✔
1275
      case REMOTE_ROW_CODE_HAS_NULL:
23,735,308✔
1276
        code = tlvDecodeBool(pTlv, &pNode->hasNull);
23,735,308✔
1277
        break;
23,735,308✔
1278
      case REMOTE_ROW_CODE_SUBQ_IDX:
23,735,308✔
1279
        code = tlvDecodeI32(pTlv, &pNode->subQIdx);
23,735,308✔
1280
        break;
23,735,308✔
1281
      default:
×
1282
        break;
×
1283
    }
1284
  }
1285

1286
  return code;
23,734,708✔
1287
}
1288

1289
static int32_t remoteZeroRowsNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,360,824✔
1290
  return remoteValueNodeToMsg(pObj, pEncoder);
1,360,824✔
1291
}
1292

1293

1294
static int32_t msgToRemoteZeroRowsNode(STlvDecoder* pDecoder, void* pObj) {
420,208✔
1295
  return msgToRemoteValueNode(pDecoder, pObj);
420,208✔
1296
}
1297

1298
enum {
1299
  REMOTE_TABLE_CODE_FLAG = 1,
1300
  REMOTE_TABLE_CODE_RES_COLS,
1301
  REMOTE_TABLE_CODE_SUBQ_IDX
1302
};
1303

1304
static int32_t remoteTableNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
568,637✔
1305
  const SRemoteTableNode* pNode = (const SRemoteTableNode*)pObj;
568,637✔
1306

1307
  int32_t code = tlvEncodeI32(pEncoder, REMOTE_TABLE_CODE_FLAG, pNode->flag);
568,637✔
1308
  if (TSDB_CODE_SUCCESS == code) {
569,083✔
1309
    code = tlvEncodeI32(pEncoder, REMOTE_TABLE_CODE_RES_COLS, pNode->resCols);
568,191✔
1310
  }
1311
  if (TSDB_CODE_SUCCESS == code) {
569,529✔
1312
    code = tlvEncodeI32(pEncoder, REMOTE_TABLE_CODE_SUBQ_IDX, pNode->subQIdx);
569,529✔
1313
  }
1314

1315
  return code;
569,529✔
1316
}
1317

1318

1319

1320
static int32_t msgToRemoteTableNode(STlvDecoder* pDecoder, void* pObj) {
565,748✔
1321
  SRemoteTableNode* pNode = (SRemoteTableNode*)pObj;
565,748✔
1322

1323
  int32_t code = TSDB_CODE_SUCCESS;
565,748✔
1324
  STlv*   pTlv = NULL;
565,748✔
1325
  tlvForEach(pDecoder, pTlv, code) {
2,262,992✔
1326
    switch (pTlv->type) {
1,697,244✔
1327
      case REMOTE_TABLE_CODE_FLAG:
565,748✔
1328
        code = tlvDecodeI32(pTlv, &pNode->flag);
565,748✔
1329
        break;
565,748✔
1330
      case REMOTE_TABLE_CODE_RES_COLS:
565,748✔
1331
        code = tlvDecodeI32(pTlv, &pNode->resCols);
565,748✔
1332
        break;
565,748✔
1333
      case REMOTE_TABLE_CODE_SUBQ_IDX:
565,748✔
1334
        code = tlvDecodeI32(pTlv, &pNode->subQIdx);
565,748✔
1335
        break;
565,748✔
1336
      default:
×
1337
        break;
×
1338
    }
1339
  }
1340

1341
  return code;
565,748✔
1342
}
1343

1344

1345

1346
enum { OPERATOR_CODE_EXPR_BASE = 1, OPERATOR_CODE_OP_TYPE, OPERATOR_CODE_LEFT, OPERATOR_CODE_RIGHT, OPERATOR_CODE_FLAG };
1347

1348
static int32_t operatorNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
353,321,781✔
1349
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
353,321,781✔
1350

1351
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
353,321,781✔
1352
  if (TSDB_CODE_SUCCESS == code) {
353,664,233✔
1353
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
353,664,002✔
1354
  }
1355
  if (TSDB_CODE_SUCCESS == code) {
353,566,769✔
1356
    code = tlvEncodeI32(pEncoder, OPERATOR_CODE_FLAG, pNode->flag);
353,549,616✔
1357
  }
1358
  if (TSDB_CODE_SUCCESS == code) {
353,663,894✔
1359
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
353,648,048✔
1360
  }
1361
  if (TSDB_CODE_SUCCESS == code) {
353,629,325✔
1362
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
353,613,898✔
1363
  }
1364

1365
  return code;
353,621,134✔
1366
}
1367

1368
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
292,654,576✔
1369
  SOperatorNode* pNode = (SOperatorNode*)pObj;
292,654,576✔
1370

1371
  int32_t code = TSDB_CODE_SUCCESS;
292,654,576✔
1372
  STlv*   pTlv = NULL;
292,654,576✔
1373
  tlvForEach(pDecoder, pTlv, code) {
1,715,866,834✔
1374
    switch (pTlv->type) {
1,423,233,732✔
1375
      case OPERATOR_CODE_EXPR_BASE:
292,652,271✔
1376
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
292,652,271✔
1377
        break;
292,691,061✔
1378
      case OPERATOR_CODE_OP_TYPE:
292,694,203✔
1379
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
292,694,203✔
1380
        break;
292,681,592✔
1381
      case OPERATOR_CODE_FLAG:
292,693,589✔
1382
        code = tlvDecodeI32(pTlv, &pNode->flag);
292,693,589✔
1383
        break;
292,689,899✔
1384
      case OPERATOR_CODE_LEFT:
292,691,971✔
1385
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
292,691,971✔
1386
        break;
292,662,564✔
1387
      case OPERATOR_CODE_RIGHT:
252,500,264✔
1388
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
252,500,264✔
1389
        break;
252,472,469✔
1390
      default:
×
1391
        break;
×
1392
    }
1393
  }
1394

1395
  return code;
292,780,397✔
1396
}
1397

1398
enum { LOGIC_COND_CODE_EXPR_BASE = 1, LOGIC_COND_CODE_COND_TYPE, LOGIC_COND_CODE_PARAMETERS };
1399

1400
static int32_t logicConditionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
54,020,078✔
1401
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
54,020,078✔
1402

1403
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
54,020,078✔
1404
  if (TSDB_CODE_SUCCESS == code) {
54,093,388✔
1405
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
54,093,388✔
1406
  }
1407
  if (TSDB_CODE_SUCCESS == code) {
54,014,045✔
1408
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
54,012,904✔
1409
  }
1410

1411
  return code;
54,091,554✔
1412
}
1413

1414
static int32_t msgToLogicConditionNode(STlvDecoder* pDecoder, void* pObj) {
50,015,961✔
1415
  SLogicConditionNode* pNode = (SLogicConditionNode*)pObj;
50,015,961✔
1416

1417
  int32_t code = TSDB_CODE_SUCCESS;
50,015,961✔
1418
  STlv*   pTlv = NULL;
50,015,961✔
1419
  tlvForEach(pDecoder, pTlv, code) {
200,115,386✔
1420
    switch (pTlv->type) {
150,094,780✔
1421
      case LOGIC_COND_CODE_EXPR_BASE:
50,027,062✔
1422
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
50,027,062✔
1423
        break;
50,029,633✔
1424
      case LOGIC_COND_CODE_COND_TYPE:
50,030,608✔
1425
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
50,030,608✔
1426
        break;
50,030,752✔
1427
      case LOGIC_COND_CODE_PARAMETERS:
50,036,135✔
1428
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
50,036,135✔
1429
        break;
50,031,322✔
1430
      default:
×
1431
        break;
×
1432
    }
1433
  }
1434

1435
  return code;
50,043,533✔
1436
}
1437

1438
enum {
1439
  FUNCTION_CODE_EXPR_BASE = 1,
1440
  FUNCTION_CODE_FUNCTION_NAME,
1441
  FUNCTION_CODE_FUNCTION_ID,
1442
  FUNCTION_CODE_FUNCTION_TYPE,
1443
  FUNCTION_CODE_PARAMETERS,
1444
  FUNCTION_CODE_UDF_BUF_SIZE,
1445
  FUNCTION_NODE_HAS_PK,
1446
  FUNCTION_NODE_PK_BYTES,
1447
  FUNCTION_CODE_IS_MERGE_FUNC,
1448
  FUNCTION_CODE_MERGE_FUNC_OF,
1449
  FUNCTION_CODE_TRIM_TYPE,
1450
  FUNCTION_SRC_FUNC_INPUT_TYPE,
1451
};
1452

1453
static int32_t functionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
750,246,973✔
1454
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
750,246,973✔
1455

1456
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
750,246,973✔
1457
  if (TSDB_CODE_SUCCESS == code) {
750,837,071✔
1458
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
750,852,847✔
1459
  }
1460
  if (TSDB_CODE_SUCCESS == code) {
750,534,499✔
1461
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
750,535,432✔
1462
  }
1463
  if (TSDB_CODE_SUCCESS == code) {
750,752,970✔
1464
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
750,754,466✔
1465
  }
1466
  if (TSDB_CODE_SUCCESS == code) {
750,838,226✔
1467
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
750,829,596✔
1468
  }
1469
  if (TSDB_CODE_SUCCESS == code) {
750,456,343✔
1470
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
750,448,963✔
1471
  }
1472
  if (TSDB_CODE_SUCCESS == code) {
750,845,091✔
1473
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
750,837,724✔
1474
  }
1475
  if (TSDB_CODE_SUCCESS == code) {
750,418,340✔
1476
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
750,411,219✔
1477
  }  
1478
  if (TSDB_CODE_SUCCESS == code) {
750,850,157✔
1479
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
750,834,209✔
1480
  }
1481
  if (TSDB_CODE_SUCCESS == code) {
750,351,853✔
1482
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
750,336,667✔
1483
  }
1484
  if (TSDB_CODE_SUCCESS == code) {
750,887,529✔
1485
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
750,872,816✔
1486
  }
1487
  if (TSDB_CODE_SUCCESS == code) {
750,894,810✔
1488
    code = tlvEncodeObj(pEncoder, FUNCTION_SRC_FUNC_INPUT_TYPE, dataTypeInlineToMsg, &pNode->srcFuncInputType);
750,880,406✔
1489
  }
1490

1491
  return code;
750,609,389✔
1492
}
1493

1494
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
615,802,569✔
1495
  SFunctionNode* pNode = (SFunctionNode*)pObj;
615,802,569✔
1496

1497
  int32_t code = TSDB_CODE_SUCCESS;
615,802,569✔
1498
  STlv*   pTlv = NULL;
615,802,569✔
1499
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
1500
    switch (pTlv->type) {
2,147,483,647✔
1501
      case FUNCTION_CODE_EXPR_BASE:
615,857,032✔
1502
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
615,857,032✔
1503
        break;
615,828,153✔
1504
      case FUNCTION_CODE_FUNCTION_NAME:
615,812,710✔
1505
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
615,812,710✔
1506
        break;
615,846,549✔
1507
      case FUNCTION_CODE_FUNCTION_ID:
615,884,962✔
1508
        code = tlvDecodeI32(pTlv, &pNode->funcId);
615,884,962✔
1509
        break;
615,872,016✔
1510
      case FUNCTION_CODE_FUNCTION_TYPE:
615,888,224✔
1511
        code = tlvDecodeI32(pTlv, &pNode->funcType);
615,888,224✔
1512
        break;
615,861,586✔
1513
      case FUNCTION_CODE_PARAMETERS:
510,729,299✔
1514
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
510,729,299✔
1515
        break;
510,693,498✔
1516
      case FUNCTION_CODE_UDF_BUF_SIZE:
615,878,798✔
1517
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
615,878,798✔
1518
        break;
615,864,248✔
1519
      case FUNCTION_NODE_HAS_PK:
615,898,376✔
1520
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
615,898,376✔
1521
        break;
615,859,910✔
1522
      case FUNCTION_NODE_PK_BYTES:
615,892,184✔
1523
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
615,892,184✔
1524
        break;  
615,869,878✔
1525
      case FUNCTION_CODE_IS_MERGE_FUNC:
615,898,676✔
1526
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
615,898,676✔
1527
        break;
615,851,166✔
1528
      case FUNCTION_CODE_MERGE_FUNC_OF:
615,851,282✔
1529
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
615,851,282✔
1530
        break;
615,870,734✔
1531
      case FUNCTION_CODE_TRIM_TYPE:
615,889,804✔
1532
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
615,889,804✔
1533
        break;
615,856,753✔
1534
      case FUNCTION_SRC_FUNC_INPUT_TYPE:
615,900,542✔
1535
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->srcFuncInputType);
615,900,542✔
1536
      default:
615,852,306✔
1537
        break;
615,852,306✔
1538
    }
1539
  }
1540

1541
  return code;
621,206,736✔
1542
}
1543

1544
enum { ORDER_BY_EXPR_CODE_EXPR = 1, ORDER_BY_EXPR_CODE_ORDER, ORDER_BY_EXPR_CODE_NULL_ORDER };
1545

1546
static int32_t orderByExprNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
100,424,396✔
1547
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
100,424,396✔
1548

1549
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
100,424,396✔
1550
  if (TSDB_CODE_SUCCESS == code) {
100,471,561✔
1551
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
100,462,263✔
1552
  }
1553
  if (TSDB_CODE_SUCCESS == code) {
100,471,446✔
1554
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
100,471,692✔
1555
  }
1556

1557
  return code;
100,469,682✔
1558
}
1559

1560
static int32_t msgToOrderByExprNode(STlvDecoder* pDecoder, void* pObj) {
66,929,071✔
1561
  SOrderByExprNode* pNode = (SOrderByExprNode*)pObj;
66,929,071✔
1562

1563
  int32_t code = TSDB_CODE_SUCCESS;
66,929,071✔
1564
  STlv*   pTlv = NULL;
66,929,071✔
1565
  tlvForEach(pDecoder, pTlv, code) {
267,743,223✔
1566
    switch (pTlv->type) {
200,811,319✔
1567
      case ORDER_BY_EXPR_CODE_EXPR:
66,925,617✔
1568
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
66,925,617✔
1569
        break;
66,936,811✔
1570
      case ORDER_BY_EXPR_CODE_ORDER:
66,937,391✔
1571
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
66,937,391✔
1572
        break;
66,936,663✔
1573
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
66,948,556✔
1574
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
66,948,556✔
1575
        break;
66,937,391✔
1576
      default:
×
1577
        break;
×
1578
    }
1579
  }
1580

1581
  return code;
66,944,238✔
1582
}
1583

1584
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1585

1586
static int32_t limitNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
44,152,337✔
1587
  const SLimitNode* pNode = (const SLimitNode*)pObj;
44,152,337✔
1588

1589
  int32_t code = tlvEncodeObj(pEncoder, LIMIT_CODE_LIMIT, nodeToMsg, pNode->limit);
44,152,337✔
1590
  if (TSDB_CODE_SUCCESS == code && pNode->offset) {
44,194,403✔
1591
    code = tlvEncodeObj(pEncoder, LIMIT_CODE_OFFSET, nodeToMsg, pNode->offset);
11,988,960✔
1592
  }
1593

1594
  return code;
44,174,734✔
1595
}
1596

1597
static int32_t msgToLimitNode(STlvDecoder* pDecoder, void* pObj) {
37,522,201✔
1598
  SLimitNode* pNode = (SLimitNode*)pObj;
37,522,201✔
1599

1600
  int32_t code = TSDB_CODE_SUCCESS;
37,522,201✔
1601
  STlv*   pTlv = NULL;
37,522,201✔
1602
  tlvForEach(pDecoder, pTlv, code) {
86,894,277✔
1603
    switch (pTlv->type) {
49,372,797✔
1604
      case LIMIT_CODE_LIMIT:
37,519,893✔
1605
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->limit);
37,519,893✔
1606
        break;
37,523,953✔
1607
      case LIMIT_CODE_OFFSET:
11,852,904✔
1608
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->offset);
11,852,904✔
1609
        break;
11,846,503✔
1610
      default:
×
1611
        break;
×
1612
    }
1613
  }
1614

1615
  return code;
37,529,992✔
1616
}
1617

1618
enum { NAME_CODE_TYPE = 1, NAME_CODE_ACCT_ID, NAME_CODE_DB_NAME, NAME_CODE_TABLE_NAME };
1619

1620
static int32_t nameToMsg(const void* pObj, STlvEncoder* pEncoder) {
468,058,789✔
1621
  const SName* pNode = (const SName*)pObj;
468,058,789✔
1622

1623
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
468,058,789✔
1624
  if (TSDB_CODE_SUCCESS == code) {
468,853,887✔
1625
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
468,869,111✔
1626
  }
1627
  if (TSDB_CODE_SUCCESS == code) {
468,887,535✔
1628
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
468,908,968✔
1629
  }
1630
  if (TSDB_CODE_SUCCESS == code) {
468,297,617✔
1631
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
468,322,619✔
1632
  }
1633

1634
  return code;
468,953,232✔
1635
}
1636

1637
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
334,409,738✔
1638
  SName* pNode = (SName*)pObj;
334,409,738✔
1639

1640
  int32_t code = TSDB_CODE_SUCCESS;
334,409,738✔
1641
  STlv*   pTlv = NULL;
334,409,738✔
1642
  tlvForEach(pDecoder, pTlv, code) {
1,672,325,495✔
1643
    switch (pTlv->type) {
1,338,014,735✔
1644
      case NAME_CODE_TYPE:
334,424,947✔
1645
        code = tlvDecodeU8(pTlv, &pNode->type);
334,424,947✔
1646
        break;
334,476,559✔
1647
      case NAME_CODE_ACCT_ID:
334,512,947✔
1648
        code = tlvDecodeI32(pTlv, &pNode->acctId);
334,512,947✔
1649
        break;
334,496,864✔
1650
      case NAME_CODE_DB_NAME:
334,513,172✔
1651
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
334,513,172✔
1652
        break;
334,405,404✔
1653
      case NAME_CODE_TABLE_NAME:
334,559,410✔
1654
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
334,559,410✔
1655
        break;
334,500,059✔
1656
      default:
×
1657
        break;
×
1658
    }
1659
  }
1660

1661
  return code;
334,539,815✔
1662
}
1663

1664
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1665

1666
static int32_t timeWindowToMsg(const void* pObj, STlvEncoder* pEncoder) {
25,126,588✔
1667
  const STimeWindow* pNode = (const STimeWindow*)pObj;
25,126,588✔
1668

1669
  int32_t code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_START_KEY, pNode->skey);
25,126,588✔
1670
  if (TSDB_CODE_SUCCESS == code) {
25,150,922✔
1671
    code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_END_KEY, pNode->ekey);
25,150,595✔
1672
  }
1673

1674
  return code;
25,155,018✔
1675
}
1676

1677
static int32_t msgToTimeWindow(STlvDecoder* pDecoder, void* pObj) {
16,925,068✔
1678
  STimeWindow* pNode = (STimeWindow*)pObj;
16,925,068✔
1679

1680
  int32_t code = TSDB_CODE_SUCCESS;
16,925,068✔
1681
  STlv*   pTlv = NULL;
16,925,068✔
1682
  tlvForEach(pDecoder, pTlv, code) {
50,782,302✔
1683
    switch (pTlv->type) {
33,856,424✔
1684
      case TIME_WINDOW_CODE_START_KEY:
16,926,174✔
1685
        code = tlvDecodeI64(pTlv, &pNode->skey);
16,926,174✔
1686
        break;
16,927,370✔
1687
      case TIME_WINDOW_CODE_END_KEY:
16,930,250✔
1688
        code = tlvDecodeI64(pTlv, &pNode->ekey);
16,930,250✔
1689
        break;
16,928,118✔
1690
      default:
×
1691
        break;
×
1692
    }
1693
  }
1694

1695
  return code;
16,927,912✔
1696
}
1697

1698
enum { NODE_LIST_CODE_EXPR_BASE = 1, NODE_LIST_CODE_NODE_LIST };
1699

1700
static int32_t nodeListNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
12,116,024✔
1701
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
12,116,024✔
1702

1703
  int32_t code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_EXPR_BASE, exprNodeToMsg, pNode);
12,116,024✔
1704
  if (TSDB_CODE_SUCCESS == code) {
12,132,994✔
1705
    code = tlvEncodeObj(pEncoder, NODE_LIST_CODE_NODE_LIST, nodeListToMsg, pNode->pNodeList);
12,133,608✔
1706
  }
1707

1708
  return code;
12,132,854✔
1709
}
1710

1711
static int32_t msgToNodeListNode(STlvDecoder* pDecoder, void* pObj) {
8,310,167✔
1712
  SNodeListNode* pNode = (SNodeListNode*)pObj;
8,310,167✔
1713

1714
  int32_t code = TSDB_CODE_SUCCESS;
8,310,167✔
1715
  STlv*   pTlv = NULL;
8,310,167✔
1716
  tlvForEach(pDecoder, pTlv, code) {
24,930,574✔
1717
    switch (pTlv->type) {
16,620,407✔
1718
      case NODE_LIST_CODE_EXPR_BASE:
8,309,583✔
1719
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
8,309,583✔
1720
        break;
8,309,995✔
1721
      case NODE_LIST_CODE_NODE_LIST:
8,310,824✔
1722
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
8,310,824✔
1723
        break;
8,310,412✔
1724
      default:
×
1725
        break;
×
1726
    }
1727
  }
1728

1729
  return code;
8,310,412✔
1730
}
1731

1732
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1733

1734
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1735
  const STargetNode* pNode = (const STargetNode*)pObj;
2,147,483,647✔
1736

1737
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->dataBlockId);
2,147,483,647✔
1738
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1739
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
2,147,483,647✔
1740
  }
1741

1742
  return code;
2,147,483,647✔
1743
}
1744

1745
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1746
  const STargetNode* pNode = (const STargetNode*)pObj;
2,147,483,647✔
1747

1748
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
2,147,483,647✔
1749
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1750
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
2,147,483,647✔
1751
  }
1752

1753
  return code;
2,147,483,647✔
1754
}
1755

1756
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1757
  STargetNode* pNode = (STargetNode*)pObj;
2,147,483,647✔
1758

1759
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->dataBlockId);
2,147,483,647✔
1760
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1761
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
2,147,483,647✔
1762
  }
1763

1764
  return code;
2,147,483,647✔
1765
}
1766

1767
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1768
  STargetNode* pNode = (STargetNode*)pObj;
2,147,483,647✔
1769

1770
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
1771
  STlv*   pTlv = NULL;
2,147,483,647✔
1772
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
1773
    switch (pTlv->type) {
2,147,483,647✔
1774
      case TARGET_CODE_INLINE_ATTRS:
2,147,483,647✔
1775
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
2,147,483,647✔
1776
        break;
2,147,483,647✔
1777
      case TARGET_CODE_EXPR:
2,147,483,647✔
1778
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
2,147,483,647✔
1779
        break;
2,147,483,647✔
1780
      default:
×
1781
        break;
×
1782
    }
1783
  }
1784

1785
  return code;
2,147,483,647✔
1786
}
1787

1788
enum { TIME_RANGE_CODE_START = 1,
1789
       TIME_RANGE_CODE_END,
1790
       TIME_RANGE_CODE_NEED_CALC };
1791

1792
static int32_t timeRangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
1793
  const STimeRangeNode* pNode = (const STimeRangeNode*)pObj;
×
1794

1795
  int32_t code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_START, nodeToMsg, pNode->pStart);
×
1796
  if (TSDB_CODE_SUCCESS == code) {
×
1797
    code = tlvEncodeObj(pEncoder, TIME_RANGE_CODE_END, nodeToMsg, pNode->pEnd);
×
1798
  }
1799
  if (TSDB_CODE_SUCCESS == code) {
×
1800
    code = tlvEncodeBool(pEncoder, TIME_RANGE_CODE_NEED_CALC, pNode->needCalc);
×
1801
  }
1802

1803
  return code;
×
1804
}
1805

1806
static int32_t msgToTimeRangeNode(STlvDecoder* pDecoder, void* pObj) {
×
1807
  STimeRangeNode* pNode = (STimeRangeNode*)pObj;
×
1808

1809
  int32_t code = TSDB_CODE_SUCCESS;
×
1810
  STlv*   pTlv = NULL;
×
1811
  tlvForEach(pDecoder, pTlv, code) {
×
1812
    switch (pTlv->type) {
×
1813
      case TIME_RANGE_CODE_START:
×
1814
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStart);
×
1815
        break;
×
1816
      case TIME_RANGE_CODE_END:
×
1817
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEnd);
×
1818
        break;
×
1819
      case TIME_RANGE_CODE_NEED_CALC:
×
1820
        code = tlvDecodeBool(pTlv, &pNode->needCalc);
×
1821
        break;
×
1822
      default:
×
1823
        break;
×
1824
    }
1825
  }
1826

1827
  return code;
×
1828
}
1829

1830
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1831

1832
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,726,546,708✔
1833
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
1,726,546,708✔
1834

1835
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->dataBlockId);
1,726,546,708✔
1836
  if (TSDB_CODE_SUCCESS == code) {
1,725,463,180✔
1837
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
1,725,281,389✔
1838
  }
1839
  if (TSDB_CODE_SUCCESS == code) {
1,728,258,610✔
1840
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
1,728,224,824✔
1841
  }
1842
  if (TSDB_CODE_SUCCESS == code) {
1,728,538,001✔
1843
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
1,728,517,419✔
1844
  }
1845

1846
  return code;
1,728,538,830✔
1847
}
1848

1849
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,727,104,219✔
1850
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
1,727,104,219✔
1851

1852
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
1,727,104,219✔
1853
  if (TSDB_CODE_SUCCESS == code) {
1,728,566,512✔
1854
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
1,728,592,249✔
1855
  }
1856

1857
  return code;
1,728,756,009✔
1858
}
1859

1860
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
1,242,700,191✔
1861
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
1,242,700,191✔
1862

1863
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->dataBlockId);
1,242,700,191✔
1864
  if (TSDB_CODE_SUCCESS == code) {
1,242,629,338✔
1865
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
1,242,675,577✔
1866
  }
1867
  if (TSDB_CODE_SUCCESS == code) {
1,242,802,999✔
1868
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
1,242,802,999✔
1869
  }
1870
  if (TSDB_CODE_SUCCESS == code) {
1,242,819,404✔
1871
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
1,242,819,404✔
1872
  }
1873

1874
  return code;
1,242,727,885✔
1875
}
1876

1877
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
1,242,639,686✔
1878
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
1,242,639,686✔
1879

1880
  int32_t code = TSDB_CODE_SUCCESS;
1,242,639,686✔
1881
  STlv*   pTlv = NULL;
1,242,639,686✔
1882
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
1883
    switch (pTlv->type) {
2,147,483,647✔
1884
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
1,242,736,460✔
1885
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
1,242,736,460✔
1886
        break;
1,242,725,118✔
1887
      case DATA_BLOCK_DESC_CODE_SLOTS:
1,242,921,770✔
1888
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
1,242,921,770✔
1889
        break;
1,242,743,420✔
1890
      default:
×
1891
        break;
×
1892
    }
1893
  }
1894

1895
  return code;
1,242,834,504✔
1896
}
1897

1898
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1899

1900
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1901
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
2,147,483,647✔
1902

1903
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
2,147,483,647✔
1904
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1905
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
2,147,483,647✔
1906
  }
1907
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1908
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
2,147,483,647✔
1909
  }
1910
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1911
    code = tlvEncodeValueBool(pEncoder, pNode->output);
2,147,483,647✔
1912
  }
1913
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1914
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
2,147,483,647✔
1915
  }
1916

1917
  return code;
2,147,483,647✔
1918
}
1919

1920
static int32_t slotDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
1921
  return tlvEncodeObj(pEncoder, SLOT_DESC_CODE_INLINE_ATTRS, slotDescNodeInlineToMsg, pObj);
2,147,483,647✔
1922
}
1923

1924
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1925
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
2,147,483,647✔
1926

1927
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
2,147,483,647✔
1928
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1929
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
2,147,483,647✔
1930
  }
1931
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1932
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
2,147,483,647✔
1933
  }
1934
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1935
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
2,147,483,647✔
1936
  }
1937
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
1938
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
2,147,483,647✔
1939
  }
1940

1941
  return code;
2,147,483,647✔
1942
}
1943

1944
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
1945
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
2,147,483,647✔
1946

1947
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
1948
  STlv*   pTlv = NULL;
2,147,483,647✔
1949
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
1950
    switch (pTlv->type) {
2,147,483,647✔
1951
      case SLOT_DESC_CODE_INLINE_ATTRS:
2,147,483,647✔
1952
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
2,147,483,647✔
1953
        break;
2,147,483,647✔
1954
      default:
×
1955
        break;
×
1956
    }
1957
  }
1958

1959
  return code;
2,147,483,647✔
1960
}
1961

1962
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1963

1964
static int32_t epInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
749,069,204✔
1965
  const SEp* pNode = (const SEp*)pObj;
749,069,204✔
1966

1967
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
749,069,204✔
1968
  if (TSDB_CODE_SUCCESS == code) {
749,631,527✔
1969
    code = tlvEncodeValueU16(pEncoder, pNode->port);
749,633,578✔
1970
  }
1971

1972
  return code;
749,546,651✔
1973
}
1974

1975
static int32_t epToMsg(const void* pObj, STlvEncoder* pEncoder) {
48,250,873✔
1976
  const SEp* pNode = (const SEp*)pObj;
48,250,873✔
1977

1978
  int32_t code = tlvEncodeCStr(pEncoder, EP_CODE_FQDN, pNode->fqdn);
48,250,873✔
1979
  if (TSDB_CODE_SUCCESS == code) {
48,319,764✔
1980
    code = tlvEncodeU16(pEncoder, EP_CODE_port, pNode->port);
48,319,764✔
1981
  }
1982

1983
  return code;
48,317,041✔
1984
}
1985

1986
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
539,080,297✔
1987
  SEp* pNode = (SEp*)pObj;
539,080,297✔
1988

1989
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
539,080,297✔
1990
  if (TSDB_CODE_SUCCESS == code) {
539,182,277✔
1991
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
539,181,972✔
1992
  }
1993

1994
  return code;
539,099,908✔
1995
}
1996

1997
static int32_t msgToEp(STlvDecoder* pDecoder, void* pObj) {
28,830,824✔
1998
  SEp* pNode = (SEp*)pObj;
28,830,824✔
1999

2000
  int32_t code = TSDB_CODE_SUCCESS;
28,830,824✔
2001
  STlv*   pTlv = NULL;
28,830,824✔
2002
  tlvForEach(pDecoder, pTlv, code) {
86,501,548✔
2003
    switch (pTlv->type) {
57,676,564✔
2004
      case EP_CODE_FQDN:
28,835,798✔
2005
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
28,835,798✔
2006
        break;
28,829,959✔
2007
      case EP_CODE_port:
28,840,766✔
2008
        code = tlvDecodeU16(pTlv, &pNode->port);
28,840,766✔
2009
        break;
28,835,291✔
2010
      default:
×
2011
        break;
×
2012
    }
2013
  }
2014

2015
  return code;
28,839,982✔
2016
}
2017

2018
enum { EP_SET_CODE_IN_USE = 1, EP_SET_CODE_NUM_OF_EPS, EP_SET_CODE_EPS };
2019

2020
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
828,718,658✔
2021
  const SEpSet* pNode = (const SEpSet*)pObj;
828,718,658✔
2022

2023
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
828,718,658✔
2024
  if (TSDB_CODE_SUCCESS == code) {
828,975,531✔
2025
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
828,980,589✔
2026
  }
2027

2028
  return code;
828,685,842✔
2029
}
2030

2031
static int32_t epSetToMsg(const void* pObj, STlvEncoder* pEncoder) {
47,791,486✔
2032
  const SEpSet* pNode = (const SEpSet*)pObj;
47,791,486✔
2033

2034
  int32_t code = tlvEncodeI8(pEncoder, EP_SET_CODE_IN_USE, pNode->inUse);
47,791,486✔
2035
  if (TSDB_CODE_SUCCESS == code) {
47,851,156✔
2036
    code = tlvEncodeI8(pEncoder, EP_SET_CODE_NUM_OF_EPS, pNode->numOfEps);
47,850,937✔
2037
  }
2038
  if (TSDB_CODE_SUCCESS == code) {
47,847,354✔
2039
    code = tlvEncodeObjArray(pEncoder, EP_SET_CODE_EPS, epToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
47,847,354✔
2040
  }
2041

2042
  return code;
47,780,943✔
2043
}
2044

2045
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
600,292,957✔
2046
  SEpSet* pNode = (SEpSet*)pObj;
600,292,957✔
2047

2048
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
600,292,957✔
2049
  if (TSDB_CODE_SUCCESS == code) {
600,370,924✔
2050
    int32_t numOfEps = 0;
600,368,523✔
2051
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
600,274,155✔
2052
    pNode->numOfEps = numOfEps;
600,321,620✔
2053
  }
2054

2055
  return code;
600,321,950✔
2056
}
2057

2058
static int32_t msgToEpSet(STlvDecoder* pDecoder, void* pObj) {
28,471,956✔
2059
  SEpSet* pNode = (SEpSet*)pObj;
28,471,956✔
2060

2061
  int32_t code = TSDB_CODE_SUCCESS;
28,471,956✔
2062
  STlv*   pTlv = NULL;
28,471,956✔
2063
  tlvForEach(pDecoder, pTlv, code) {
113,899,894✔
2064
    switch (pTlv->type) {
85,431,753✔
2065
      case EP_SET_CODE_IN_USE:
28,473,477✔
2066
        code = tlvDecodeI8(pTlv, &pNode->inUse);
28,473,477✔
2067
        break;
28,475,024✔
2068
      case EP_SET_CODE_NUM_OF_EPS:
28,477,251✔
2069
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
28,477,251✔
2070
        break;
28,477,251✔
2071
      case EP_SET_CODE_EPS:
28,481,025✔
2072
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
28,481,025✔
2073
        break;
28,472,694✔
2074
      default:
×
2075
        break;
×
2076
    }
2077
  }
2078

2079
  return code;
28,479,957✔
2080
}
2081

2082
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
2083

2084
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
828,720,719✔
2085
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
828,720,719✔
2086

2087
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
828,720,719✔
2088
  if (TSDB_CODE_SUCCESS == code) {
828,818,119✔
2089
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
828,825,112✔
2090
  }
2091

2092
  return code;
828,979,510✔
2093
}
2094

2095
static int32_t queryNodeAddrToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
2096
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
×
2097

2098
  int32_t code = tlvEncodeI32(pEncoder, QUERY_NODE_ADDR_CODE_NODE_ID, pNode->nodeId);
×
2099
  if (TSDB_CODE_SUCCESS == code) {
×
2100
    code = tlvEncodeObj(pEncoder, QUERY_NODE_ADDR_CODE_EP_SET, epSetToMsg, &pNode->epSet);
×
2101
  }
2102

2103
  return code;
×
2104
}
2105

2106
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
600,290,980✔
2107
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
600,290,980✔
2108

2109
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
600,290,980✔
2110
  if (TSDB_CODE_SUCCESS == code) {
600,395,692✔
2111
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
600,397,588✔
2112
  }
2113

2114
  return code;
600,278,824✔
2115
}
2116

2117
static int32_t msgToQueryNodeAddr(STlvDecoder* pDecoder, void* pObj) {
×
2118
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
×
2119

2120
  int32_t code = TSDB_CODE_SUCCESS;
×
2121
  STlv*   pTlv = NULL;
×
2122
  tlvForEach(pDecoder, pTlv, code) {
×
2123
    switch (pTlv->type) {
×
2124
      case QUERY_NODE_ADDR_CODE_NODE_ID:
×
2125
        code = tlvDecodeI32(pTlv, &pNode->nodeId);
×
2126
        break;
×
2127
      case QUERY_NODE_ADDR_CODE_EP_SET:
×
2128
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
×
2129
        break;
×
2130
    }
2131
  }
2132

2133
  return code;
×
2134
}
2135

2136
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
2137

2138
static int32_t downstreamSourceNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
268,844,568✔
2139
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
268,844,568✔
2140

2141
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
268,844,568✔
2142
  if (TSDB_CODE_SUCCESS == code) {
268,846,715✔
2143
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
268,846,715✔
2144
  }
2145
  if (TSDB_CODE_SUCCESS == code) {
268,846,103✔
2146
    code = tlvEncodeValueU64(pEncoder, pNode->sId);
268,844,496✔
2147
  }
2148
  if (TSDB_CODE_SUCCESS == code) {
268,846,243✔
2149
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
268,844,636✔
2150
  }
2151
  if (TSDB_CODE_SUCCESS == code) {
268,846,405✔
2152
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
268,844,798✔
2153
  }
2154
  if (TSDB_CODE_SUCCESS == code) {
268,847,295✔
2155
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
268,845,688✔
2156
  }
2157

2158
  return code;
268,845,309✔
2159
}
2160

2161
static int32_t downstreamSourceNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
268,845,003✔
2162
  return tlvEncodeObj(pEncoder, DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS, downstreamSourceNodeInlineToMsg, pObj);
268,845,003✔
2163
}
2164

2165
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
200,797,403✔
2166
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
200,797,403✔
2167

2168
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
200,797,403✔
2169
  if (TSDB_CODE_SUCCESS == code) {
200,797,851✔
2170
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
200,797,851✔
2171
  }
2172
  if (TSDB_CODE_SUCCESS == code) {
200,798,435✔
2173
    code = tlvDecodeValueU64(pDecoder, &pNode->sId);
200,798,435✔
2174
  }
2175
  if (TSDB_CODE_SUCCESS == code) {
200,796,242✔
2176
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
200,796,242✔
2177
  }
2178
  if (TSDB_CODE_SUCCESS == code) {
200,797,839✔
2179
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
200,797,839✔
2180
  }
2181
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
200,797,422✔
2182
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
200,797,422✔
2183
  }
2184

2185
  return code;
200,798,435✔
2186
}
2187

2188
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
200,797,855✔
2189
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
200,797,855✔
2190

2191
  int32_t code = TSDB_CODE_SUCCESS;
200,797,855✔
2192
  STlv*   pTlv = NULL;
200,797,855✔
2193
  tlvForEach(pDecoder, pTlv, code) {
401,596,870✔
2194
    switch (pTlv->type) {
200,796,185✔
2195
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
200,797,399✔
2196
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
200,797,399✔
2197
        break;
200,798,435✔
2198
      default:
×
2199
        break;
×
2200
    }
2201
  }
2202

2203
  return code;
200,801,413✔
2204
}
2205

2206
enum { WHEN_THEN_CODE_EXPR_BASE = 1, WHEN_THEN_CODE_WHEN, WHEN_THEN_CODE_THEN };
2207

2208
static int32_t whenThenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
7,722,346✔
2209
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
7,722,346✔
2210

2211
  int32_t code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
7,722,346✔
2212
  if (TSDB_CODE_SUCCESS == code) {
7,724,335✔
2213
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_WHEN, nodeToMsg, pNode->pWhen);
7,724,335✔
2214
  }
2215
  if (TSDB_CODE_SUCCESS == code) {
7,723,914✔
2216
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_THEN, nodeToMsg, pNode->pThen);
7,723,914✔
2217
  }
2218

2219
  return code;
7,724,334✔
2220
}
2221

2222
static int32_t msgToWhenThenNode(STlvDecoder* pDecoder, void* pObj) {
2,068,841✔
2223
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
2,068,841✔
2224

2225
  int32_t code = TSDB_CODE_SUCCESS;
2,068,841✔
2226
  STlv*   pTlv = NULL;
2,068,841✔
2227
  tlvForEach(pDecoder, pTlv, code) {
8,275,364✔
2228
    switch (pTlv->type) {
6,206,523✔
2229
      case WHEN_THEN_CODE_EXPR_BASE:
2,068,841✔
2230
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
2,068,841✔
2231
        break;
2,068,841✔
2232
      case WHEN_THEN_CODE_WHEN:
2,068,841✔
2233
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
2,068,841✔
2234
        break;
2,068,841✔
2235
      case WHEN_THEN_CODE_THEN:
2,068,841✔
2236
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
2,068,841✔
2237
        break;
2,068,841✔
2238
      default:
×
2239
        break;
×
2240
    }
2241
  }
2242

2243
  return code;
2,068,841✔
2244
}
2245

2246
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
2247

2248
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
7,473,101✔
2249
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
7,473,101✔
2250

2251
  int32_t code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
7,473,101✔
2252
  if (TSDB_CODE_SUCCESS == code) {
7,474,488✔
2253
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_CASE, nodeToMsg, pNode->pCase);
7,474,488✔
2254
  }
2255
  if (TSDB_CODE_SUCCESS == code) {
7,472,835✔
2256
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_ELSE, nodeToMsg, pNode->pElse);
7,472,835✔
2257
  }
2258
  if (TSDB_CODE_SUCCESS == code) {
7,474,075✔
2259
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_WHEN_THEN_LIST, nodeListToMsg, pNode->pWhenThenList);
7,474,075✔
2260
  }
2261

2262
  return code;
7,474,662✔
2263
}
2264

2265
static int32_t msgToCaseWhenNode(STlvDecoder* pDecoder, void* pObj) {
1,819,715✔
2266
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
1,819,715✔
2267

2268
  int32_t code = TSDB_CODE_SUCCESS;
1,819,715✔
2269
  STlv*   pTlv = NULL;
1,819,715✔
2270
  tlvForEach(pDecoder, pTlv, code) {
7,329,603✔
2271
    switch (pTlv->type) {
5,509,888✔
2272
      case CASE_WHEN_CODE_EXPR_BASE:
1,819,715✔
2273
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
1,819,715✔
2274
        break;
1,819,715✔
2275
      case CASE_WHEN_CODE_CASE:
202,680✔
2276
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
202,680✔
2277
        break;
202,680✔
2278
      case CASE_WHEN_CODE_ELSE:
1,667,778✔
2279
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
1,667,778✔
2280
        break;
1,667,778✔
2281
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
1,819,715✔
2282
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
1,819,715✔
2283
        break;
1,819,715✔
2284
      default:
×
2285
        break;
×
2286
    }
2287
  }
2288

2289
  return code;
1,819,715✔
2290
}
2291

2292
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
2293

2294
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
366,819✔
2295
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
366,819✔
2296

2297
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
366,819✔
2298
  if (TSDB_CODE_SUCCESS == code) {
366,819✔
2299
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
366,819✔
2300
  }
2301

2302
  return code;
366,819✔
2303
}
2304

2305
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
368,936✔
2306
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
368,936✔
2307

2308
  int32_t code = TSDB_CODE_SUCCESS;
368,936✔
2309
  STlv*   pTlv = NULL;
368,936✔
2310
  tlvForEach(pDecoder, pTlv, code) {
1,106,808✔
2311
    switch (pTlv->type) {
737,429✔
2312
      case WINDOW_OFFSET_CODE_START_OFFSET:
368,936✔
2313
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartOffset);
368,936✔
2314
        break;
368,936✔
2315
      case WINDOW_OFFSET_CODE_END_OFFSET:
368,493✔
2316
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndOffset);
368,493✔
2317
        break;
368,936✔
2318
      default:
×
2319
        break;
×
2320
    }
2321
  }
2322

2323
  return code;
369,379✔
2324
}
2325

2326

2327
enum {
2328
  PHY_NODE_CODE_OUTPUT_DESC = 1,
2329
  PHY_NODE_CODE_CONDITIONS,
2330
  PHY_NODE_CODE_CHILDREN,
2331
  PHY_NODE_CODE_LIMIT,
2332
  PHY_NODE_CODE_SLIMIT,
2333
  PHY_NODE_CODE_INPUT_TS_ORDER,
2334
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
2335
  PHY_NODE_CODE_DYNAMIC_OP,
2336
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
2337
};
2338

2339
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,167,036,853✔
2340
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
1,167,036,853✔
2341

2342
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
1,167,036,853✔
2343
  if (TSDB_CODE_SUCCESS == code) {
1,168,359,780✔
2344
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
1,168,377,020✔
2345
  }
2346
  if (TSDB_CODE_SUCCESS == code) {
1,168,198,696✔
2347
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
1,168,119,070✔
2348
  }
2349
  if (TSDB_CODE_SUCCESS == code) {
1,168,182,183✔
2350
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
1,168,116,847✔
2351
  }
2352
  if (TSDB_CODE_SUCCESS == code) {
1,167,907,002✔
2353
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
1,167,846,645✔
2354
  }
2355
  if (TSDB_CODE_SUCCESS == code) {
1,167,426,200✔
2356
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
1,167,371,375✔
2357
  }
2358
  if (TSDB_CODE_SUCCESS == code) {
1,166,966,169✔
2359
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
1,166,873,603✔
2360
  }
2361
  if (TSDB_CODE_SUCCESS == code) {
1,168,352,600✔
2362
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
1,168,266,698✔
2363
  }
2364
  if (TSDB_CODE_SUCCESS == code) { 
1,168,514,924✔
2365
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
1,168,435,613✔
2366
  }
2367

2368
  return code;
1,168,449,826✔
2369
}
2370

2371
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
842,994,313✔
2372
  SPhysiNode* pNode = (SPhysiNode*)pObj;
842,994,313✔
2373

2374
  int32_t code = TSDB_CODE_SUCCESS;
842,994,313✔
2375
  STlv*   pTlv = NULL;
842,994,313✔
2376
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
2377
    switch (pTlv->type) {
2,147,483,647✔
2378
      case PHY_NODE_CODE_OUTPUT_DESC:
843,125,009✔
2379
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
843,125,009✔
2380
        break;
843,150,028✔
2381
      case PHY_NODE_CODE_CONDITIONS:
109,903,539✔
2382
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
109,903,539✔
2383
        break;
109,886,504✔
2384
      case PHY_NODE_CODE_CHILDREN:
391,861,134✔
2385
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
391,861,134✔
2386
        break;
391,908,414✔
2387
      case PHY_NODE_CODE_LIMIT:
34,409,178✔
2388
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
34,409,178✔
2389
        break;
34,408,598✔
2390
      case PHY_NODE_CODE_SLIMIT:
2,935,972✔
2391
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
2,935,972✔
2392
        break;
2,935,933✔
2393
      case PHY_NODE_CODE_INPUT_TS_ORDER:
843,197,407✔
2394
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
843,197,407✔
2395
        break;
843,223,568✔
2396
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
843,258,522✔
2397
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
843,258,522✔
2398
        break;
843,251,628✔
2399
      case PHY_NODE_CODE_DYNAMIC_OP:
843,258,255✔
2400
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
843,258,255✔
2401
        break;
843,234,343✔
2402
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
843,353,518✔
2403
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
843,353,518✔
2404
        break;
843,232,497✔
2405
      default:
×
2406
        break;
×
2407
    }
2408
  }
2409

2410
  return code;
843,285,782✔
2411
}
2412

2413
enum {
2414
  PHY_SCAN_CODE_BASE_NODE = 1,
2415
  PHY_SCAN_CODE_SCAN_COLS,
2416
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2417
  PHY_SCAN_CODE_BASE_UID,
2418
  PHY_SCAN_CODE_BASE_SUID,
2419
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2420
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2421
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN,
2422
  PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN
2423
};
2424

2425
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
468,029,624✔
2426
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
468,029,624✔
2427

2428
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
468,029,624✔
2429
  if (TSDB_CODE_SUCCESS == code) {
468,882,903✔
2430
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
468,887,687✔
2431
  }
2432
  if (TSDB_CODE_SUCCESS == code) {
468,910,754✔
2433
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
468,913,590✔
2434
  }
2435
  if (TSDB_CODE_SUCCESS == code) {
468,862,581✔
2436
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
468,865,528✔
2437
  }
2438
  if (TSDB_CODE_SUCCESS == code) {
468,263,972✔
2439
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
468,196,806✔
2440
  }
2441
  if (TSDB_CODE_SUCCESS == code) {
468,961,966✔
2442
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
468,896,612✔
2443
  }
2444
  if (TSDB_CODE_SUCCESS == code) {
468,968,831✔
2445
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
468,904,945✔
2446
  }
2447
  if (TSDB_CODE_SUCCESS == code) {
469,019,540✔
2448
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
468,955,752✔
2449
  }
2450
  if (TSDB_CODE_SUCCESS == code) {
469,010,049✔
2451
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN, pNode->virtualStableScan);
468,872,647✔
2452
  }
2453

2454
  return code;
468,948,780✔
2455
}
2456

2457
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
334,364,044✔
2458
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
334,364,044✔
2459

2460
  int32_t code = TSDB_CODE_SUCCESS;
334,364,044✔
2461
  STlv*   pTlv = NULL;
334,364,044✔
2462
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647✔
2463
    switch (pTlv->type) {
2,147,483,647✔
2464
      case PHY_SCAN_CODE_BASE_NODE:
334,380,572✔
2465
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
334,380,572✔
2466
        break;
334,474,349✔
2467
      case PHY_SCAN_CODE_SCAN_COLS:
325,754,946✔
2468
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
325,754,946✔
2469
        break;
325,708,725✔
2470
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
83,883,601✔
2471
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
83,883,601✔
2472
        break;
83,882,744✔
2473
      case PHY_SCAN_CODE_BASE_UID:
334,513,824✔
2474
        code = tlvDecodeU64(pTlv, &pNode->uid);
334,513,824✔
2475
        break;
334,448,211✔
2476
      case PHY_SCAN_CODE_BASE_SUID:
334,509,469✔
2477
        code = tlvDecodeU64(pTlv, &pNode->suid);
334,509,469✔
2478
        break;
334,510,936✔
2479
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
334,510,015✔
2480
        code = tlvDecodeI8(pTlv, &pNode->tableType);
334,510,015✔
2481
        break;
334,507,915✔
2482
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
334,513,236✔
2483
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
334,513,236✔
2484
        break;
334,499,289✔
2485
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
334,514,959✔
2486
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
334,514,959✔
2487
        break;
334,502,651✔
2488
      case PHY_SCAN_CODE_BASE_VIRTUAL_STABLE_SCAN:
334,512,570✔
2489
        code = tlvDecodeBool(pTlv, &pNode->virtualStableScan);
334,512,570✔
2490
      default:
334,509,505✔
2491
        break;
334,509,505✔
2492
    }
2493
  }
2494

2495
  return code;
334,807,464✔
2496
}
2497

2498
enum {
2499
  PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN = 1,
2500
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS,
2501
  PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT,
2502
  PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS,
2503
  PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS,
2504
  PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS,
2505
  PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE,
2506
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED,
2507
  PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE,
2508
};
2509

2510
static int32_t physiVirtualTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,825,411✔
2511
  const SVirtualScanPhysiNode* pNode = (const SVirtualScanPhysiNode *)pObj;
4,825,411✔
2512

2513
  int32_t code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
4,825,411✔
2514

2515
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2516
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS, nodeListToMsg, pNode->pGroupTags);
4,825,411✔
2517
  }
2518

2519
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2520
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT, pNode->groupSort);
4,825,411✔
2521
  }
2522

2523
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2524
    code = tlvEncodeBool(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS, pNode->scanAllCols);
4,825,411✔
2525
  }
2526

2527
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2528
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
4,825,411✔
2529
  }
2530

2531
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2532
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
4,825,411✔
2533
  }
2534

2535
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2536
    code = tlvEncodeObj(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
4,825,411✔
2537
  }
2538

2539
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2540
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED, pNode->igExpired);
4,825,411✔
2541
  }
2542

2543
  if (TSDB_CODE_SUCCESS == code) {
4,825,411✔
2544
    code = tlvEncodeI8(pEncoder, PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE, pNode->igCheckUpdate);
4,825,411✔
2545
  }
2546

2547
  return code;
4,825,411✔
2548
}
2549

2550
static int32_t msgToPhysiVirtualTableScanNode(STlvDecoder* pDecoder, void* pObj) {
4,366,915✔
2551
  SVirtualScanPhysiNode* pNode = (SVirtualScanPhysiNode*)pObj;
4,366,915✔
2552

2553
  int32_t code = TSDB_CODE_SUCCESS;
4,366,915✔
2554
  STlv*   pTlv = NULL;
4,366,915✔
2555
  tlvForEach(pDecoder, pTlv, code) {
30,564,365✔
2556
    switch (pTlv->type) {
26,197,450✔
2557
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SCAN:
4,366,915✔
2558
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
4,366,915✔
2559
        break;
4,366,915✔
2560
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUPTAGS:
×
2561
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
×
2562
        break;
×
2563
      case PHY_VIRTUAL_TABLE_SCAN_CODE_GROUP_SORT:
4,366,915✔
2564
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
4,366,915✔
2565
        break;
4,366,915✔
2566
      case PHY_VIRTUAL_TABLE_SCAN_CODE_ONLY_TS:
4,366,915✔
2567
        code = tlvDecodeBool(pTlv, &pNode->scanAllCols);
4,366,915✔
2568
        break;
4,366,915✔
2569
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TARGETS:
4,362,875✔
2570
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
4,362,875✔
2571
        break;
4,362,875✔
2572
      case PHY_VIRTUAL_TABLE_SCAN_CODE_TAGS:
×
2573
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2574
        break;
×
2575
      case PHY_VIRTUAL_TABLE_SCAN_CODE_SUBTABLE:
×
2576
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2577
        break;
×
2578
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_EXPIRED:
4,366,915✔
2579
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
4,366,915✔
2580
        break;
4,366,915✔
2581
      case PHY_VIRTUAL_TABLE_SCAN_CODE_IGNORE_CHECK_UPDATE:
4,366,915✔
2582
        code = tlvDecodeI8(pTlv, &pNode->igCheckUpdate);
4,366,915✔
2583
        break;
4,366,915✔
2584
      default:
×
2585
        break;
×
2586
    }
2587
  }
2588

2589
  return code;
4,366,915✔
2590
}
2591

2592
enum {
2593
  PHY_TAG_SCAN_CODE_SCAN = 1,
2594
  PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
2595
};
2596

2597
static int32_t physiTagScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
15,634,292✔
2598
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
15,634,292✔
2599

2600
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
15,634,292✔
2601

2602
  if (TSDB_CODE_SUCCESS == code) {
15,684,965✔
2603
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
15,684,977✔
2604
  }
2605
  return code;
15,687,198✔
2606
}
2607

2608
static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
8,811,759✔
2609
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
8,811,759✔
2610

2611
  int32_t code = TSDB_CODE_SUCCESS;
8,811,759✔
2612
  STlv*   pTlv = NULL;
8,811,759✔
2613
  tlvForEach(pDecoder, pTlv, code) {
26,441,186✔
2614
    switch (pTlv->type) {
17,628,777✔
2615
      case PHY_TAG_SCAN_CODE_SCAN:
8,812,637✔
2616
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
8,812,637✔
2617
        break;
8,814,806✔
2618
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
8,816,140✔
2619
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
8,816,140✔
2620
        break;
8,814,195✔
2621
      default:
×
2622
        break;
×
2623
    }
2624
  }
2625

2626
  return code;
8,812,047✔
2627
}
2628

2629
enum {
2630
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2631
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2632
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2633
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2634
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2635
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2636
};
2637

2638
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,091,987✔
2639
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
1,091,987✔
2640

2641
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,091,987✔
2642
  if (TSDB_CODE_SUCCESS == code) {
1,096,214✔
2643
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
1,096,214✔
2644
  }
2645
  if (TSDB_CODE_SUCCESS == code) {
1,091,060✔
2646
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
1,091,060✔
2647
  }
2648
  if (TSDB_CODE_SUCCESS == code) {
1,096,019✔
2649
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
1,096,019✔
2650
  }
2651
  if (TSDB_CODE_SUCCESS == code) {
1,095,734✔
2652
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
1,095,734✔
2653
  }
2654
  if (TSDB_CODE_SUCCESS == code) {
1,095,797✔
2655
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
1,095,797✔
2656
  }
2657

2658
  return code;
1,094,177✔
2659
}
2660

2661
static int32_t msgToPhysiLastRowScanNode(STlvDecoder* pDecoder, void* pObj) {
1,091,141✔
2662
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
1,091,141✔
2663

2664
  int32_t code = TSDB_CODE_SUCCESS;
1,091,141✔
2665
  STlv*   pTlv = NULL;
1,091,141✔
2666
  tlvForEach(pDecoder, pTlv, code) {
5,582,970✔
2667
    switch (pTlv->type) {
4,493,005✔
2668
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
1,091,141✔
2669
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
1,091,141✔
2670
        break;
1,090,791✔
2671
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
161,014✔
2672
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
161,014✔
2673
        break;
161,014✔
2674
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
1,090,791✔
2675
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
1,090,791✔
2676
        break;
1,090,791✔
2677
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
1,091,617✔
2678
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
1,091,617✔
2679
        break;
1,091,631✔
2680
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
1,057,112✔
2681
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
1,057,112✔
2682
        break;
1,057,112✔
2683
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
1,330✔
2684
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
1,330✔
2685
        break;
×
2686

2687
      default:
×
2688
        break;
×
2689
    }
2690
  }
2691

2692
  return code;
1,092,123✔
2693
}
2694

2695
enum {
2696
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2697
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2698
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2699
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2700
  PHY_TABLE_SCAN_CODE_TAGS,
2701
  PHY_TABLE_SCAN_CODE_SUBTABLE,
2702
  PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR,
2703
  PHY_TABLE_SCAN_CODE_EXT_SCAN_RANGE,
2704
  PHY_TABLE_SCAN_CODE_EXT_TIME_RANGE_EXPR,
2705
  PHY_TABLE_SCAN_CODE_PRIM_COND_EXPR,
2706
};
2707

2708
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
403,800,032✔
2709
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
403,800,032✔
2710

2711
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
403,800,032✔
2712
  if (TSDB_CODE_SUCCESS == code) {
404,249,960✔
2713
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
404,275,081✔
2714
  }
2715
  if (TSDB_CODE_SUCCESS == code) {
404,406,609✔
2716
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
404,445,476✔
2717
  }
2718
  if (TSDB_CODE_SUCCESS == code) {
404,356,479✔
2719
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
404,395,698✔
2720
  }
2721
  if (TSDB_CODE_SUCCESS == code) {
404,436,566✔
2722
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
404,379,156✔
2723
  }
2724
  if (TSDB_CODE_SUCCESS == code) {
402,899,633✔
2725
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
402,850,324✔
2726
  }
2727
  if (TSDB_CODE_SUCCESS == code) {
404,445,934✔
2728
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
404,401,027✔
2729
  }
2730
  if (TSDB_CODE_SUCCESS == code) {
404,516,558✔
2731
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
404,471,805✔
2732
  }
2733
  if (TSDB_CODE_SUCCESS == code) {
404,504,984✔
2734
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
404,370,516✔
2735
  }
2736
  if (TSDB_CODE_SUCCESS == code) {
404,603,248✔
2737
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
404,471,876✔
2738
  }
2739
  if (TSDB_CODE_SUCCESS == code) {
404,632,095✔
2740
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
404,501,959✔
2741
  }
2742
  if (TSDB_CODE_SUCCESS == code) {
404,645,389✔
2743
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
404,516,131✔
2744
  }
2745
  if (TSDB_CODE_SUCCESS == code) {
404,710,926✔
2746
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
404,447,246✔
2747
  }
2748
  if (TSDB_CODE_SUCCESS == code) {
404,767,732✔
2749
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
404,519,336✔
2750
  }
2751
  if (TSDB_CODE_SUCCESS == code) {
404,749,054✔
2752
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
404,504,404✔
2753
  }
2754
  if (TSDB_CODE_SUCCESS == code) {
404,670,888✔
2755
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
404,427,577✔
2756
  }
2757
  if (TSDB_CODE_SUCCESS == code) {
404,716,557✔
2758
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
404,372,757✔
2759
  }
2760
  if (TSDB_CODE_SUCCESS == code) {
404,761,656✔
2761
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
404,434,002✔
2762
  }
2763
  if (TSDB_CODE_SUCCESS == code) {
404,819,074✔
2764
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
404,493,002✔
2765
  }
2766
  if (TSDB_CODE_SUCCESS == code) {
404,810,683✔
2767
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
404,496,940✔
2768
  }
2769
  if (TSDB_CODE_SUCCESS == code) {
404,851,132✔
2770
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
404,418,366✔
2771
  }
2772
  return code;
404,512,376✔
2773
}
2774

2775
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
403,868,957✔
2776
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
403,868,957✔
2777

2778
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
403,868,957✔
2779
  if (TSDB_CODE_SUCCESS == code) {
404,611,863✔
2780
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
404,627,891✔
2781
  }
2782
  if (TSDB_CODE_SUCCESS == code) {
403,858,102✔
2783
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_EXT_SCAN_RANGE, timeWindowToMsg, pNode->pExtScanRange);
404,040,196✔
2784
  }
2785
  if (TSDB_CODE_SUCCESS == code) {
404,474,242✔
2786
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
404,396,315✔
2787
  }
2788
  if (TSDB_CODE_SUCCESS == code) {
403,814,128✔
2789
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
403,751,659✔
2790
  }
2791
  if (TSDB_CODE_SUCCESS == code) {
403,779,241✔
2792
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
403,722,236✔
2793
  }
2794
  if (TSDB_CODE_SUCCESS == code) {
403,662,262✔
2795
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
403,441,236✔
2796
  }
2797
  if (TSDB_CODE_SUCCESS == code) {
403,189,886✔
2798
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
403,051,752✔
2799
  }
2800
  if (TSDB_CODE_SUCCESS == code) {
403,479,244✔
2801
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_EXT_TIME_RANGE_EXPR, nodeToMsg, pNode->pExtTimeRange);
403,350,727✔
2802
  }
2803
  if (TSDB_CODE_SUCCESS == code) {
403,260,893✔
2804
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_PRIM_COND_EXPR, nodeToMsg, pNode->pPrimaryCond);
403,140,493✔
2805
  }
2806

2807
  return code;
403,178,972✔
2808
}
2809

2810
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
294,648,157✔
2811
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
294,648,157✔
2812

2813
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
294,648,157✔
2814
  if (TSDB_CODE_SUCCESS == code) {
294,742,192✔
2815
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
294,742,609✔
2816
  }
2817
  if (TSDB_CODE_SUCCESS == code) {
294,651,112✔
2818
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
294,651,112✔
2819
  }
2820
  if (TSDB_CODE_SUCCESS == code) {
294,742,534✔
2821
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
294,742,534✔
2822
  }
2823
  if (TSDB_CODE_SUCCESS == code) {
294,658,257✔
2824
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
294,658,257✔
2825
  }
2826
  if (TSDB_CODE_SUCCESS == code) {
294,634,205✔
2827
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
294,634,205✔
2828
  }
2829
  if (TSDB_CODE_SUCCESS == code) {
294,641,953✔
2830
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
294,641,953✔
2831
  }
2832
  if (TSDB_CODE_SUCCESS == code) {
294,731,855✔
2833
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
294,731,855✔
2834
  }
2835
  if (TSDB_CODE_SUCCESS == code) {
294,659,232✔
2836
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
294,659,232✔
2837
  }
2838
  if (TSDB_CODE_SUCCESS == code) {
294,728,813✔
2839
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
294,728,813✔
2840
  }
2841
  if (TSDB_CODE_SUCCESS == code) {
294,646,284✔
2842
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
294,646,284✔
2843
  }
2844
  if (TSDB_CODE_SUCCESS == code) {
294,738,361✔
2845
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
294,738,361✔
2846
  }
2847
  if (TSDB_CODE_SUCCESS == code) {
294,648,725✔
2848
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
294,648,725✔
2849
  }
2850
  if (TSDB_CODE_SUCCESS == code) {
294,730,856✔
2851
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
294,730,856✔
2852
  }
2853
  if (TSDB_CODE_SUCCESS == code) {
294,655,616✔
2854
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
294,655,616✔
2855
  }
2856
  if (TSDB_CODE_SUCCESS == code) {
294,737,103✔
2857
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
294,737,103✔
2858
  }
2859
  if (TSDB_CODE_SUCCESS == code) {
294,644,974✔
2860
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
294,644,974✔
2861
  }
2862
  if (TSDB_CODE_SUCCESS == code) {
294,737,296✔
2863
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
294,737,296✔
2864
  }
2865
  if (TSDB_CODE_SUCCESS == code) {
294,644,202✔
2866
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
294,644,202✔
2867
  }
2868
  if (TSDB_CODE_SUCCESS == code) {
294,745,823✔
2869
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
294,745,823✔
2870
  }
2871
  if (TSDB_CODE_SUCCESS == code) {
294,650,403✔
2872
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
294,650,403✔
2873
  }
2874
  return code;
294,744,583✔
2875
}
2876

2877
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
294,651,426✔
2878
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
294,651,426✔
2879

2880
  int32_t code = TSDB_CODE_SUCCESS;
294,651,426✔
2881
  STlv*   pTlv = NULL;
294,651,426✔
2882
  tlvForEach(pDecoder, pTlv, code) {
930,882,680✔
2883
    switch (pTlv->type) {
636,252,178✔
2884
      case PHY_TABLE_SCAN_CODE_SCAN:
294,589,567✔
2885
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
294,589,567✔
2886
        break;
294,707,604✔
2887
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
294,750,303✔
2888
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
294,750,303✔
2889
        break;
294,737,367✔
2890
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2891
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2892
        break;
×
2893
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
41,803,287✔
2894
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
41,803,287✔
2895
        break;
41,801,125✔
2896
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2897
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2898
        break;
×
2899
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2900
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2901
        break;
×
2902
      case PHY_TABLE_SCAN_CODE_TIME_RANGE_EXPR:
×
2903
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
2904
        break;
×
2905
      case PHY_TABLE_SCAN_CODE_EXT_SCAN_RANGE:
4,237,025✔
2906
        pNode->pExtScanRange = taosMemoryMalloc(sizeof(*pNode->pExtScanRange));
4,237,025✔
2907
        if (NULL == pNode->pExtScanRange) {
4,237,494✔
2908
          code = terrno;
×
2909
          break;
×
2910
        }
2911
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, pNode->pExtScanRange);
4,237,025✔
2912
        break;
4,238,656✔
2913
      case PHY_TABLE_SCAN_CODE_EXT_TIME_RANGE_EXPR:
×
2914
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExtTimeRange);
×
2915
        break;
×
2916
      case PHY_TABLE_SCAN_CODE_PRIM_COND_EXPR:
861,003✔
2917
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pPrimaryCond);
861,003✔
2918
        break;
709,572✔
2919
      default:
×
2920
        break;
×
2921
    }
2922
  }
2923

2924
  return code;
294,789,145✔
2925
}
2926

2927
enum {
2928
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2929
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2930
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2931
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2932
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO,
2933
  PHY_SYSTABLE_SCAN_CODE_PRIV_INFO,
2934
};
2935

2936
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
42,627,601✔
2937
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
42,627,601✔
2938

2939
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
42,627,601✔
2940
  if (TSDB_CODE_SUCCESS == code) {
42,693,784✔
2941
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
42,695,874✔
2942
  }
2943
  if (TSDB_CODE_SUCCESS == code) {
42,685,082✔
2944
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
42,685,039✔
2945
  }
2946
  if (TSDB_CODE_SUCCESS == code) {
42,694,580✔
2947
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
42,694,580✔
2948
  }
2949
  if (TSDB_CODE_SUCCESS == code) {
42,691,440✔
2950
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
42,691,440✔
2951
  }
2952
  if (TSDB_CODE_SUCCESS == code) {
42,696,922✔
2953
    code = tlvEncodeU16(pEncoder, PHY_SYSTABLE_SCAN_CODE_PRIV_INFO, pNode->privInfo);
42,696,922✔
2954
  }
2955

2956
  return code;
42,698,547✔
2957
}
2958

2959
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
25,471,621✔
2960
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
25,471,621✔
2961

2962
  int32_t code = TSDB_CODE_SUCCESS;
25,471,621✔
2963
  STlv*   pTlv = NULL;
25,471,621✔
2964
  tlvForEach(pDecoder, pTlv, code) {
178,331,783✔
2965
    switch (pTlv->type) {
152,866,091✔
2966
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
25,469,603✔
2967
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
25,469,603✔
2968
        break;
25,477,008✔
2969
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
25,478,005✔
2970
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
25,478,005✔
2971
        break;
25,476,576✔
2972
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
25,478,592✔
2973
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
25,478,592✔
2974
        break;
25,472,327✔
2975
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
25,478,592✔
2976
        code = tlvDecodeI32(pTlv, &pNode->accountId);
25,478,592✔
2977
        break;
25,477,967✔
2978
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
25,477,824✔
2979
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
25,477,824✔
2980
        break;
25,477,332✔
2981
      case PHY_SYSTABLE_SCAN_CODE_PRIV_INFO:
25,478,592✔
2982
        code = tlvDecodeU16(pTlv, &pNode->privInfo);
25,478,592✔
2983
      default:
25,477,303✔
2984
        break;
25,477,303✔
2985
    }
2986
  }
2987

2988
  return code;
25,480,438✔
2989
}
2990

2991
enum {
2992
  PHY_PROJECT_CODE_BASE_NODE = 1,
2993
  PHY_PROJECT_CODE_PROJECTIONS,
2994
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2995
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2996
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2997
};
2998

2999
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
222,777,297✔
3000
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
222,777,297✔
3001

3002
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
222,777,297✔
3003
  if (TSDB_CODE_SUCCESS == code) {
222,988,045✔
3004
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
222,990,537✔
3005
  }
3006
  if (TSDB_CODE_SUCCESS == code) {
222,987,531✔
3007
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
222,960,499✔
3008
  }
3009
  if (TSDB_CODE_SUCCESS == code) {
222,997,312✔
3010
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
222,974,927✔
3011
  }
3012
  if (TSDB_CODE_SUCCESS == code) {
223,012,943✔
3013
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
222,991,234✔
3014
  }
3015

3016
  return code;
222,988,112✔
3017
}
3018

3019
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
158,638,643✔
3020
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
158,638,643✔
3021

3022
  int32_t code = TSDB_CODE_SUCCESS;
158,638,643✔
3023
  STlv*   pTlv = NULL;
158,638,643✔
3024
  tlvForEach(pDecoder, pTlv, code) {
951,985,796✔
3025
    switch (pTlv->type) {
793,343,219✔
3026
      case PHY_PROJECT_CODE_BASE_NODE:
158,633,231✔
3027
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
158,633,231✔
3028
        break;
158,649,183✔
3029
      case PHY_PROJECT_CODE_PROJECTIONS:
158,667,654✔
3030
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
158,667,654✔
3031
        break;
158,671,321✔
3032
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
158,671,795✔
3033
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
158,671,795✔
3034
        break;
158,671,185✔
3035
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
158,672,016✔
3036
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
158,672,016✔
3037
        break;
158,672,016✔
3038
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
158,696,109✔
3039
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
158,696,109✔
3040
        break;
158,671,602✔
3041
      default:
×
3042
        break;
×
3043
    }
3044
  }
3045

3046
  return code;
158,691,311✔
3047
}
3048

3049
enum {
3050
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
3051
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
3052
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
3053
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
3054
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
3055
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
3056
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
3057
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
3058
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
3059
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
3060
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
3061
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
3062
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
3063
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
3064
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
3065
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
3066
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
3067
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
3068
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
3069
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
3070
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
3071
};
3072

3073
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
17,311,561✔
3074
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
17,311,561✔
3075

3076
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
17,311,561✔
3077
  if (TSDB_CODE_SUCCESS == code) {
17,311,733✔
3078
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
17,311,733✔
3079
  }
3080
  if (TSDB_CODE_SUCCESS == code) {
17,311,733✔
3081
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
17,311,733✔
3082
  }
3083
  if (TSDB_CODE_SUCCESS == code) {
17,311,733✔
3084
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
17,311,733✔
3085
  }
3086
  if (TSDB_CODE_SUCCESS == code) {
17,311,178✔
3087
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
17,311,006✔
3088
  }
3089
  if (TSDB_CODE_SUCCESS == code) {
17,311,905✔
3090
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
17,311,733✔
3091
  }  
3092
  if (TSDB_CODE_SUCCESS == code) {
17,311,905✔
3093
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
17,311,733✔
3094
  }
3095
  if (TSDB_CODE_SUCCESS == code) {
17,311,350✔
3096
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
17,311,178✔
3097
  }  
3098
  if (TSDB_CODE_SUCCESS == code) {
17,311,905✔
3099
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
17,311,647✔
3100
  }  
3101
  if (TSDB_CODE_SUCCESS == code) {
17,311,905✔
3102
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
17,311,647✔
3103
  }  
3104
  if (TSDB_CODE_SUCCESS == code) {
17,311,991✔
3105
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
17,311,733✔
3106
  }
3107
  if (TSDB_CODE_SUCCESS == code) {
17,311,991✔
3108
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
17,311,733✔
3109
  }
3110
  if (TSDB_CODE_SUCCESS == code) {
17,310,855✔
3111
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
17,310,597✔
3112
  }
3113
  if (TSDB_CODE_SUCCESS == code) {
17,310,855✔
3114
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
17,310,597✔
3115
  }
3116
  if (TSDB_CODE_SUCCESS == code) {
17,310,855✔
3117
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
17,310,597✔
3118
  }
3119
  if (TSDB_CODE_SUCCESS == code) {
17,311,991✔
3120
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
17,311,733✔
3121
  }
3122
  if (TSDB_CODE_SUCCESS == code) {
17,311,991✔
3123
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
17,311,733✔
3124
  }
3125
  if (TSDB_CODE_SUCCESS == code) {
17,311,905✔
3126
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
17,311,647✔
3127
  }
3128
  if (TSDB_CODE_SUCCESS == code) {
17,311,991✔
3129
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
17,311,733✔
3130
  }
3131
  if (TSDB_CODE_SUCCESS == code) {
17,311,991✔
3132
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
17,311,733✔
3133
  }
3134
  if (TSDB_CODE_SUCCESS == code) {
17,311,991✔
3135
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
17,311,733✔
3136
  }
3137
  
3138
  return code;
17,311,733✔
3139
}
3140

3141
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
14,352,065✔
3142
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
14,352,065✔
3143

3144
  int32_t code = TSDB_CODE_SUCCESS;
14,352,065✔
3145
  STlv*   pTlv = NULL;
14,352,065✔
3146
  tlvForEach(pDecoder, pTlv, code) {
211,197,060✔
3147
    switch (pTlv->type) {
196,844,995✔
3148
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
14,352,065✔
3149
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
14,352,065✔
3150
        break;
14,352,065✔
3151
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
14,352,065✔
3152
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
14,352,065✔
3153
        break;
14,352,065✔
3154
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
14,352,065✔
3155
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
14,352,065✔
3156
        break;
14,352,065✔
3157
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
368,936✔
3158
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
368,936✔
3159
        break;
368,936✔
3160
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
181,105✔
3161
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
181,105✔
3162
        break;
181,105✔
3163
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
14,352,065✔
3164
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
14,352,065✔
3165
        break;
14,352,065✔
3166
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
349,333✔
3167
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
349,333✔
3168
        break;
349,333✔
3169
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
309,058✔
3170
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
309,058✔
3171
        break;
309,058✔
3172
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
14,352,065✔
3173
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
14,352,065✔
3174
        break;
14,352,065✔
3175
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
14,352,065✔
3176
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
14,352,065✔
3177
        break;
14,352,065✔
3178
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
114,518✔
3179
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
114,518✔
3180
        break;
114,518✔
3181
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
114,518✔
3182
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
114,518✔
3183
        break;
114,518✔
3184
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
4,379,562✔
3185
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
4,379,562✔
3186
        break;
4,379,562✔
3187
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
4,451,120✔
3188
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
4,451,120✔
3189
        break;
4,451,120✔
3190
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
14,352,065✔
3191
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
14,352,065✔
3192
        break;
14,352,065✔
3193
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
14,352,065✔
3194
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
14,352,065✔
3195
        break;
14,352,065✔
3196
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
14,352,065✔
3197
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
14,352,065✔
3198
        break;
14,352,065✔
3199
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
14,352,065✔
3200
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
14,352,065✔
3201
        break;
14,352,065✔
3202
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
14,352,065✔
3203
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
14,352,065✔
3204
        break;
14,352,065✔
3205
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
14,352,065✔
3206
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
14,352,065✔
3207
        break;
14,352,065✔
3208
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
14,350,955✔
3209
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
14,350,955✔
3210
        break;
14,352,065✔
3211
      default:
×
3212
        break;
×
3213
    }
3214
  }
3215

3216
  return code;
14,354,314✔
3217
}
3218

3219
enum {
3220
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
3221
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
3222
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
3223
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
3224
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
3225
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
3226
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
3227
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
3228
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
3229
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
3230
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
3231
  PHY_HASH_JOIN_CODE_TARGETS,
3232
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
3233
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
3234
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
3235
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
3236
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
3237
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
3238
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
3239
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
3240

3241
};
3242

3243
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,353,578✔
3244
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
1,353,578✔
3245

3246
  int32_t code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,353,578✔
3247
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3248
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_TYPE, pNode->joinType);
1,353,578✔
3249
  }
3250
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3251
    code = tlvEncodeEnum(pEncoder, PHY_HASH_JOIN_CODE_JOIN_STYPE, pNode->subType);
1,353,578✔
3252
  }
3253
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3254
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN, nodeListToMsg, pNode->pOnLeft);
1,353,578✔
3255
  }
3256
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3257
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN, nodeListToMsg, pNode->pOnRight);
1,353,578✔
3258
  }  
3259
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3260
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
1,353,578✔
3261
  }
3262
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3263
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
1,353,578✔
3264
  }
3265
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3266
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID, pNode->leftPrimSlotId);
1,353,578✔
3267
  }
3268
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3269
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID, pNode->rightPrimSlotId);
1,353,578✔
3270
  }
3271
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3272
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET, pNode->timeRangeTarget);
1,353,578✔
3273
  }
3274
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3275
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
1,353,578✔
3276
  }
3277
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3278
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
1,353,578✔
3279
  }
3280
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3281
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
1,353,578✔
3282
  }
3283
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3284
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
1,353,578✔
3285
  }
3286
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3287
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
1,353,578✔
3288
  }
3289
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3290
    code = tlvEncodeI32(pEncoder, PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
1,353,578✔
3291
  }
3292
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3293
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_LEFT_ON_COND, nodeToMsg, pNode->pLeftOnCond);
1,353,578✔
3294
  }
3295
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3296
    code = tlvEncodeObj(pEncoder, PHY_HASH_JOIN_CODE_RIGHT_ON_COND, nodeToMsg, pNode->pRightOnCond);
1,353,578✔
3297
  }
3298
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3299
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY, pNode->timeRange.skey);
1,353,578✔
3300
  }
3301
  if (TSDB_CODE_SUCCESS == code) {
1,353,578✔
3302
    code = tlvEncodeI64(pEncoder, PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY, pNode->timeRange.ekey);
1,353,578✔
3303
  }
3304

3305
  return code;
1,353,578✔
3306
}
3307

3308

3309
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
1,353,468✔
3310
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
1,353,468✔
3311

3312
  int32_t code = TSDB_CODE_SUCCESS;
1,353,468✔
3313
  STlv*   pTlv = NULL;
1,353,468✔
3314
  tlvForEach(pDecoder, pTlv, code) {
21,655,488✔
3315
    switch (pTlv->type) {
20,302,020✔
3316
      case PHY_HASH_JOIN_CODE_BASE_NODE:
1,353,468✔
3317
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,353,468✔
3318
        break;
1,353,468✔
3319
      case PHY_HASH_JOIN_CODE_JOIN_TYPE:
1,353,468✔
3320
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
1,353,468✔
3321
        break;
1,353,468✔
3322
      case PHY_HASH_JOIN_CODE_JOIN_STYPE:
1,353,468✔
3323
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
1,353,468✔
3324
        break;
1,353,468✔
3325
      case PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN:
1,353,468✔
3326
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnLeft);
1,353,468✔
3327
        break;
1,353,468✔
3328
      case PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN:
1,353,468✔
3329
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pOnRight);
1,353,468✔
3330
        break;
1,353,468✔
3331
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR:
×
3332
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
×
3333
        break;
×
3334
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR:
×
3335
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
×
3336
        break;
×
3337
      case PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID:
1,353,468✔
3338
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
1,353,468✔
3339
        break;
1,353,468✔
3340
      case PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID:
1,353,468✔
3341
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
1,353,468✔
3342
        break;
1,353,468✔
3343
      case PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET:
1,353,468✔
3344
        code = tlvDecodeI32(pTlv, &pNode->timeRangeTarget);
1,353,468✔
3345
        break;
1,353,468✔
3346
      case PHY_HASH_JOIN_CODE_ON_CONDITIONS:
×
3347
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
×
3348
        break;
×
3349
      case PHY_HASH_JOIN_CODE_TARGETS:
1,353,468✔
3350
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
1,353,468✔
3351
        break;
1,353,468✔
3352
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0:
1,353,468✔
3353
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
1,353,468✔
3354
        break;
1,353,468✔
3355
      case PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1:
1,353,468✔
3356
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
1,353,468✔
3357
        break;
1,353,468✔
3358
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0:
1,353,468✔
3359
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
1,353,468✔
3360
        break;
1,353,468✔
3361
      case PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1:
1,353,468✔
3362
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
1,353,468✔
3363
        break;
1,353,468✔
3364
      case PHY_HASH_JOIN_CODE_LEFT_ON_COND:
×
3365
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeftOnCond);
×
3366
        break;
×
3367
      case PHY_HASH_JOIN_CODE_RIGHT_ON_COND:
×
3368
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRightOnCond);
×
3369
        break;
×
3370
      case PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY:
1,353,468✔
3371
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
1,353,468✔
3372
        break;
1,353,468✔
3373
      case PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY:
1,353,468✔
3374
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
1,353,468✔
3375
        break;
1,353,468✔
3376
      default:
×
3377
        break;
×
3378
    }
3379
  }
3380

3381
  return code;
1,353,468✔
3382
}
3383

3384

3385
enum {
3386
  PHY_AGG_CODE_BASE_NODE = 1,
3387
  PHY_AGG_CODE_EXPR,
3388
  PHY_AGG_CODE_GROUP_KEYS,
3389
  PHY_AGG_CODE_AGG_FUNCS,
3390
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
3391
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
3392
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
3393
};
3394

3395
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
174,487,837✔
3396
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
174,487,837✔
3397

3398
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
174,487,837✔
3399
  if (TSDB_CODE_SUCCESS == code) {
174,726,388✔
3400
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
174,731,179✔
3401
  }
3402
  if (TSDB_CODE_SUCCESS == code) {
174,657,283✔
3403
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
174,657,465✔
3404
  }
3405
  if (TSDB_CODE_SUCCESS == code) {
174,479,672✔
3406
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
174,479,868✔
3407
  }
3408
  if (TSDB_CODE_SUCCESS == code) {
174,733,016✔
3409
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
174,726,044✔
3410
  }
3411
  if (TSDB_CODE_SUCCESS == code) {
174,743,799✔
3412
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
174,737,279✔
3413
  }
3414
  if (TSDB_CODE_SUCCESS == code) {
174,750,997✔
3415
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
174,744,477✔
3416
  }
3417

3418
  return code;
174,738,024✔
3419
}
3420

3421
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
136,355,127✔
3422
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
136,355,127✔
3423

3424
  int32_t code = TSDB_CODE_SUCCESS;
136,355,127✔
3425
  STlv*   pTlv = NULL;
136,355,127✔
3426
  tlvForEach(pDecoder, pTlv, code) {
860,161,006✔
3427
    switch (pTlv->type) {
723,793,870✔
3428
      case PHY_AGG_CODE_BASE_NODE:
136,331,296✔
3429
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
136,331,296✔
3430
        break;
136,376,705✔
3431
      case PHY_AGG_CODE_EXPR:
37,492,928✔
3432
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
37,492,928✔
3433
        break;
37,493,122✔
3434
      case PHY_AGG_CODE_GROUP_KEYS:
35,210,204✔
3435
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
35,210,204✔
3436
        break;
35,210,197✔
3437
      case PHY_AGG_CODE_AGG_FUNCS:
105,548,175✔
3438
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
105,548,175✔
3439
        break;
105,569,573✔
3440
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
136,380,692✔
3441
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
136,380,692✔
3442
        break;
136,382,427✔
3443
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
136,381,593✔
3444
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
136,381,593✔
3445
        break;
136,381,950✔
3446
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
136,445,357✔
3447
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
136,445,357✔
3448
        break;
136,380,817✔
3449
      default:
×
3450
        break;
×
3451
    }
3452
  }
3453

3454
  return code;
136,393,907✔
3455
}
3456

3457
enum {
3458
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
3459
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
3460
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
3461
  PHY_EXCHANGE_CODE_CHILDREN_VGIDS,
3462
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
3463
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
3464
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA,
3465
  PHY_EXCHANGE_CODE_DYN_TBNAME,
3466
  PHY_EXCHANGE_CODE_SINGLE_SOURCE,
3467
};
3468

3469
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
153,535,336✔
3470
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
153,535,336✔
3471

3472
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
153,535,336✔
3473
  if (TSDB_CODE_SUCCESS == code) {
153,535,444✔
3474
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
153,535,444✔
3475
  }
3476
  if (TSDB_CODE_SUCCESS == code) {
153,535,353✔
3477
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
153,535,439✔
3478
  }
3479
  if (TSDB_CODE_SUCCESS == code && pNode->childrenVgIds) {
153,535,990✔
3480
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_CHILDREN_VGIDS, SArrayToMsg, pNode->childrenVgIds);
153,535,436✔
3481
  }
3482
  if (TSDB_CODE_SUCCESS == code) {
153,535,359✔
3483
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->grpSingleChannel);
153,535,673✔
3484
  }
3485
  if (TSDB_CODE_SUCCESS == code) {
153,534,148✔
3486
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
153,534,537✔
3487
  }
3488
  if (TSDB_CODE_SUCCESS == code) {
153,536,097✔
3489
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
153,536,486✔
3490
  }
3491
  if (TSDB_CODE_SUCCESS == code) {
153,534,029✔
3492
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_DYN_TBNAME, pNode->dynTbname);
153,534,133✔
3493
  }
3494
  if (TSDB_CODE_SUCCESS == code) {
153,535,169✔
3495
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_SOURCE, pNode->singleSrc);
153,535,874✔
3496
  }
3497

3498
  return code;
153,534,095✔
3499
}
3500

3501
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
119,133,381✔
3502
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
119,133,381✔
3503

3504
  int32_t code = TSDB_CODE_SUCCESS;
119,133,381✔
3505
  STlv*   pTlv = NULL;
119,133,381✔
3506
  tlvForEach(pDecoder, pTlv, code) {
1,191,335,578✔
3507
    switch (pTlv->type) {
1,072,191,970✔
3508
      case PHY_EXCHANGE_CODE_BASE_NODE:
119,133,961✔
3509
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
119,133,961✔
3510
        break;
119,132,929✔
3511
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
119,133,509✔
3512
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
119,133,509✔
3513
        break;
119,132,913✔
3514
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
119,133,509✔
3515
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
119,133,509✔
3516
        break;
119,133,509✔
3517
      case PHY_EXCHANGE_CODE_CHILDREN_VGIDS:
119,133,509✔
3518
        code = msgToSArray(pTlv, (void**)&pNode->childrenVgIds);
119,133,509✔
3519
        break;
119,132,913✔
3520
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
119,133,961✔
3521
        code = tlvDecodeBool(pTlv, &pNode->grpSingleChannel);
119,133,961✔
3522
        break;
119,133,961✔
3523
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
119,133,961✔
3524
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
119,133,961✔
3525
        break;
119,133,961✔
3526
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
119,133,509✔
3527
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
119,133,509✔
3528
        break;
119,133,509✔
3529
      case PHY_EXCHANGE_CODE_DYN_TBNAME:
119,133,509✔
3530
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
119,133,509✔
3531
        break;
119,133,961✔
3532
      case PHY_EXCHANGE_CODE_SINGLE_SOURCE:
119,121,673✔
3533
        code = tlvDecodeBool(pTlv, &pNode->singleSrc);
119,121,673✔
3534
        break;
119,133,961✔
3535
      default:
×
3536
        break;
×
3537
    }
3538
  }
3539

3540
  return code;
119,150,891✔
3541
}
3542

3543
enum {
3544
  PHY_MERGE_CODE_BASE_NODE = 1,
3545
  PHY_MERGE_CODE_MERGE_KEYS,
3546
  PHY_MERGE_CODE_TARGETS,
3547
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3548
  PHY_MERGE_CODE_SRC_GROUP_ID,
3549
  PHY_MERGE_CODE_GROUP_SORT,
3550
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3551
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3552
  PHY_MERGE_CODE_TYPE,
3553
};
3554

3555
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
20,349,186✔
3556
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
20,349,186✔
3557

3558
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
20,349,186✔
3559
  if (TSDB_CODE_SUCCESS == code) {
20,349,272✔
3560
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
20,349,272✔
3561
  }
3562
  if (TSDB_CODE_SUCCESS == code) {
20,349,272✔
3563
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
20,349,272✔
3564
  }
3565
  if (TSDB_CODE_SUCCESS == code) {
20,349,197✔
3566
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
20,349,122✔
3567
  }
3568
  if (TSDB_CODE_SUCCESS == code) {
20,349,197✔
3569
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
20,349,122✔
3570
  }
3571
  if (TSDB_CODE_SUCCESS == code) {
20,349,197✔
3572
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
20,349,122✔
3573
  }
3574
  if (TSDB_CODE_SUCCESS == code) {
20,349,197✔
3575
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
20,349,197✔
3576
  }
3577
  if (TSDB_CODE_SUCCESS == code) {
20,349,122✔
3578
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
20,349,122✔
3579
  }
3580
  if (TSDB_CODE_SUCCESS == code) {
20,349,122✔
3581
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
20,349,122✔
3582
  }
3583

3584
  return code;
20,349,197✔
3585
}
3586

3587
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
15,561,231✔
3588
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
15,561,231✔
3589

3590
  int32_t code = TSDB_CODE_SUCCESS;
15,561,231✔
3591
  STlv*   pTlv = NULL;
15,561,231✔
3592
  tlvForEach(pDecoder, pTlv, code) {
154,895,063✔
3593
    switch (pTlv->type) {
139,334,412✔
3594
      case PHY_MERGE_CODE_BASE_NODE:
15,561,231✔
3595
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
15,561,231✔
3596
        break;
15,561,811✔
3597
      case PHY_MERGE_CODE_MERGE_KEYS:
14,839,924✔
3598
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
14,839,924✔
3599
        break;
14,839,344✔
3600
      case PHY_MERGE_CODE_TARGETS:
15,561,231✔
3601
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
15,561,231✔
3602
        break;
15,561,811✔
3603
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
15,561,811✔
3604
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
15,561,811✔
3605
        break;
15,561,811✔
3606
      case PHY_MERGE_CODE_SRC_GROUP_ID:
15,561,811✔
3607
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
15,561,811✔
3608
        break;
15,561,811✔
3609
      case PHY_MERGE_CODE_GROUP_SORT:
15,561,811✔
3610
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
15,561,811✔
3611
        break;
15,561,811✔
3612
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
15,561,811✔
3613
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
15,561,811✔
3614
        break;
15,561,811✔
3615
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
15,561,811✔
3616
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
15,561,811✔
3617
        break;
15,561,811✔
3618
      case PHY_MERGE_CODE_TYPE:
15,562,971✔
3619
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
15,562,971✔
3620
        break;
15,561,811✔
3621
      default:
×
3622
        break;
×
3623
    }
3624
  }
3625

3626
  return code;
15,562,263✔
3627
}
3628

3629
enum {
3630
  PHY_SORT_CODE_BASE_NODE = 1,
3631
  PHY_SORT_CODE_EXPR,
3632
  PHY_SORT_CODE_SORT_KEYS,
3633
  PHY_SORT_CODE_TARGETS,
3634
  PHY_SORT_CODE_CALC_GROUPID,
3635
  PHY_SORT_CODE_EXCLUDE_PK_COL
3636
};
3637

3638
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
57,684,679✔
3639
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
57,684,679✔
3640

3641
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
57,684,679✔
3642
  if (TSDB_CODE_SUCCESS == code) {
57,729,490✔
3643
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
57,730,399✔
3644
  }
3645
  if (TSDB_CODE_SUCCESS == code) {
57,721,489✔
3646
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
57,722,110✔
3647
  }
3648
  if (TSDB_CODE_SUCCESS == code) {
57,732,318✔
3649
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
57,733,014✔
3650
  }
3651
  if (TSDB_CODE_SUCCESS == code) {
57,732,404✔
3652
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
57,731,373✔
3653
  }
3654
  if (TSDB_CODE_SUCCESS == code) {
57,733,946✔
3655
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
57,733,140✔
3656
  }
3657

3658
  return code;
57,733,325✔
3659
}
3660

3661
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
36,266,971✔
3662
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
36,266,971✔
3663

3664
  int32_t code = TSDB_CODE_SUCCESS;
36,266,971✔
3665
  STlv*   pTlv = NULL;
36,266,971✔
3666
  tlvForEach(pDecoder, pTlv, code) {
218,554,239✔
3667
    switch (pTlv->type) {
182,281,955✔
3668
      case PHY_SORT_CODE_BASE_NODE:
36,266,815✔
3669
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
36,266,815✔
3670
        break;
36,273,126✔
3671
      case PHY_SORT_CODE_EXPR:
910,654✔
3672
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
910,654✔
3673
        break;
910,654✔
3674
      case PHY_SORT_CODE_SORT_KEYS:
36,266,344✔
3675
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
36,266,344✔
3676
        break;
36,273,412✔
3677
      case PHY_SORT_CODE_TARGETS:
36,271,547✔
3678
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
36,271,547✔
3679
        break;
36,275,139✔
3680
      case PHY_SORT_CODE_CALC_GROUPID:
36,275,140✔
3681
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
36,275,140✔
3682
        break;
36,275,140✔
3683
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
36,275,140✔
3684
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
36,275,140✔
3685
      default:
36,275,140✔
3686
        break;
36,275,140✔
3687
    }
3688
  }
3689

3690
  return code;
36,282,805✔
3691
}
3692

3693
enum {
3694
  PHY_WINDOW_CODE_BASE_NODE = 1,
3695
  PHY_WINDOW_CODE_EXPR,
3696
  PHY_WINDOW_CODE_FUNCS,
3697
  PHY_WINDOW_CODE_TS_PK,
3698
  PHY_WINDOW_CODE_TS_END,
3699
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3700
  PHY_WINDOW_CODE_WATERMARK,
3701
  PHY_WINDOW_CODE_DELETE_MARK,
3702
  PHY_WINDOW_CODE_IG_EXPIRED,
3703
  PHY_WINDOW_CODE_INDEF_ROWS_FUNC,
3704
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3705
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3706
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3707
  PHY_WINDOW_CODE_PROJS,
3708
};
3709

3710
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
24,989,060✔
3711
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
24,989,060✔
3712

3713
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
24,989,060✔
3714
  if (TSDB_CODE_SUCCESS == code) {
25,013,746✔
3715
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
25,014,025✔
3716
  }
3717
  if (TSDB_CODE_SUCCESS == code) {
25,006,596✔
3718
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
25,000,788✔
3719
  }
3720
  if (TSDB_CODE_SUCCESS == code) {
25,019,145✔
3721
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
25,013,412✔
3722
  }
3723
  if (TSDB_CODE_SUCCESS == code) {
25,015,674✔
3724
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
25,010,016✔
3725
  }
3726
  if (TSDB_CODE_SUCCESS == code) {
25,016,051✔
3727
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->unusedParam1);
25,010,468✔
3728
  }
3729
  if (TSDB_CODE_SUCCESS == code) {
25,020,729✔
3730
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->unusedParam2);
25,014,136✔
3731
  }
3732
  if (TSDB_CODE_SUCCESS == code) {
25,021,728✔
3733
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->unusedParam3);
25,015,285✔
3734
  }
3735
  if (TSDB_CODE_SUCCESS == code) {
25,021,317✔
3736
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->unusedParam4);
25,014,949✔
3737
  }
3738
  if (TSDB_CODE_SUCCESS == code) {
25,021,636✔
3739
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
25,015,268✔
3740
  }
3741
  if (TSDB_CODE_SUCCESS == code) {
25,022,096✔
3742
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_INDEF_ROWS_FUNC, pNode->indefRowsFunc);
25,013,498✔
3743
  }
3744
  if (TSDB_CODE_SUCCESS == code) {
25,024,192✔
3745
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_PROJS, nodeListToMsg, pNode->pProjs);
25,015,755✔
3746
  }
3747

3748
  return code;
25,010,859✔
3749
}
3750

3751
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
10,590,364✔
3752
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
10,590,364✔
3753

3754
  int32_t code = TSDB_CODE_SUCCESS;
10,590,364✔
3755
  STlv*   pTlv = NULL;
10,590,364✔
3756
  tlvForEach(pDecoder, pTlv, code) {
107,546,545✔
3757
    switch (pTlv->type) {
96,956,935✔
3758
      case PHY_WINDOW_CODE_BASE_NODE:
10,590,136✔
3759
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
10,590,136✔
3760
        break;
10,591,663✔
3761
      case PHY_WINDOW_CODE_EXPR:
1,071,211✔
3762
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
1,071,211✔
3763
        break;
1,071,211✔
3764
      case PHY_WINDOW_CODE_FUNCS:
10,447,087✔
3765
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
10,447,087✔
3766
        break;
10,448,481✔
3767
      case PHY_WINDOW_CODE_TS_PK:
10,592,409✔
3768
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
10,592,409✔
3769
        break;
10,592,247✔
3770
      case PHY_WINDOW_CODE_TS_END:
636,661✔
3771
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
636,661✔
3772
        break;
636,661✔
3773
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
10,592,247✔
3774
        code = tlvDecodeI8(pTlv, &pNode->unusedParam1);
10,592,247✔
3775
        break;
10,592,409✔
3776
      case PHY_WINDOW_CODE_WATERMARK:
10,592,409✔
3777
        code = tlvDecodeI64(pTlv, &pNode->unusedParam2);
10,592,409✔
3778
        break;
10,592,409✔
3779
      case PHY_WINDOW_CODE_DELETE_MARK:
10,592,409✔
3780
        code = tlvDecodeI64(pTlv, &pNode->unusedParam3);
10,592,409✔
3781
        break;
10,591,825✔
3782
      case PHY_WINDOW_CODE_IG_EXPIRED:
10,592,409✔
3783
        code = tlvDecodeI8(pTlv, &pNode->unusedParam4);
10,592,409✔
3784
        break;
10,592,409✔
3785
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
10,592,409✔
3786
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
10,592,409✔
3787
        break;
10,592,409✔
3788
      case PHY_WINDOW_CODE_INDEF_ROWS_FUNC:
10,592,409✔
3789
        code = tlvDecodeI8(pTlv, &pNode->indefRowsFunc);
10,592,409✔
3790
        break;
10,592,409✔
3791
      case PHY_WINDOW_CODE_PROJS:
63,543✔
3792
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjs);
63,543✔
3793
        break;
62,048✔
3794
      default:
×
3795
        break;
×
3796
    }
3797
  }
3798

3799
  return code;
10,598,566✔
3800
}
3801

3802
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS, PHY_INTERVAL_CODE_TIME_RANGE };
3803

3804
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,450,451✔
3805
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
14,450,451✔
3806

3807
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
14,450,451✔
3808
  if (TSDB_CODE_SUCCESS == code) {
14,465,430✔
3809
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
14,452,058✔
3810
  }
3811
  if (TSDB_CODE_SUCCESS == code) {
14,465,207✔
3812
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
14,465,882✔
3813
  }
3814
  if (TSDB_CODE_SUCCESS == code) {
14,467,787✔
3815
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
14,468,537✔
3816
  }
3817
  if (TSDB_CODE_SUCCESS == code) {
14,469,740✔
3818
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
14,466,668✔
3819
  }
3820

3821
  return code;
14,470,038✔
3822
}
3823

3824
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,440,214✔
3825
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
14,440,214✔
3826

3827
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
14,440,214✔
3828
  if (TSDB_CODE_SUCCESS == code) {
14,468,093✔
3829
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
14,469,913✔
3830
  }
3831
  if (TSDB_CODE_SUCCESS == code) {
14,459,416✔
3832
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
14,464,967✔
3833
  }
3834

3835
  return code;
14,470,458✔
3836
}
3837

3838
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
6,274,477✔
3839
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
6,274,477✔
3840

3841
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
6,274,477✔
3842
  if (TSDB_CODE_SUCCESS == code) {
6,274,452✔
3843
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
6,273,868✔
3844
  }
3845
  if (TSDB_CODE_SUCCESS == code) {
6,274,452✔
3846
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
6,274,452✔
3847
  }
3848
  if (TSDB_CODE_SUCCESS == code) {
6,274,452✔
3849
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
6,274,452✔
3850
  }
3851
  if (TSDB_CODE_SUCCESS == code) {
6,274,452✔
3852
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
6,274,452✔
3853
  }
3854

3855
  return code;
6,274,452✔
3856
}
3857

3858
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
6,273,462✔
3859
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
6,273,462✔
3860

3861
  int32_t code = TSDB_CODE_SUCCESS;
6,273,462✔
3862
  STlv*   pTlv = NULL;
6,273,462✔
3863
  tlvForEach(pDecoder, pTlv, code) {
25,098,223✔
3864
    switch (pTlv->type) {
18,825,183✔
3865
      case PHY_INTERVAL_CODE_WINDOW:
6,272,829✔
3866
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
6,272,829✔
3867
        break;
6,274,477✔
3868
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
6,275,061✔
3869
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
6,275,061✔
3870
        break;
6,274,452✔
3871
      case PHY_INTERVAL_CODE_TIME_RANGE:
6,275,061✔
3872
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
6,275,061✔
3873
      default:
6,274,647✔
3874
        break;
6,274,647✔
3875
    }
3876
  }
3877

3878
  return code;
6,276,927✔
3879
}
3880

3881
enum {
3882
  PHY_FILL_CODE_BASE_NODE = 1,
3883
  PHY_FILL_CODE_MODE,
3884
  PHY_FILL_CODE_FILL_EXPRS,
3885
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3886
  PHY_FILL_CODE_WSTART,
3887
  PHY_FILL_CODE_VALUES,
3888
  PHY_FILL_CODE_TIME_RANGE,
3889
  PHY_FILL_CODE_INPUT_TS_ORDER,
3890
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3891
  PHY_FILL_CODE_TIME_RANGE_EXPR,
3892
  PHY_FILL_CODE_SURROUNDING_TIME,
3893
  PHY_FILL_CODE_INDEF_ROWS_MODE,
3894
};
3895

3896
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
645,315✔
3897
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
645,315✔
3898

3899
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
645,315✔
3900
  if (TSDB_CODE_SUCCESS == code) {
646,109✔
3901
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
646,109✔
3902
  }
3903
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3904
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
646,572✔
3905
  }
3906
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3907
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
646,572✔
3908
  }
3909
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3910
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
646,572✔
3911
  }
3912
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3913
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
646,572✔
3914
  }
3915
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3916
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
646,572✔
3917
  }
3918
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3919
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
646,572✔
3920
  }
3921
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3922
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
646,572✔
3923
  }
3924
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3925
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_SURROUNDING_TIME, nodeToMsg,
646,572✔
3926
                        pNode->pSurroundingTime);
646,572✔
3927
  }
3928
  if (TSDB_CODE_SUCCESS == code) {
646,572✔
3929
    code = tlvEncodeBool(pEncoder, PHY_FILL_CODE_INDEF_ROWS_MODE, pNode->indefRowsMode);
646,572✔
3930
  }
3931
  return code;
646,572✔
3932
}
3933

3934
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
639,290✔
3935
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
639,290✔
3936

3937
  int32_t code = TSDB_CODE_SUCCESS;
639,290✔
3938
  STlv*   pTlv = NULL;
639,290✔
3939
  tlvForEach(pDecoder, pTlv, code) {
5,172,814✔
3940
    switch (pTlv->type) {
4,533,524✔
3941
      case PHY_FILL_CODE_BASE_NODE:
638,837✔
3942
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
638,837✔
3943
        break;
639,290✔
3944
      case PHY_FILL_CODE_MODE:
639,290✔
3945
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
639,290✔
3946
        break;
639,290✔
3947
      case PHY_FILL_CODE_FILL_EXPRS:
638,462✔
3948
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
638,462✔
3949
        break;
638,462✔
3950
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
556,453✔
3951
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
556,453✔
3952
        break;
556,453✔
3953
      case PHY_FILL_CODE_WSTART:
639,290✔
3954
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
639,290✔
3955
        break;
639,290✔
3956
      case PHY_FILL_CODE_VALUES:
115,206✔
3957
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
115,206✔
3958
        break;
115,206✔
3959
      case PHY_FILL_CODE_TIME_RANGE:
639,290✔
3960
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
639,290✔
3961
        break;
639,290✔
3962
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
20,743✔
3963
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
20,743✔
3964
        break;
20,743✔
3965
      case PHY_FILL_CODE_TIME_RANGE_EXPR:
×
3966
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
3967
        break;
×
3968
      case PHY_FILL_CODE_SURROUNDING_TIME:
6,210✔
3969
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSurroundingTime);
6,210✔
3970
        break;
6,210✔
3971
      case PHY_FILL_CODE_INDEF_ROWS_MODE:
639,743✔
3972
        code = tlvDecodeBool(pTlv, &pNode->indefRowsMode);
639,743✔
3973
        break;
639,290✔
3974
      default:
×
3975
        break;
×
3976
    }
3977
  }
3978

3979
  return code;
639,290✔
3980
}
3981

3982
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3983

3984
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,522,039✔
3985
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
2,522,039✔
3986

3987
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
2,522,039✔
3988
  if (TSDB_CODE_SUCCESS == code) {
2,522,125✔
3989
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
2,522,125✔
3990
  }
3991

3992
  return code;
2,522,125✔
3993
}
3994

3995
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
636,661✔
3996
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
636,661✔
3997

3998
  int32_t code = TSDB_CODE_SUCCESS;
636,661✔
3999
  STlv*   pTlv = NULL;
636,661✔
4000
  tlvForEach(pDecoder, pTlv, code) {
1,909,983✔
4001
    switch (pTlv->type) {
1,273,322✔
4002
      case PHY_SESSION_CODE_WINDOW:
636,661✔
4003
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
636,661✔
4004
        break;
636,661✔
4005
      case PHY_SESSION_CODE_GAP:
636,661✔
4006
        code = tlvDecodeI64(pTlv, &pNode->gap);
636,661✔
4007
        break;
636,661✔
4008
      default:
×
4009
        break;
×
4010
    }
4011
  }
4012

4013
  return code;
636,661✔
4014
}
4015

4016
enum {
4017
  PHY_EXT_CODE_WINDOW = 1,
4018
  PHY_EXT_CODE_SKEY,
4019
  PHY_EXT_CODE_EKEY,
4020
  PHY_EXT_CODE_TIME_RANGE_EXPR,
4021
  PHY_EXT_CODE_IS_SINGLE_TABLE,
4022
  PHY_EXT_CODE_INPUT_HAS_ORDER,
4023
  PHY_EXT_CODE_ORG_TABLE_UID,
4024
  PHY_EXT_CODE_ORG_TABLE_VGID,
4025
  PHY_EXT_CODE_NEED_GROUP_SORT,
4026
  PHY_EXT_CODE_CALC_WITH_PARTITION,
4027
  PHY_EXT_CODE_EXT_WIN_SPLIT,
4028
  PHY_EXT_CODE_FILL_MODE,
4029
  PHY_EXT_CODE_FILL_EXPRS,
4030
  PHY_EXT_CODE_FILL_VALUES,
4031
  PHY_EXT_CODE_SUB_QUERY
4032
};
4033

4034
static int32_t physiExternalWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,754,448✔
4035
  const SExternalWindowPhysiNode* pNode = (const SExternalWindowPhysiNode*)pObj;
1,754,448✔
4036
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
1,754,448✔
4037
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4038
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_SKEY, pNode->timeRange.skey);
1,755,354✔
4039
  }
4040
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4041
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_EKEY, pNode->timeRange.ekey);
1,755,354✔
4042
  }
4043
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4044
    code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
1,755,354✔
4045
  }
4046
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4047
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_IS_SINGLE_TABLE, pNode->isSingleTable);
1,755,354✔
4048
  }
4049
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4050
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_INPUT_HAS_ORDER, pNode->inputHasOrder);
1,755,354✔
4051
  }
4052
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4053
    code = tlvEncodeI64(pEncoder, PHY_EXT_CODE_ORG_TABLE_UID, pNode->orgTableUid);
1,755,354✔
4054
  }
4055
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4056
    code = tlvEncodeI32(pEncoder, PHY_EXT_CODE_ORG_TABLE_VGID, pNode->orgTableVgId);
1,755,354✔
4057
  }
4058
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4059
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_NEED_GROUP_SORT, pNode->needGroupSort);
1,755,354✔
4060
  }
4061
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4062
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_CALC_WITH_PARTITION, pNode->calcWithPartition);
1,755,354✔
4063
  }
4064
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4065
    code = tlvEncodeBool(pEncoder, PHY_EXT_CODE_EXT_WIN_SPLIT, pNode->extWinSplit);
1,755,354✔
4066
  }
4067
  if (TSDB_CODE_SUCCESS == code) {
1,755,354✔
4068
    code = tlvEncodeEnum(pEncoder, PHY_EXT_CODE_FILL_MODE, pNode->extFill.mode);
1,755,354✔
4069
  }
4070
  if (TSDB_CODE_SUCCESS == code) {
1,754,908✔
4071
    code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_FILL_EXPRS, nodeListToMsg, pNode->extFill.pFillExprs);
1,754,908✔
4072
  }
4073
  if (TSDB_CODE_SUCCESS == code) {
1,754,462✔
4074
    code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_FILL_VALUES, nodeToMsg, pNode->extFill.pFillValues);
1,754,462✔
4075
  }
4076
  if (TSDB_CODE_SUCCESS == code) {
1,754,462✔
4077
    code = tlvEncodeObj(pEncoder, PHY_EXT_CODE_SUB_QUERY, nodeToMsg, pNode->pSubquery);
1,754,462✔
4078
  }
4079

4080
  return code;
1,755,354✔
4081
}
4082

4083
static int32_t msgToPhysiExternalWindowNode(STlvDecoder* pDecoder, void* pObj) {
1,734,456✔
4084
  SExternalWindowPhysiNode* pNode = (SExternalWindowPhysiNode*)pObj;
1,734,456✔
4085

4086
  int32_t code = TSDB_CODE_SUCCESS;
1,734,456✔
4087
  STlv*   pTlv = NULL;
1,734,456✔
4088
  tlvForEach(pDecoder, pTlv, code) {
21,420,900✔
4089
    switch (pTlv->type) {
19,686,444✔
4090
      case PHY_EXT_CODE_WINDOW:
1,734,456✔
4091
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,734,456✔
4092
        break;
1,734,456✔
4093
      case PHY_EXT_CODE_SKEY:
1,734,456✔
4094
        code = tlvDecodeI64(pTlv, &pNode->timeRange.skey);
1,734,456✔
4095
        break;
1,734,456✔
4096
      case PHY_EXT_CODE_EKEY:
1,734,456✔
4097
        code = tlvDecodeI64(pTlv, &pNode->timeRange.ekey);
1,734,456✔
4098
        break;
1,734,456✔
4099
      case PHY_EXT_CODE_TIME_RANGE_EXPR:
×
4100
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
4101
        break;
×
4102
      case PHY_EXT_CODE_IS_SINGLE_TABLE:
1,734,456✔
4103
        code = tlvDecodeBool(pTlv, &pNode->isSingleTable);
1,734,456✔
4104
        break;
1,734,456✔
4105
      case PHY_EXT_CODE_INPUT_HAS_ORDER:
1,734,456✔
4106
        code = tlvDecodeBool(pTlv, &pNode->inputHasOrder);
1,734,456✔
4107
        break;
1,734,456✔
4108
      case PHY_EXT_CODE_ORG_TABLE_UID:
1,734,456✔
4109
        code = tlvDecodeI64(pTlv, &pNode->orgTableUid);
1,734,456✔
4110
        break;
1,734,456✔
4111
      case PHY_EXT_CODE_ORG_TABLE_VGID:
1,734,456✔
4112
        code = tlvDecodeI32(pTlv, &pNode->orgTableVgId);
1,734,456✔
4113
        break;
1,734,456✔
4114
      case PHY_EXT_CODE_NEED_GROUP_SORT:
1,734,456✔
4115
        code = tlvDecodeBool(pTlv, &pNode->needGroupSort);
1,734,456✔
4116
        break;
1,734,456✔
4117
      case PHY_EXT_CODE_CALC_WITH_PARTITION:
1,734,456✔
4118
        code = tlvDecodeBool(pTlv, &pNode->calcWithPartition);
1,734,456✔
4119
        break;
1,734,456✔
4120
      case PHY_EXT_CODE_EXT_WIN_SPLIT:
1,734,456✔
4121
        code = tlvDecodeBool(pTlv, &pNode->extWinSplit);
1,734,456✔
4122
        break;
1,734,456✔
4123
      case PHY_EXT_CODE_FILL_MODE:
1,734,456✔
4124
        code = tlvDecodeEnum(pTlv, &pNode->extFill.mode, sizeof(pNode->extFill.mode));
1,734,456✔
4125
        break;
1,734,456✔
4126
      case PHY_EXT_CODE_FILL_EXPRS:
20,840✔
4127
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->extFill.pFillExprs);
20,840✔
4128
        break;
20,840✔
4129
      case PHY_EXT_CODE_FILL_VALUES:
20,840✔
4130
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->extFill.pFillValues);
20,840✔
4131
        break;
20,840✔
4132
      case PHY_EXT_CODE_SUB_QUERY:
565,748✔
4133
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubquery);
565,748✔
4134
        break;
565,748✔
4135
      default:
×
4136
        break;
×
4137
    }
4138
  }
4139
  return code;
1,734,456✔
4140
}
4141

4142
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY, PHY_STATE_CODE_TRUE_FOR_DURATION, PHY_STATE_CODE_EXTEND_OPTION, PHY_STATE_CODE_TRUE_FOR_TYPE, PHY_STATE_CODE_TRUE_FOR_COUNT };
4143

4144
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,724,225✔
4145
  const SStateWindowPhysiNode* pNode = (const SStateWindowPhysiNode*)pObj;
2,724,225✔
4146

4147
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
2,724,225✔
4148
  if (TSDB_CODE_SUCCESS == code) {
2,724,405✔
4149
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeListToMsg, pNode->pStateKeys);
2,724,405✔
4150
  }
4151
  if (TSDB_CODE_SUCCESS == code) {
2,724,405✔
4152
    code = tlvEncodeI32(pEncoder, PHY_STATE_CODE_TRUE_FOR_TYPE, pNode->trueForType);
2,724,405✔
4153
  }
4154
  if (TSDB_CODE_SUCCESS == code) {
2,724,405✔
4155
    code = tlvEncodeI32(pEncoder, PHY_STATE_CODE_TRUE_FOR_COUNT, pNode->trueForCount);
2,724,405✔
4156
  }
4157
  if (TSDB_CODE_SUCCESS == code) {
2,724,405✔
4158
    code = tlvEncodeI64(pEncoder, PHY_STATE_CODE_TRUE_FOR_DURATION, pNode->trueForDuration);
2,724,405✔
4159
  }
4160
  if (TSDB_CODE_SUCCESS == code) {
2,724,405✔
4161
    code = tlvEncodeI32(pEncoder, PHY_STATE_CODE_EXTEND_OPTION, pNode->extendOption);
2,724,405✔
4162
  }
4163

4164
  return code;
2,724,405✔
4165
}
4166

4167
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
1,298,972✔
4168
  SStateWindowPhysiNode* pNode = (SStateWindowPhysiNode*)pObj;
1,298,972✔
4169

4170
  int32_t code = TSDB_CODE_SUCCESS;
1,298,972✔
4171
  STlv*   pTlv = NULL;
1,298,972✔
4172
  tlvForEach(pDecoder, pTlv, code) {
9,092,804✔
4173
    switch (pTlv->type) {
7,793,832✔
4174
      case PHY_STATE_CODE_WINDOW:
1,298,972✔
4175
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,298,972✔
4176
        break;
1,298,972✔
4177
      case PHY_STATE_CODE_KEY:
1,298,972✔
4178
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pStateKeys);
1,298,972✔
4179
        break;
1,298,972✔
4180
      case PHY_STATE_CODE_TRUE_FOR_TYPE:
1,298,972✔
4181
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->trueForType);
1,298,972✔
4182
        break;
1,298,972✔
4183
      case PHY_STATE_CODE_TRUE_FOR_COUNT:
1,298,972✔
4184
        code = tlvDecodeI32(pTlv, &pNode->trueForCount);
1,298,972✔
4185
        break;
1,298,972✔
4186
      case PHY_STATE_CODE_TRUE_FOR_DURATION:
1,298,972✔
4187
        code = tlvDecodeI64(pTlv, &pNode->trueForDuration);
1,298,972✔
4188
        break;
1,298,972✔
4189
      case PHY_STATE_CODE_EXTEND_OPTION:
1,298,972✔
4190
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->extendOption);
1,298,972✔
4191
      default:
1,298,972✔
4192
        break;
1,298,972✔
4193
    }
4194
  }
4195

4196
  return code;
1,298,972✔
4197
}
4198

4199
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND, PHY_EVENT_CODE_TRUE_FOR_DURATION, PHY_EVENT_CODE_TRUE_FOR_TYPE, PHY_EVENT_CODE_TRUE_FOR_COUNT };
4200

4201
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,842,663✔
4202
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
1,842,663✔
4203

4204
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
1,842,663✔
4205
  if (TSDB_CODE_SUCCESS == code) {
1,842,738✔
4206
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
1,842,738✔
4207
  }
4208
  if (TSDB_CODE_SUCCESS == code) {
1,842,738✔
4209
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
1,842,738✔
4210
  }
4211
  if (TSDB_CODE_SUCCESS == code) {
1,842,738✔
4212
    code = tlvEncodeI32(pEncoder, PHY_EVENT_CODE_TRUE_FOR_TYPE, pNode->trueForType);
1,842,738✔
4213
  }
4214
  if (TSDB_CODE_SUCCESS == code) {
1,842,738✔
4215
    code = tlvEncodeI32(pEncoder, PHY_EVENT_CODE_TRUE_FOR_COUNT, pNode->trueForCount);
1,842,738✔
4216
  }
4217
  if (TSDB_CODE_SUCCESS == code) {
1,842,279✔
4218
    code = tlvEncodeI64(pEncoder, PHY_EVENT_CODE_TRUE_FOR_DURATION, pNode->trueForDuration);
1,842,279✔
4219
  }
4220

4221
  return code;
1,842,738✔
4222
}
4223

4224
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
356,123✔
4225
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
356,123✔
4226

4227
  int32_t code = TSDB_CODE_SUCCESS;
356,123✔
4228
  STlv*   pTlv = NULL;
356,123✔
4229
  tlvForEach(pDecoder, pTlv, code) {
2,492,402✔
4230
    switch (pTlv->type) {
2,136,738✔
4231
      case PHY_EVENT_CODE_WINDOW:
356,123✔
4232
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
356,123✔
4233
        break;
356,123✔
4234
      case PHY_EVENT_CODE_START_COND:
356,123✔
4235
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
356,123✔
4236
        break;
355,664✔
4237
      case PHY_EVENT_CODE_END_COND:
356,123✔
4238
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
356,123✔
4239
        break;
356,123✔
4240
      case PHY_EVENT_CODE_TRUE_FOR_TYPE:
356,123✔
4241
        code = tlvDecodeI32(pTlv, (int32_t *)&pNode->trueForType);
356,123✔
4242
        break;
356,123✔
4243
      case PHY_EVENT_CODE_TRUE_FOR_COUNT:
356,123✔
4244
        code = tlvDecodeI32(pTlv, &pNode->trueForCount);
356,123✔
4245
        break;
356,123✔
4246
      case PHY_EVENT_CODE_TRUE_FOR_DURATION:
356,123✔
4247
        code = tlvDecodeI64(pTlv, &pNode->trueForDuration);
356,123✔
4248
        break;
356,123✔
4249
      default:
×
4250
        break;
×
4251
    }
4252
  }
4253

4254
  return code;
356,123✔
4255
}
4256

4257
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
4258

4259
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,697,452✔
4260
  const SCountWindowPhysiNode* pNode = (const SCountWindowPhysiNode*)pObj;
1,697,452✔
4261

4262
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
1,697,452✔
4263
  if (TSDB_CODE_SUCCESS == code) {
1,698,340✔
4264
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
1,698,340✔
4265
  }
4266
  if (TSDB_CODE_SUCCESS == code) {
1,698,254✔
4267
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
1,698,254✔
4268
  }
4269

4270
  return code;
1,698,340✔
4271
}
4272

4273
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
291,136✔
4274
  SCountWindowPhysiNode* pNode = (SCountWindowPhysiNode*)pObj;
291,136✔
4275

4276
  int32_t code = TSDB_CODE_SUCCESS;
291,136✔
4277
  STlv*   pTlv = NULL;
291,136✔
4278
  tlvForEach(pDecoder, pTlv, code) {
1,164,544✔
4279
    switch (pTlv->type) {
873,408✔
4280
      case PHY_COUNT_CODE_WINDOW:
291,136✔
4281
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
291,136✔
4282
        break;
291,136✔
4283
      case PHY_COUNT_CODE_WINDOW_COUNT:
291,136✔
4284
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
291,136✔
4285
        break;
291,136✔
4286
      case PHY_COUNT_CODE_WINDOW_SLIDING:
291,136✔
4287
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
291,136✔
4288
        break;
291,136✔
4289
      default:
×
4290
        break;
×
4291
    }
4292
  }
4293

4294
  return code;
291,136✔
4295
}
4296

4297
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
4298

4299
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4300
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
4301

4302
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
4303
  if (TSDB_CODE_SUCCESS == code) {
×
4304
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeListToMsg, pNode->pAnomalyKeys);
×
4305
  }
4306
  if (TSDB_CODE_SUCCESS == code) {
×
4307
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
4308
  }
4309

4310
  return code;
×
4311
}
4312

4313
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
4314
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
4315

4316
  int32_t code = TSDB_CODE_SUCCESS;
×
4317
  STlv*   pTlv = NULL;
×
4318
  tlvForEach(pDecoder, pTlv, code) {
×
4319
    switch (pTlv->type) {
×
4320
      case PHY_ANOMALY_CODE_WINDOW:
×
4321
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
×
4322
        break;
×
4323
      case PHY_ANOMALY_CODE_KEY:
×
4324
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAnomalyKeys);
×
4325
        break;
×
4326
      case PHY_ANOMALY_CODE_WINDOW_OPTION:
×
4327
        code = tlvDecodeCStr(pTlv, pNode->anomalyOpt, sizeof(pNode->anomalyOpt));
×
4328
        break;
×
4329
      default:
×
4330
        break;
×
4331
    }
4332
  }
4333

4334
  return code;
×
4335
}
4336

4337
enum {
4338
  PHY_PARTITION_CODE_BASE_NODE = 1,
4339
  PHY_PARTITION_CODE_EXPR,
4340
  PHY_PARTITION_CODE_KEYS,
4341
  PHY_PARTITION_CODE_TARGETS,
4342
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
4343
  PHY_PARTITION_CODE_TS_SLOTID
4344
};
4345

4346
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,301,469✔
4347
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
11,301,469✔
4348

4349
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
11,301,469✔
4350
  if (TSDB_CODE_SUCCESS == code) {
11,317,884✔
4351
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
11,316,982✔
4352
  }
4353
  if (TSDB_CODE_SUCCESS == code) {
11,319,596✔
4354
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
11,311,788✔
4355
  }
4356
  if (TSDB_CODE_SUCCESS == code) {
11,327,910✔
4357
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
11,320,102✔
4358
  }
4359
  if (TSDB_CODE_SUCCESS == code) {
11,326,553✔
4360
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
11,318,745✔
4361
  }
4362
  if (TSDB_CODE_SUCCESS == code) {
11,328,494✔
4363
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
11,320,686✔
4364
  }
4365

4366
  return code;
11,320,766✔
4367
}
4368

4369
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
3,335,907✔
4370
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
3,335,907✔
4371

4372
  int32_t code = TSDB_CODE_SUCCESS;
3,335,907✔
4373
  STlv*   pTlv = NULL;
3,335,907✔
4374
  tlvForEach(pDecoder, pTlv, code) {
20,129,775✔
4375
    switch (pTlv->type) {
16,789,995✔
4376
      case PHY_PARTITION_CODE_BASE_NODE:
3,335,898✔
4377
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,335,898✔
4378
        break;
3,338,905✔
4379
      case PHY_PARTITION_CODE_EXPR:
92,080✔
4380
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
92,080✔
4381
        break;
92,080✔
4382
      case PHY_PARTITION_CODE_KEYS:
3,340,252✔
4383
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
3,340,252✔
4384
        break;
3,339,028✔
4385
      case PHY_PARTITION_CODE_TARGETS:
3,340,384✔
4386
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
3,340,384✔
4387
        break;
3,340,836✔
4388
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
3,340,836✔
4389
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
3,340,836✔
4390
        break;
3,340,384✔
4391
      case PHY_PARTITION_CODE_TS_SLOTID:
3,340,856✔
4392
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
3,340,856✔
4393
        break;
3,340,393✔
4394
      default:
×
4395
        break;
×
4396
    }
4397
  }
4398

4399
  return code;
3,350,250✔
4400
}
4401

4402
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
4403

4404
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,522,461✔
4405
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
3,522,461✔
4406

4407
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
3,522,461✔
4408
  if (TSDB_CODE_SUCCESS == code) {
3,525,441✔
4409
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
3,525,441✔
4410
  }
4411
  if (TSDB_CODE_SUCCESS == code) {
3,523,881✔
4412
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
3,523,881✔
4413
  }
4414

4415
  return code;
3,525,441✔
4416
}
4417

4418
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
3,494,661✔
4419
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
3,494,661✔
4420

4421
  int32_t code = TSDB_CODE_SUCCESS;
3,494,661✔
4422
  STlv*   pTlv = NULL;
3,494,661✔
4423
  tlvForEach(pDecoder, pTlv, code) {
10,509,739✔
4424
    switch (pTlv->type) {
7,015,078✔
4425
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
3,494,661✔
4426
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,494,661✔
4427
        break;
3,494,661✔
4428
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
25,756✔
4429
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
25,756✔
4430
        break;
25,756✔
4431
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
3,494,661✔
4432
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
3,494,661✔
4433
        break;
3,494,661✔
4434
      default:
×
4435
        break;
×
4436
    }
4437
  }
4438

4439
  return code;
3,494,661✔
4440
}
4441

4442
enum {
4443
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
4444
  PHY_INERP_FUNC_CODE_EXPR,
4445
  PHY_INERP_FUNC_CODE_FUNCS,
4446
  PHY_INERP_FUNC_CODE_TIME_RANGE,
4447
  PHY_INERP_FUNC_CODE_INTERVAL,
4448
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
4449
  PHY_INERP_FUNC_CODE_FILL_MODE,
4450
  PHY_INERP_FUNC_CODE_FILL_VALUES,
4451
  PHY_INERP_FUNC_CODE_TIME_SERIES,
4452
  PHY_INTERP_FUNC_CODE_SURROUNDING_TIME,
4453
  PHY_INERP_FUNC_CODE_TIME_RANGE_EXPR,
4454
};
4455

4456
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,788,835✔
4457
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
3,788,835✔
4458

4459
  int32_t code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
3,788,835✔
4460
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4461
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
3,789,302✔
4462
  }
4463
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4464
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
3,789,302✔
4465
  }
4466
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4467
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
3,789,302✔
4468
  }
4469
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4470
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_RANGE_EXPR, nodeToMsg, pNode->pTimeRange);
3,789,302✔
4471
  }
4472
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4473
    code = tlvEncodeI64(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL, pNode->interval);
3,789,302✔
4474
  }
4475
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4476
    code = tlvEncodeI8(pEncoder, PHY_INERP_FUNC_CODE_INTERVAL_UNIT, pNode->intervalUnit);
3,789,302✔
4477
  }
4478
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4479
    code = tlvEncodeEnum(pEncoder, PHY_INERP_FUNC_CODE_FILL_MODE, pNode->fillMode);
3,789,302✔
4480
  }
4481
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4482
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_FILL_VALUES, nodeToMsg, pNode->pFillValues);
3,789,302✔
4483
  }
4484
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4485
    code = tlvEncodeObj(pEncoder, PHY_INERP_FUNC_CODE_TIME_SERIES, nodeToMsg, pNode->pTimeSeries);
3,789,302✔
4486
  }
4487
  if (TSDB_CODE_SUCCESS == code) {
3,789,302✔
4488
    code = tlvEncodeI64(pEncoder, PHY_INTERP_FUNC_CODE_SURROUNDING_TIME, pNode->surroundingTime);
3,789,302✔
4489
  }
4490

4491
  return code;
3,789,302✔
4492
}
4493

4494
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
3,777,547✔
4495
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
3,777,547✔
4496

4497
  int32_t code = TSDB_CODE_SUCCESS;
3,777,547✔
4498
  STlv*   pTlv = NULL;
3,777,547✔
4499
  tlvForEach(pDecoder, pTlv, code) {
35,908,564✔
4500
    switch (pTlv->type) {
32,131,017✔
4501
      case PHY_INERP_FUNC_CODE_BASE_NODE:
3,777,547✔
4502
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,777,547✔
4503
        break;
3,777,547✔
4504
      case PHY_INERP_FUNC_CODE_EXPR:
93,819✔
4505
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
93,819✔
4506
        break;
93,819✔
4507
      case PHY_INERP_FUNC_CODE_FUNCS:
3,777,078✔
4508
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
3,777,078✔
4509
        break;
3,777,547✔
4510
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
3,777,547✔
4511
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
3,777,547✔
4512
        break;
3,777,547✔
4513
      case PHY_INERP_FUNC_CODE_TIME_RANGE_EXPR:
×
4514
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeRange);
×
4515
        break;
×
4516
      case PHY_INERP_FUNC_CODE_INTERVAL:
3,777,547✔
4517
        code = tlvDecodeI64(pTlv, &pNode->interval);
3,777,547✔
4518
        break;
3,777,547✔
4519
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
3,777,547✔
4520
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
3,777,547✔
4521
        break;
3,777,547✔
4522
      case PHY_INERP_FUNC_CODE_FILL_MODE:
3,777,547✔
4523
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
3,777,547✔
4524
        break;
3,777,547✔
4525
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
1,816,822✔
4526
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
1,816,822✔
4527
        break;
1,816,822✔
4528
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
3,777,547✔
4529
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
3,777,547✔
4530
        break;
3,777,547✔
4531
      case PHY_INTERP_FUNC_CODE_SURROUNDING_TIME:
3,778,016✔
4532
        code = tlvDecodeI64(pTlv, &pNode->surroundingTime);
3,778,016✔
4533
        break;
3,777,547✔
4534
      default:
×
4535
        break;
×
4536
    }
4537
  }
4538

4539
  return code;
3,778,016✔
4540
}
4541

4542
enum {
4543
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
4544
  PHY_FORECAST_FUNC_CODE_EXPR,
4545
  PHY_FORECAST_FUNC_CODE_FUNCS,
4546
};
4547

4548
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4549
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
4550

4551
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
4552
  if (TSDB_CODE_SUCCESS == code) {
×
4553
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
4554
  }
4555
  if (TSDB_CODE_SUCCESS == code) {
×
4556
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
4557
  }
4558

4559
  return code;
×
4560
}
4561

4562
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
4563
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
4564

4565
  int32_t code = TSDB_CODE_SUCCESS;
×
4566
  STlv*   pTlv = NULL;
×
4567
  tlvForEach(pDecoder, pTlv, code) {
×
4568
    switch (pTlv->type) {
×
4569
      case PHY_FORECAST_FUNC_CODE_BASE_NODE:
×
4570
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
×
4571
        break;
×
4572
      case PHY_FORECAST_FUNC_CODE_EXPR:
×
4573
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
×
4574
        break;
×
4575
      case PHY_FORECAST_FUNC_CODE_FUNCS:
×
4576
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
×
4577
        break;
×
4578
      default:
×
4579
        break;
×
4580
    }
4581
  }
4582

4583
  return code;
×
4584
}
4585

4586
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
4587

4588
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
559,482,353✔
4589
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
559,482,353✔
4590
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
559,482,353✔
4591
}
4592

4593
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
399,478,262✔
4594
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
399,478,262✔
4595

4596
  int32_t code = TSDB_CODE_SUCCESS;
399,478,262✔
4597
  STlv*   pTlv = NULL;
399,478,262✔
4598
  tlvForEach(pDecoder, pTlv, code) {
799,127,088✔
4599
    switch (pTlv->type) {
399,606,507✔
4600
      case PHY_DATA_SINK_CODE_INPUT_DESC:
399,603,402✔
4601
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
399,603,402✔
4602
        break;
399,600,230✔
4603
      default:
×
4604
        break;
×
4605
    }
4606
  }
4607

4608
  return code;
399,641,470✔
4609
}
4610

4611
enum { PHY_DISPATCH_CODE_SINK = 1,
4612
       PHY_DISPATCH_DYNAMIC_SCHEMA};
4613

4614
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
556,956,123✔
4615
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
556,956,123✔
4616
  int32_t                    code = tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
556,956,123✔
4617
  if (TSDB_CODE_SUCCESS == code) {
557,891,975✔
4618
    code = tlvEncodeBool(pEncoder, PHY_DISPATCH_DYNAMIC_SCHEMA, pNode->dynamicSchema);
557,898,542✔
4619
  }
4620
  return code;
557,959,721✔
4621
}
4622

4623
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
396,957,432✔
4624
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
396,957,432✔
4625

4626
  int32_t code = TSDB_CODE_SUCCESS;
396,957,432✔
4627
  STlv*   pTlv = NULL;
396,957,432✔
4628
  tlvForEach(pDecoder, pTlv, code) {
1,191,146,761✔
4629
    switch (pTlv->type) {
794,124,915✔
4630
      case PHY_DISPATCH_CODE_SINK:
397,040,158✔
4631
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
397,040,158✔
4632
        break;
397,064,964✔
4633
      case PHY_DISPATCH_DYNAMIC_SCHEMA:
397,081,622✔
4634
        code = tlvDecodeBool(pTlv, &pNode->dynamicSchema);
397,081,622✔
4635
        break;
397,072,919✔
4636
      default:
×
4637
        break;
×
4638
    }
4639
  }
4640

4641
  return code;
397,125,533✔
4642
}
4643

4644
enum {
4645
  PHY_QUERY_INSERT_CODE_SINK = 1,
4646
  PHY_QUERY_INSERT_CODE_COLS,
4647
  PHY_QUERY_INSERT_CODE_TABLE_ID,
4648
  PHY_QUERY_INSERT_CODE_STABLE_ID,
4649
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
4650
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
4651
  PHY_QUERY_INSERT_CODE_VG_ID,
4652
  PHY_QUERY_INSERT_CODE_EP_SET,
4653
  PHY_QUERY_INSERT_CODE_EXPLAIN
4654
};
4655

4656
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
562,800✔
4657
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
562,800✔
4658

4659
  int32_t code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
562,800✔
4660
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4661
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_COLS, nodeListToMsg, pNode->pCols);
562,800✔
4662
  }
4663
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4664
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_ID, pNode->tableId);
562,800✔
4665
  }
4666
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4667
    code = tlvEncodeU64(pEncoder, PHY_QUERY_INSERT_CODE_STABLE_ID, pNode->stableId);
562,800✔
4668
  }
4669
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4670
    code = tlvEncodeI8(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_TYPE, pNode->tableType);
562,800✔
4671
  }
4672
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4673
    code = tlvEncodeCStr(pEncoder, PHY_QUERY_INSERT_CODE_TABLE_NAME, pNode->tableName);
562,800✔
4674
  }
4675
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4676
    code = tlvEncodeI32(pEncoder, PHY_QUERY_INSERT_CODE_VG_ID, pNode->vgId);
562,800✔
4677
  }
4678
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4679
    code = tlvEncodeObj(pEncoder, PHY_QUERY_INSERT_CODE_EP_SET, epSetToMsg, &pNode->epSet);
562,800✔
4680
  }
4681
  if (TSDB_CODE_SUCCESS == code) {
562,800✔
4682
    code = tlvEncodeBool(pEncoder, PHY_QUERY_INSERT_CODE_EXPLAIN, pNode->explain);
562,800✔
4683
  }
4684

4685
  return code;
562,800✔
4686
}
4687

4688
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
529,764✔
4689
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
529,764✔
4690

4691
  int32_t code = TSDB_CODE_SUCCESS;
529,764✔
4692
  STlv*   pTlv = NULL;
529,764✔
4693
  tlvForEach(pDecoder, pTlv, code) {
5,297,640✔
4694
    switch (pTlv->type) {
4,767,876✔
4695
      case PHY_QUERY_INSERT_CODE_SINK:
529,764✔
4696
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
529,764✔
4697
        break;
529,764✔
4698
      case PHY_QUERY_INSERT_CODE_COLS:
529,764✔
4699
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pCols);
529,764✔
4700
        break;
529,764✔
4701
      case PHY_QUERY_INSERT_CODE_TABLE_ID:
529,764✔
4702
        code = tlvDecodeU64(pTlv, &pNode->tableId);
529,764✔
4703
        break;
529,764✔
4704
      case PHY_QUERY_INSERT_CODE_STABLE_ID:
529,764✔
4705
        code = tlvDecodeU64(pTlv, &pNode->stableId);
529,764✔
4706
        break;
529,764✔
4707
      case PHY_QUERY_INSERT_CODE_TABLE_TYPE:
529,764✔
4708
        code = tlvDecodeI8(pTlv, &pNode->tableType);
529,764✔
4709
        break;
529,764✔
4710
      case PHY_QUERY_INSERT_CODE_TABLE_NAME:
529,764✔
4711
        code = tlvDecodeCStr(pTlv, pNode->tableName, sizeof(pNode->tableName));
529,764✔
4712
        break;
529,764✔
4713
      case PHY_QUERY_INSERT_CODE_VG_ID:
529,764✔
4714
        code = tlvDecodeI32(pTlv, &pNode->vgId);
529,764✔
4715
        break;
529,764✔
4716
      case PHY_QUERY_INSERT_CODE_EP_SET:
529,764✔
4717
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->epSet);
529,764✔
4718
        break;
529,764✔
4719
      case PHY_QUERY_INSERT_CODE_EXPLAIN:
529,764✔
4720
        code = tlvDecodeBool(pTlv, &pNode->explain);
529,764✔
4721
        break;
529,764✔
4722
      default:
×
4723
        break;
×
4724
    }
4725
  }
4726

4727
  return code;
529,764✔
4728
}
4729

4730
enum {
4731
  PHY_DELETER_CODE_SINK = 1,
4732
  PHY_DELETER_CODE_TABLE_ID,
4733
  PHY_DELETER_CODE_TABLE_TYPE,
4734
  PHY_DELETER_CODE_TABLE_FNAME,
4735
  PHY_DELETER_CODE_TS_COL_NAME,
4736
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4737
  PHY_DELETER_CODE_AFFECTED_ROWS,
4738
  PHY_DELETER_CODE_START_TS,
4739
  PHY_DELETER_CODE_END_TS
4740
};
4741

4742
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,000,487✔
4743
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
2,000,487✔
4744

4745
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
2,000,487✔
4746
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4747
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
2,000,487✔
4748
  }
4749
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4750
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
2,000,487✔
4751
  }
4752
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4753
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
2,000,487✔
4754
  }
4755
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4756
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
2,000,487✔
4757
  }
4758
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4759
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
2,000,487✔
4760
  }
4761
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4762
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
2,000,487✔
4763
  }
4764
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4765
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
2,000,487✔
4766
  }
4767
  if (TSDB_CODE_SUCCESS == code) {
2,000,487✔
4768
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
2,000,487✔
4769
  }
4770

4771
  return code;
2,000,487✔
4772
}
4773

4774
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
1,997,338✔
4775
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
1,997,338✔
4776

4777
  int32_t code = TSDB_CODE_SUCCESS;
1,997,338✔
4778
  STlv*   pTlv = NULL;
1,997,338✔
4779
  tlvForEach(pDecoder, pTlv, code) {
19,979,140✔
4780
    switch (pTlv->type) {
17,981,802✔
4781
      case PHY_DELETER_CODE_SINK:
1,997,338✔
4782
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,997,338✔
4783
        break;
1,997,978✔
4784
      case PHY_DELETER_CODE_TABLE_ID:
1,997,338✔
4785
        code = tlvDecodeU64(pTlv, &pNode->tableId);
1,997,338✔
4786
        break;
1,997,978✔
4787
      case PHY_DELETER_CODE_TABLE_TYPE:
1,997,978✔
4788
        code = tlvDecodeI8(pTlv, &pNode->tableType);
1,997,978✔
4789
        break;
1,997,978✔
4790
      case PHY_DELETER_CODE_TABLE_FNAME:
1,997,978✔
4791
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
1,997,978✔
4792
        break;
1,997,978✔
4793
      case PHY_DELETER_CODE_TS_COL_NAME:
1,997,978✔
4794
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
1,997,978✔
4795
        break;
1,997,978✔
4796
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
1,997,978✔
4797
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
1,997,978✔
4798
        break;
1,997,978✔
4799
      case PHY_DELETER_CODE_AFFECTED_ROWS:
1,997,978✔
4800
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
1,997,978✔
4801
        break;
1,997,978✔
4802
      case PHY_DELETER_CODE_START_TS:
1,997,978✔
4803
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
1,997,978✔
4804
        break;
1,997,978✔
4805
      case PHY_DELETER_CODE_END_TS:
1,999,258✔
4806
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
1,999,258✔
4807
        break;
1,997,978✔
4808
      default:
×
4809
        break;
×
4810
    }
4811
  }
4812

4813
  return code;
1,998,618✔
4814
}
4815

4816
enum {
4817
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4818
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4819
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4820
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4821
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4822
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4823
};
4824

4825
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,352,686✔
4826
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
1,352,686✔
4827

4828
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,352,686✔
4829
  if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4830
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
1,352,686✔
4831
  }
4832
  if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4833
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
1,352,686✔
4834
  }
4835
  if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4836
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
1,352,686✔
4837
  }
4838
  if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4839
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
1,352,686✔
4840
  }
4841
  if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4842
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
1,352,686✔
4843
  }
4844

4845
  return code;
1,352,686✔
4846
}
4847

4848
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
1,352,576✔
4849
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
1,352,576✔
4850

4851
  int32_t code = TSDB_CODE_SUCCESS;
1,352,576✔
4852
  STlv*   pTlv = NULL;
1,352,576✔
4853
  tlvForEach(pDecoder, pTlv, code) {
8,115,456✔
4854
    switch (pTlv->type) {
6,762,880✔
4855
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
1,352,576✔
4856
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,352,576✔
4857
        break;
1,352,576✔
4858
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4859
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4860
        break;
×
4861
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
1,352,576✔
4862
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
1,352,576✔
4863
        break;    
1,352,576✔
4864
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
1,352,576✔
4865
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
1,352,576✔
4866
        break;    
1,352,576✔
4867
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
1,352,576✔
4868
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
1,352,576✔
4869
        break;    
1,352,576✔
4870
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
1,352,576✔
4871
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
1,352,576✔
4872
        break;    
1,352,576✔
4873
      default:
×
4874
        break;
×
4875
    }
4876
  }
4877

4878
  return code;
1,352,576✔
4879
}
4880

4881

4882
enum {
4883
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4884
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4885
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4886
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4887
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4888
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4889
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4890
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4891
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4892
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS,
4893
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID,
4894
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME,
4895
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME,
4896
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID,
4897
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET,
4898
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS,
4899
  PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME,
4900
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID,
4901
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE,
4902
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION,
4903
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS,
4904
  PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WSTART_SLOTID,
4905
  PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WEND_SLOTID,
4906
  PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WDURATION_SLOTID,
4907
  PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_TARGETS,
4908
  PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_IS_VSTB,
4909
  PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_STATE_EXTEND_OPTION,
4910
  PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_IS_SPARSE_WINDOW,
4911
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_BATCH_PROCESS_CHILD,
4912
  PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_HAS_PARTITION,
4913
};
4914

4915
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,942,431✔
4916
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
5,942,431✔
4917

4918
  int32_t code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
5,942,431✔
4919
  if (TSDB_CODE_SUCCESS == code) {
5,942,431✔
4920
    code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE, pNode->qType);
5,942,431✔
4921
  }
4922
  if (TSDB_CODE_SUCCESS == code) {
5,942,431✔
4923
    switch (pNode->qType) {
5,942,431✔
4924
      case DYN_QTYPE_STB_HASH: {
1,352,686✔
4925
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH, pNode->stbJoin.batchFetch);
1,352,686✔
4926
        if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4927
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0, pNode->stbJoin.vgSlot[0]);
1,352,686✔
4928
        }
4929
        if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4930
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1, pNode->stbJoin.vgSlot[1]);
1,352,686✔
4931
        }
4932
        if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4933
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0, pNode->stbJoin.uidSlot[0]);
1,352,686✔
4934
        }
4935
        if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4936
          code = tlvEncodeEnum(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1, pNode->stbJoin.uidSlot[1]);
1,352,686✔
4937
        }
4938
        if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4939
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0, pNode->stbJoin.srcScan[0]);
1,352,686✔
4940
        }
4941
        if (TSDB_CODE_SUCCESS == code) {
1,352,686✔
4942
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1, pNode->stbJoin.srcScan[1]);
1,352,686✔
4943
        }
4944
        break;
1,352,686✔
4945
      }
4946
      case DYN_QTYPE_VTB_WINDOW: {
646,011✔
4947
        code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WSTART_SLOTID, pNode->vtbWindow.wstartSlotId);
646,011✔
4948
        if (TSDB_CODE_SUCCESS == code) {
646,011✔
4949
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WEND_SLOTID, pNode->vtbWindow.wendSlotId);
646,011✔
4950
        }
4951
        if (TSDB_CODE_SUCCESS == code) {
646,011✔
4952
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WDURATION_SLOTID, pNode->vtbWindow.wdurationSlotId);
646,011✔
4953
        }
4954
        if (TSDB_CODE_SUCCESS == code) {
646,011✔
4955
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_TARGETS, nodeListToMsg, pNode->vtbWindow.pTargets);
646,011✔
4956
        }
4957
        if (TSDB_CODE_SUCCESS == code) {
646,011✔
4958
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_IS_VSTB, pNode->vtbWindow.isVstb);
646,011✔
4959
        }
4960
        if (TSDB_CODE_SUCCESS == code) {
646,011✔
4961
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_STATE_EXTEND_OPTION, pNode->vtbWindow.extendOption);
646,011✔
4962
        }
4963
        // do not break
4964
      }
4965
      case DYN_QTYPE_VTB_TS_SCAN:
4966
      case DYN_QTYPE_VTB_INTERVAL:
4967
      case DYN_QTYPE_VTB_AGG:
4968
      case DYN_QTYPE_VTB_SCAN: {
4969
        code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS, pNode->vtbScan.scanAllCols);
4,589,745✔
4970
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4971
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID, pNode->vtbScan.suid);
4,589,745✔
4972
        }
4973
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4974
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME, pNode->vtbScan.dbName);
4,589,745✔
4975
        }
4976
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4977
          code = tlvEncodeCStr(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME, pNode->vtbScan.tbName);
4,589,745✔
4978
        }
4979
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4980
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID, pNode->vtbScan.accountId);
4,589,745✔
4981
        }
4982
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4983
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET, epSetToMsg, &pNode->vtbScan.mgmtEpSet);
4,589,745✔
4984
        }
4985
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4986
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS, nodeListToMsg, pNode->vtbScan.pScanCols);
4,589,745✔
4987
        }
4988
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4989
          code = tlvEncodeU64(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID, pNode->vtbScan.uid);
4,589,745✔
4990
        }
4991
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4992
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE, pNode->vtbScan.isSuperTable);
4,589,745✔
4993
        }
4994
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4995
          code = tlvEncodeI32(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION, pNode->vtbScan.rversion);
4,589,745✔
4996
        }
4997
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
4998
          code = tlvEncodeObj(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS, nodeListToMsg, pNode->vtbScan.pOrgVgIds);
4,589,745✔
4999
        }
5000
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
5001
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_BATCH_PROCESS_CHILD, pNode->vtbScan.batchProcessChild);
4,589,745✔
5002
        }
5003
        if (TSDB_CODE_SUCCESS == code) {
4,589,745✔
5004
          code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_HAS_PARTITION, pNode->vtbScan.hasPartition);
4,589,745✔
5005
        }
5006
        break;
4,589,745✔
5007
      }
5008
      default:
×
5009
        return TSDB_CODE_INVALID_PARA;
×
5010
    }
5011
  }
5012
  if (TSDB_CODE_SUCCESS == code) {
5,942,431✔
5013
    code = tlvEncodeBool(pEncoder, PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME, pNode->dynTbname);
5,942,431✔
5014
  }
5015
  return code;
5,942,431✔
5016
}
5017

5018
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
3,821,471✔
5019
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
3,821,471✔
5020

5021
  int32_t code = TSDB_CODE_SUCCESS;
3,821,471✔
5022
  STlv*   pTlv = NULL;
3,821,471✔
5023
  tlvForEach(pDecoder, pTlv, code) {
60,280,144✔
5024
    switch (pTlv->type) {
56,458,673✔
5025
      case PHY_DYN_QUERY_CTRL_CODE_BASE_NODE:
3,821,471✔
5026
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,821,471✔
5027
        break;
3,821,471✔
5028
      case PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE:
3,821,471✔
5029
        code = tlvDecodeEnum(pTlv, &pNode->qType, sizeof(pNode->qType));
3,821,471✔
5030
        break;
3,821,471✔
5031
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH:
1,352,576✔
5032
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.batchFetch);
1,352,576✔
5033
        break;
1,352,576✔
5034
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0:
1,352,576✔
5035
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[0], sizeof(pNode->stbJoin.vgSlot[0]));
1,352,576✔
5036
        break;
1,352,576✔
5037
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1:
1,352,576✔
5038
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.vgSlot[1], sizeof(pNode->stbJoin.vgSlot[1]));
1,352,576✔
5039
        break;
1,352,576✔
5040
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0:
1,352,576✔
5041
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[0], sizeof(pNode->stbJoin.uidSlot[0]));
1,352,576✔
5042
        break;
1,352,576✔
5043
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1:
1,352,576✔
5044
        code = tlvDecodeEnum(pTlv, &pNode->stbJoin.uidSlot[1], sizeof(pNode->stbJoin.uidSlot[1]));
1,352,576✔
5045
        break;      
1,352,576✔
5046
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0:
1,352,576✔
5047
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[0]);
1,352,576✔
5048
        break;
1,352,576✔
5049
      case PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1:
1,352,576✔
5050
        code = tlvDecodeBool(pTlv, &pNode->stbJoin.srcScan[1]);
1,352,576✔
5051
        break;
1,352,576✔
5052
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_ALL_COLS:
2,468,895✔
5053
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.scanAllCols);
2,468,895✔
5054
        break;
2,468,895✔
5055
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SUID:
2,468,895✔
5056
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.suid);
2,468,895✔
5057
        break;
2,468,895✔
5058
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_DBNAME:
2,468,895✔
5059
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.dbName, sizeof(pNode->vtbScan.dbName));
2,468,895✔
5060
        break;
2,468,895✔
5061
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_STBNAME:
2,468,895✔
5062
        code = tlvDecodeCStr(pTlv, pNode->vtbScan.tbName, sizeof(pNode->vtbScan.tbName));
2,468,895✔
5063
        break;
2,468,895✔
5064
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ACCOUNT_ID:
2,468,895✔
5065
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.accountId);
2,468,895✔
5066
        break;
2,468,895✔
5067
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_EP_SET:
2,468,895✔
5068
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->vtbScan.mgmtEpSet);
2,468,895✔
5069
        break;
2,468,895✔
5070
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_SCAN_COLS:
2,468,895✔
5071
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pScanCols);
2,468,895✔
5072
        break;
2,468,895✔
5073
      case PHY_DYN_QUERY_CTRL_CODE_DYN_TBNAME:
3,821,471✔
5074
        code = tlvDecodeBool(pTlv, &pNode->dynTbname);
3,821,471✔
5075
        break;
3,821,471✔
5076
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_UID:
2,468,895✔
5077
        code = tlvDecodeU64(pTlv, &pNode->vtbScan.uid);
2,468,895✔
5078
        break;
2,468,895✔
5079
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_IS_SUPER_TABLE:
2,468,895✔
5080
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.isSuperTable);
2,468,895✔
5081
        break;
2,468,895✔
5082
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_RVERSION:
2,468,895✔
5083
        code = tlvDecodeI32(pTlv, &pNode->vtbScan.rversion);
2,468,895✔
5084
        break;
2,468,895✔
5085
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_ORG_VG_IDS:
2,088,900✔
5086
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbScan.pOrgVgIds);
2,088,900✔
5087
        break;
2,088,900✔
5088
      case PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WSTART_SLOTID:
635,098✔
5089
        code = tlvDecodeI32(pTlv, &pNode->vtbWindow.wstartSlotId);
635,098✔
5090
        break;
635,098✔
5091
      case PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WEND_SLOTID:
635,098✔
5092
        code = tlvDecodeI32(pTlv, &pNode->vtbWindow.wendSlotId);
635,098✔
5093
        break;
635,098✔
5094
      case PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_WDURATION_SLOTID:
635,098✔
5095
        code = tlvDecodeI32(pTlv, &pNode->vtbWindow.wdurationSlotId);
635,098✔
5096
        break;
635,098✔
5097
      case PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_TARGETS:
635,098✔
5098
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->vtbWindow.pTargets);
635,098✔
5099
        break;
635,098✔
5100
      case PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_IS_VSTB:
635,098✔
5101
        code = tlvDecodeBool(pTlv, &pNode->vtbWindow.isVstb);
635,098✔
5102
        break;
635,098✔
5103
      case PHY_DYN_QUERY_CTRL_CODE_VTB_WINDOW_STATE_EXTEND_OPTION:
635,098✔
5104
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->vtbWindow.extendOption);
635,098✔
5105
        break;
635,098✔
5106
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_BATCH_PROCESS_CHILD:
2,468,895✔
5107
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.batchProcessChild);
2,468,895✔
5108
        break;
2,468,895✔
5109
      case PHY_DYN_QUERY_CTRL_CODE_VTB_SCAN_HAS_PARTITION:
2,468,895✔
5110
        code = tlvDecodeBool(pTlv, &pNode->vtbScan.hasPartition);
2,468,895✔
5111
        break;
2,468,895✔
5112
      default:
×
5113
        break;
×
5114
    }
5115
  }
5116

5117
  return code;
3,821,471✔
5118
}
5119

5120

5121

5122
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
5123

5124
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
559,995,713✔
5125
  const SSubplanId* pNode = (const SSubplanId*)pObj;
559,995,713✔
5126

5127
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
559,995,713✔
5128
  if (TSDB_CODE_SUCCESS == code) {
560,060,048✔
5129
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
560,075,643✔
5130
  }
5131
  if (TSDB_CODE_SUCCESS == code) {
559,788,168✔
5132
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
559,731,516✔
5133
  }
5134

5135
  return code;
560,150,058✔
5136
}
5137

5138
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
5139
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
5140

5141
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
5142
  if (TSDB_CODE_SUCCESS == code) {
×
5143
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
5144
  }
5145
  if (TSDB_CODE_SUCCESS == code) {
×
5146
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
5147
  }
5148

5149
  return code;
×
5150
}
5151

5152
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
399,510,857✔
5153
  SSubplanId* pNode = (SSubplanId*)pObj;
399,510,857✔
5154

5155
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
399,510,857✔
5156
  if (TSDB_CODE_SUCCESS == code) {
399,452,557✔
5157
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
399,458,767✔
5158
  }
5159
  if (TSDB_CODE_SUCCESS == code) {
399,534,083✔
5160
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
399,534,083✔
5161
  }
5162

5163
  return code;
399,551,473✔
5164
}
5165

5166
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
5167
  SSubplanId* pNode = (SSubplanId*)pObj;
×
5168

5169
  int32_t code = TSDB_CODE_SUCCESS;
×
5170
  STlv*   pTlv = NULL;
×
5171
  tlvForEach(pDecoder, pTlv, code) {
×
5172
    switch (pTlv->type) {
×
5173
      case SUBPLAN_ID_CODE_QUERY_ID:
×
5174
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
5175
        break;
×
5176
      case SUBPLAN_ID_CODE_GROUP_ID:
×
5177
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
5178
        break;
×
5179
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
5180
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
5181
        break;
×
5182
      default:
×
5183
        break;
×
5184
    }
5185
  }
5186

5187
  return code;
×
5188
}
5189

5190
enum {
5191
  SUBPLAN_CODE_INLINE_ATTRS = 1,
5192
  SUBPLAN_CODE_ROOT_NODE,
5193
  SUBPLAN_CODE_DATA_SINK,
5194
  SUBPLAN_CODE_TAG_COND,
5195
  SUBPLAN_CODE_TAG_INDEX_COND
5196
};
5197

5198
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
559,976,212✔
5199
  const SSubplan* pNode = (const SSubplan*)pObj;
559,976,212✔
5200

5201
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
559,976,212✔
5202
  if (TSDB_CODE_SUCCESS == code) {
560,146,349✔
5203
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
559,820,498✔
5204
  }
5205
  if (TSDB_CODE_SUCCESS == code) {
560,141,098✔
5206
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
560,103,630✔
5207
  }
5208
  if (TSDB_CODE_SUCCESS == code) {
560,256,956✔
5209
    code = tlvEncodeValueI32(pEncoder, pNode->level);
560,227,701✔
5210
  }
5211
  if (TSDB_CODE_SUCCESS == code) {
560,297,277✔
5212
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
560,273,804✔
5213
  }
5214
  if (TSDB_CODE_SUCCESS == code) {
560,049,231✔
5215
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
560,033,682✔
5216
  }
5217
  if (TSDB_CODE_SUCCESS == code) {
560,426,772✔
5218
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
560,371,026✔
5219
  }
5220
  if (TSDB_CODE_SUCCESS == code) {
560,193,099✔
5221
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
560,138,109✔
5222
  }
5223
  if (TSDB_CODE_SUCCESS == code) {
560,352,276✔
5224
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
560,309,762✔
5225
  }
5226
  if (TSDB_CODE_SUCCESS == code) {
560,359,672✔
5227
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
560,320,207✔
5228
  }
5229
  if (TSDB_CODE_SUCCESS == code) {
560,299,926✔
5230
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
560,214,591✔
5231
  }
5232
  if (TSDB_CODE_SUCCESS == code) {
560,434,973✔
5233
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
560,367,743✔
5234
  }
5235
  if (TSDB_CODE_SUCCESS == code) {
560,369,700✔
5236
    code = tlvEncodeValueBool(pEncoder, pNode->processOneBlock);
560,316,883✔
5237
  }
5238
  if (TSDB_CODE_SUCCESS == code) {
560,437,974✔
5239
    code = tlvEncodeValueBool(pEncoder, pNode->dynTbname);
560,406,887✔
5240
  }
5241
  return code;
560,294,256✔
5242
}
5243

5244
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
560,119,045✔
5245
  const SSubplan* pNode = (const SSubplan*)pObj;
560,119,045✔
5246

5247
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
560,119,045✔
5248
  if (TSDB_CODE_SUCCESS == code) {
559,336,509✔
5249
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
559,342,891✔
5250
  }
5251
  if (TSDB_CODE_SUCCESS == code) {
560,306,314✔
5252
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
560,326,924✔
5253
  }
5254
  if (TSDB_CODE_SUCCESS == code) {
560,487,601✔
5255
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
560,510,817✔
5256
  }
5257
  if (TSDB_CODE_SUCCESS == code) {
559,997,949✔
5258
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
560,018,185✔
5259
  }
5260

5261
  return code;
560,105,657✔
5262
}
5263

5264
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
399,516,331✔
5265
  SSubplan* pNode = (SSubplan*)pObj;
399,516,331✔
5266

5267
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
399,516,331✔
5268
  if (TSDB_CODE_SUCCESS == code) {
399,549,661✔
5269
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
399,549,661✔
5270
  }
5271
  if (TSDB_CODE_SUCCESS == code) {
399,434,954✔
5272
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
399,434,954✔
5273
  }
5274
  if (TSDB_CODE_SUCCESS == code) {
399,577,962✔
5275
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
399,577,962✔
5276
  }
5277
  if (TSDB_CODE_SUCCESS == code) {
399,579,097✔
5278
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
399,579,097✔
5279
  }
5280
  if (TSDB_CODE_SUCCESS == code) {
399,558,085✔
5281
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
399,558,085✔
5282
  }
5283
  if (TSDB_CODE_SUCCESS == code) {
399,588,059✔
5284
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
399,588,059✔
5285
  }
5286
  if (TSDB_CODE_SUCCESS == code) {
399,477,762✔
5287
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
399,477,762✔
5288
  }
5289
  if (TSDB_CODE_SUCCESS == code) {
399,477,731✔
5290
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
399,477,731✔
5291
  }
5292
  if (TSDB_CODE_SUCCESS == code) {
399,582,823✔
5293
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
399,582,823✔
5294
  }
5295
  if (TSDB_CODE_SUCCESS == code) {
399,581,164✔
5296
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
399,581,164✔
5297
  }
5298
  if (TSDB_CODE_SUCCESS == code) {
399,580,334✔
5299
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
399,580,334✔
5300
  }
5301
  if (TSDB_CODE_SUCCESS == code) {
399,585,118✔
5302
    code = tlvDecodeValueBool(pDecoder, &pNode->processOneBlock);
399,585,118✔
5303
  }
5304
  if (TSDB_CODE_SUCCESS == code) {
399,587,595✔
5305
    code = tlvDecodeValueBool(pDecoder, &pNode->dynTbname);
399,587,595✔
5306
  }
5307
  return code;
399,591,292✔
5308
}
5309

5310
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
399,519,588✔
5311
  SSubplan* pNode = (SSubplan*)pObj;
399,519,588✔
5312

5313
  int32_t code = TSDB_CODE_SUCCESS;
399,519,588✔
5314
  STlv*   pTlv = NULL;
399,519,588✔
5315
  tlvForEach(pDecoder, pTlv, code) {
1,620,210,263✔
5316
    switch (pTlv->type) {
1,220,660,752✔
5317
      case SUBPLAN_CODE_INLINE_ATTRS:
399,499,812✔
5318
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
399,499,812✔
5319
        break;
399,583,025✔
5320
      case SUBPLAN_CODE_ROOT_NODE:
399,601,936✔
5321
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
399,601,936✔
5322
        break;
399,550,752✔
5323
      case SUBPLAN_CODE_DATA_SINK:
399,591,798✔
5324
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
399,591,798✔
5325
        break;
399,577,086✔
5326
      case SUBPLAN_CODE_TAG_COND:
16,935,104✔
5327
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
16,935,104✔
5328
        break;
16,930,277✔
5329
      case SUBPLAN_CODE_TAG_INDEX_COND:
5,066,749✔
5330
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
5,066,749✔
5331
        break;
5,021,568✔
5332
      default:
×
5333
        break;
×
5334
    }
5335
  }
5336

5337
  return code;
399,756,588✔
5338
}
5339

5340
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
5341

5342
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,212✔
5343
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
1,212✔
5344

5345
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
1,212✔
5346
  if (TSDB_CODE_SUCCESS == code) {
1,212✔
5347
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
1,212✔
5348
  }
5349

5350
  return code;
1,212✔
5351
}
5352

5353
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,212✔
5354
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
1,212✔
5355

5356
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
1,212✔
5357
  if (TSDB_CODE_SUCCESS == code) {
1,212✔
5358
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
1,212✔
5359
  }
5360

5361
  return code;
1,212✔
5362
}
5363

5364
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
606✔
5365
  SQueryPlan* pNode = (SQueryPlan*)pObj;
606✔
5366

5367
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
606✔
5368
  if (TSDB_CODE_SUCCESS == code) {
606✔
5369
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
606✔
5370
  }
5371

5372
  return code;
606✔
5373
}
5374

5375
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
606✔
5376
  SQueryPlan* pNode = (SQueryPlan*)pObj;
606✔
5377

5378
  int32_t code = TSDB_CODE_SUCCESS;
606✔
5379
  STlv*   pTlv = NULL;
606✔
5380
  tlvForEach(pDecoder, pTlv, code) {
1,818✔
5381
    switch (pTlv->type) {
1,212✔
5382
      case QUERY_PLAN_CODE_INLINE_ATTRS:
606✔
5383
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
606✔
5384
        break;
606✔
5385
      case QUERY_PLAN_CODE_SUBPLANS:
606✔
5386
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
606✔
5387
        break;
606✔
5388
      default:
×
5389
        break;
×
5390
    }
5391
  }
5392

5393
  return code;
606✔
5394
}
5395

5396
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
5397
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
5398
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
5399
  switch (nodeType(pObj)) {
2,147,483,647✔
5400
    case QUERY_NODE_COLUMN:
2,147,483,647✔
5401
      code = columnNodeToMsg(pObj, pEncoder);
2,147,483,647✔
5402
      break;
2,147,483,647✔
5403
    case QUERY_NODE_VALUE:
518,685,720✔
5404
      code = valueNodeToMsg(pObj, pEncoder);
518,685,720✔
5405
      break;
518,697,807✔
5406
    case QUERY_NODE_OPERATOR:
353,525,725✔
5407
      code = operatorNodeToMsg(pObj, pEncoder);
353,525,725✔
5408
      break;
353,456,915✔
5409
    case QUERY_NODE_LOGIC_CONDITION:
54,082,884✔
5410
      code = logicConditionNodeToMsg(pObj, pEncoder);
54,082,884✔
5411
      break;
54,091,554✔
5412
    case QUERY_NODE_FUNCTION:
750,690,373✔
5413
      code = functionNodeToMsg(pObj, pEncoder);
750,690,373✔
5414
      break;
750,548,710✔
5415
    case QUERY_NODE_ORDER_BY_EXPR:
100,458,327✔
5416
      code = orderByExprNodeToMsg(pObj, pEncoder);
100,458,327✔
5417
      break;
100,468,357✔
5418
    case QUERY_NODE_LIMIT:
44,170,335✔
5419
      code = limitNodeToMsg(pObj, pEncoder);
44,170,335✔
5420
      break;
44,170,013✔
5421
    case QUERY_NODE_NODE_LIST:
12,121,486✔
5422
      code = nodeListNodeToMsg(pObj, pEncoder);
12,121,486✔
5423
      break;
12,129,394✔
5424
    case QUERY_NODE_TARGET:
2,147,483,647✔
5425
      code = targetNodeToMsg(pObj, pEncoder);
2,147,483,647✔
5426
      break;
2,147,483,647✔
5427
    case QUERY_NODE_TIME_RANGE:
×
5428
      code = timeRangeNodeToMsg(pObj, pEncoder);
×
5429
      break;
×
5430
    case QUERY_NODE_DATABLOCK_DESC:
1,727,213,831✔
5431
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
1,727,213,831✔
5432
      break;
1,728,755,288✔
5433
    case QUERY_NODE_SLOT_DESC:
2,147,483,647✔
5434
      code = slotDescNodeToMsg(pObj, pEncoder);
2,147,483,647✔
5435
      break;
2,147,483,647✔
5436
    case QUERY_NODE_DOWNSTREAM_SOURCE:
268,849,073✔
5437
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
268,849,073✔
5438
      break;
268,845,695✔
5439
    case QUERY_NODE_LEFT_VALUE:
8,151,871✔
5440
      break;
8,151,871✔
5441
    case QUERY_NODE_WHEN_THEN:
7,724,428✔
5442
      code = whenThenNodeToMsg(pObj, pEncoder);
7,724,428✔
5443
      break;
7,724,333✔
5444
    case QUERY_NODE_CASE_WHEN:
7,474,310✔
5445
      code = caseWhenNodeToMsg(pObj, pEncoder);
7,474,310✔
5446
      break;
7,474,662✔
5447
    case QUERY_NODE_WINDOW_OFFSET:
366,819✔
5448
      code = windowOffsetNodeToMsg(pObj, pEncoder);
366,819✔
5449
      break;
366,819✔
5450
    case QUERY_NODE_REMOTE_VALUE:
62,191,868✔
5451
      code = remoteValueNodeToMsg(pObj, pEncoder);
62,191,868✔
5452
      break;
62,232,387✔
5453
    case QUERY_NODE_REMOTE_VALUE_LIST:
19,554,394✔
5454
      code = remoteValueListNodeToMsg(pObj, pEncoder);
19,554,394✔
5455
      break;
19,557,758✔
5456
    case QUERY_NODE_REMOTE_ROW:
25,233,709✔
5457
      code = remoteRowNodeToMsg(pObj, pEncoder);
25,233,709✔
5458
      break;
25,234,406✔
5459
    case QUERY_NODE_REMOTE_ZERO_ROWS:
1,361,179✔
5460
      code = remoteZeroRowsNodeToMsg(pObj, pEncoder);
1,361,179✔
5461
      break;
1,362,659✔
5462
    case QUERY_NODE_REMOTE_TABLE:
568,637✔
5463
      code = remoteTableNodeToMsg(pObj, pEncoder);
568,637✔
5464
      break;
569,529✔
5465
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
15,645,127✔
5466
      code = physiTagScanNodeToMsg(pObj, pEncoder);
15,645,127✔
5467
      break;
15,615,552✔
5468
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
6,294✔
5469
      code = physiScanNodeToMsg(pObj, pEncoder);
6,294✔
5470
      break;
6,294✔
5471
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
1,089,802✔
5472
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5473
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
1,089,802✔
5474
      break;
1,093,678✔
5475
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
403,462,242✔
5476
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5477
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5478
      code = physiTableScanNodeToMsg(pObj, pEncoder);
403,462,242✔
5479
      break;
402,992,844✔
5480
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
42,619,221✔
5481
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
42,619,221✔
5482
      break;
42,638,224✔
5483
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
222,808,661✔
5484
      code = physiProjectNodeToMsg(pObj, pEncoder);
222,808,661✔
5485
      break;
222,847,044✔
5486
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
17,311,733✔
5487
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
17,311,733✔
5488
      break;
17,311,733✔
5489
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
1,353,578✔
5490
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
1,353,578✔
5491
      break;
1,353,578✔
5492
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
174,525,269✔
5493
      code = physiAggNodeToMsg(pObj, pEncoder);
174,525,269✔
5494
      break;
174,528,134✔
5495
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
153,535,933✔
5496
      code = physiExchangeNodeToMsg(pObj, pEncoder);
153,535,933✔
5497
      break;
153,533,676✔
5498
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
20,349,272✔
5499
      code = physiMergeNodeToMsg(pObj, pEncoder);
20,349,272✔
5500
      break;
20,349,197✔
5501
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
57,690,210✔
5502
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5503
      code = physiSortNodeToMsg(pObj, pEncoder);
57,690,210✔
5504
      break;
57,714,862✔
5505
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
14,449,681✔
5506
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5507
      code = physiIntervalNodeToMsg(pObj, pEncoder);
14,449,681✔
5508
      break;
14,445,406✔
5509
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
645,315✔
5510
      code = physiFillNodeToMsg(pObj, pEncoder);
645,315✔
5511
      break;
646,572✔
5512
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
2,522,125✔
5513
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
2,522,125✔
5514
      break;
2,522,125✔
5515
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
1,754,901✔
5516
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5517
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5518
      code = physiExternalWindowNodeToMsg(pObj, pEncoder);
1,754,901✔
5519
      break;
1,754,462✔
5520
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
2,724,225✔
5521
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
2,724,225✔
5522
      break;
2,724,405✔
5523
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
1,841,801✔
5524
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
1,841,801✔
5525
      break;
1,842,279✔
5526
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
1,697,452✔
5527
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
1,697,452✔
5528
      break;
1,697,308✔
5529
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
5530
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
5531
      break;
×
5532
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
11,306,822✔
5533
      code = physiPartitionNodeToMsg(pObj, pEncoder);
11,306,822✔
5534
      break;
11,317,107✔
5535
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
3,523,629✔
5536
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
3,523,629✔
5537
      break;
3,524,857✔
5538
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
3,787,901✔
5539
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
3,787,901✔
5540
      break;
3,789,302✔
5541
    case QUERY_NODE_PHYSICAL_PLAN_ANALYSIS_FUNC:
×
5542
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
5543
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
5544
      break;
×
5545
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
557,051,884✔
5546
      code = physiDispatchNodeToMsg(pObj, pEncoder);
557,051,884✔
5547
      break;
557,440,210✔
5548
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
562,800✔
5549
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
562,800✔
5550
      break;
562,800✔
5551
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
2,000,487✔
5552
      code = physiDeleteNodeToMsg(pObj, pEncoder);
2,000,487✔
5553
      break;
2,000,487✔
5554
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
1,352,686✔
5555
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
1,352,686✔
5556
      break;
1,352,686✔
5557
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
5,942,431✔
5558
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
5,942,431✔
5559
      break;
5,942,431✔
5560
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
4,825,411✔
5561
      code = physiVirtualTableScanNodeToMsg(pObj, pEncoder);
4,825,411✔
5562
      break;
4,825,411✔
5563
    case QUERY_NODE_PHYSICAL_SUBPLAN:
560,140,867✔
5564
      code = subplanToMsg(pObj, pEncoder);
560,140,867✔
5565
      break;
559,844,183✔
5566
    case QUERY_NODE_PHYSICAL_PLAN:
1,212✔
5567
      code = queryPlanToMsg(pObj, pEncoder);
1,212✔
5568
      break;
1,212✔
5569
    default:
×
5570
      break;
×
5571
  }
5572
  if (TSDB_CODE_SUCCESS != code) {
2,147,483,647✔
5573
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
5574
  }
5575
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
5576
  return code;
2,147,483,647✔
5577
}
5578

5579
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
2,147,483,647✔
5580
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
5581
  switch (nodeType(pObj)) {
2,147,483,647✔
5582
    case QUERY_NODE_COLUMN:
2,147,483,647✔
5583
      code = msgToColumnNode(pDecoder, pObj);
2,147,483,647✔
5584
      break;
2,147,483,647✔
5585
    case QUERY_NODE_VALUE:
435,071,607✔
5586
      code = msgToValueNode(pDecoder, pObj);
435,071,607✔
5587
      break;
435,019,679✔
5588
    case QUERY_NODE_OPERATOR:
292,674,822✔
5589
      code = msgToOperatorNode(pDecoder, pObj);
292,674,822✔
5590
      break;
292,678,207✔
5591
    case QUERY_NODE_LOGIC_CONDITION:
50,028,026✔
5592
      code = msgToLogicConditionNode(pDecoder, pObj);
50,028,026✔
5593
      break;
50,031,166✔
5594
    case QUERY_NODE_FUNCTION:
615,834,092✔
5595
      code = msgToFunctionNode(pDecoder, pObj);
615,834,092✔
5596
      break;
615,826,854✔
5597
    case QUERY_NODE_ORDER_BY_EXPR:
66,932,606✔
5598
      code = msgToOrderByExprNode(pDecoder, pObj);
66,932,606✔
5599
      break;
66,936,083✔
5600
    case QUERY_NODE_LIMIT:
37,523,987✔
5601
      code = msgToLimitNode(pDecoder, pObj);
37,523,987✔
5602
      break;
37,525,088✔
5603
    case QUERY_NODE_NODE_LIST:
8,310,412✔
5604
      code = msgToNodeListNode(pDecoder, pObj);
8,310,412✔
5605
      break;
8,309,943✔
5606
    case QUERY_NODE_TARGET:
2,147,483,647✔
5607
      code = msgToTargetNode(pDecoder, pObj);
2,147,483,647✔
5608
      break;
2,147,483,647✔
5609
    case QUERY_NODE_TIME_RANGE:
×
5610
      code = msgToTimeRangeNode(pDecoder, pObj);
×
5611
      break;
×
5612
    case QUERY_NODE_DATABLOCK_DESC:
1,242,698,137✔
5613
      code = msgToDataBlockDescNode(pDecoder, pObj);
1,242,698,137✔
5614
      break;
1,242,748,823✔
5615
    case QUERY_NODE_SLOT_DESC:
2,147,483,647✔
5616
      code = msgToSlotDescNode(pDecoder, pObj);
2,147,483,647✔
5617
      break;
2,147,483,647✔
5618
    case QUERY_NODE_DOWNSTREAM_SOURCE:
200,798,435✔
5619
      code = msgToDownstreamSourceNode(pDecoder, pObj);
200,798,435✔
5620
    case QUERY_NODE_LEFT_VALUE:
208,934,471✔
5621
      break;
208,934,471✔
5622
    case QUERY_NODE_WHEN_THEN:
2,068,841✔
5623
      code = msgToWhenThenNode(pDecoder, pObj);
2,068,841✔
5624
      break;
2,068,841✔
5625
    case QUERY_NODE_CASE_WHEN:
1,819,715✔
5626
      code = msgToCaseWhenNode(pDecoder, pObj);
1,819,715✔
5627
      break;
1,819,715✔
5628
    case QUERY_NODE_WINDOW_OFFSET:
368,936✔
5629
      code = msgToWindowOffsetNode(pDecoder, pObj);
368,936✔
5630
      break;
368,936✔
5631
    case QUERY_NODE_REMOTE_VALUE:
5,348,270✔
5632
      code = msgToRemoteValueNode(pDecoder, pObj);
5,348,270✔
5633
      break;
5,348,879✔
5634
    case QUERY_NODE_REMOTE_VALUE_LIST:
13,076,257✔
5635
      code = msgToRemoteValueListNode(pDecoder, pObj);
13,076,257✔
5636
      break;
13,076,257✔
5637
    case QUERY_NODE_REMOTE_ROW:
23,735,308✔
5638
      code = msgToRemoteRowNode(pDecoder, pObj);
23,735,308✔
5639
      break;
23,735,308✔
5640
    case QUERY_NODE_REMOTE_ZERO_ROWS:
420,208✔
5641
      code = msgToRemoteZeroRowsNode(pDecoder, pObj);
420,208✔
5642
      break;
420,208✔
5643
    case QUERY_NODE_REMOTE_TABLE:
565,748✔
5644
      code = msgToRemoteTableNode(pDecoder, pObj);
565,748✔
5645
      break;
565,748✔
5646
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
8,812,638✔
5647
      code = msgToPhysiTagScanNode(pDecoder, pObj);
8,812,638✔
5648
      break;
8,812,977✔
5649
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
6,298✔
5650
      code = msgToPhysiScanNode(pDecoder, pObj);
6,298✔
5651
      break;
6,298✔
5652
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
1,091,141✔
5653
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
5654
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
1,091,141✔
5655
      break;
1,091,617✔
5656
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
294,624,197✔
5657
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
5658
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
5659
      code = msgToPhysiTableScanNode(pDecoder, pObj);
294,624,197✔
5660
      break;
294,624,677✔
5661
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
25,474,232✔
5662
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
25,474,232✔
5663
      break;
25,469,890✔
5664
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
158,643,054✔
5665
      code = msgToPhysiProjectNode(pDecoder, pObj);
158,643,054✔
5666
      break;
158,656,221✔
5667
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
14,352,065✔
5668
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
14,352,065✔
5669
      break;
14,352,065✔
5670
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
1,353,468✔
5671
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
1,353,468✔
5672
      break;
1,353,468✔
5673
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
136,359,082✔
5674
      code = msgToPhysiAggNode(pDecoder, pObj);
136,359,082✔
5675
      break;
136,364,674✔
5676
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
119,133,378✔
5677
      code = msgToPhysiExchangeNode(pDecoder, pObj);
119,133,378✔
5678
      break;
119,133,381✔
5679
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
15,561,231✔
5680
      code = msgToPhysiMergeNode(pDecoder, pObj);
15,561,231✔
5681
      break;
15,561,811✔
5682
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
36,267,215✔
5683
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
5684
      code = msgToPhysiSortNode(pDecoder, pObj);
36,267,215✔
5685
      break;
36,271,853✔
5686
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
6,273,462✔
5687
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
5688
      code = msgToPhysiIntervalNode(pDecoder, pObj);
6,273,462✔
5689
      break;
6,273,868✔
5690
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
639,290✔
5691
      code = msgToPhysiFillNode(pDecoder, pObj);
639,290✔
5692
      break;
639,290✔
5693
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
636,661✔
5694
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
636,661✔
5695
      break;
636,661✔
5696
    case QUERY_NODE_PHYSICAL_PLAN_EXTERNAL_WINDOW:
1,734,456✔
5697
    case QUERY_NODE_PHYSICAL_PLAN_HASH_EXTERNAL:
5698
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_EXTERNAL:
5699
      code = msgToPhysiExternalWindowNode(pDecoder, pObj);
1,734,456✔
5700
      break;
1,734,456✔
5701
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
1,298,972✔
5702
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
1,298,972✔
5703
      break;
1,298,972✔
5704
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
356,123✔
5705
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
356,123✔
5706
      break;
356,123✔
5707
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
291,136✔
5708
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
291,136✔
5709
      break;
291,136✔
5710
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
5711
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
5712
      break;
×
5713
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
3,336,359✔
5714
      code = msgToPhysiPartitionNode(pDecoder, pObj);
3,336,359✔
5715
      break;
3,339,489✔
5716
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
3,494,661✔
5717
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
3,494,661✔
5718
      break;
3,494,661✔
5719
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
3,777,547✔
5720
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
3,777,547✔
5721
      break;
3,777,547✔
5722
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
5723
    case QUERY_NODE_PHYSICAL_PLAN_ANALYSIS_FUNC:
5724
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
5725
      break;
×
5726
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
396,974,481✔
5727
      code = msgToPhysiDispatchNode(pDecoder, pObj);
396,974,481✔
5728
      break;
396,997,226✔
5729
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
529,764✔
5730
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
529,764✔
5731
      break;
529,764✔
5732
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
1,997,978✔
5733
      code = msgToPhysiDeleteNode(pDecoder, pObj);
1,997,978✔
5734
      break;
1,997,978✔
5735
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
1,352,576✔
5736
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
1,352,576✔
5737
      break;
1,352,576✔
5738
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
3,821,471✔
5739
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
3,821,471✔
5740
      break;
3,821,471✔
5741
    case QUERY_NODE_PHYSICAL_PLAN_VIRTUAL_TABLE_SCAN:
4,366,915✔
5742
      code = msgToPhysiVirtualTableScanNode(pDecoder, pObj);
4,366,915✔
5743
      break;
4,366,915✔
5744
    case QUERY_NODE_PHYSICAL_SUBPLAN:
399,519,711✔
5745
      code = msgToSubplan(pDecoder, pObj);
399,519,711✔
5746
      break;
399,548,070✔
5747
    case QUERY_NODE_PHYSICAL_PLAN:
606✔
5748
      code = msgToQueryPlan(pDecoder, pObj);
606✔
5749
      break;
606✔
5750
    default:
×
5751
      break;
×
5752
  }
5753
  if (TSDB_CODE_SUCCESS != code) {
2,147,483,647✔
5754
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
5755
  }
5756
  return code;
2,147,483,647✔
5757
}
5758

5759
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
5760
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
2,147,483,647✔
5761
}
5762

5763
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
2,147,483,647✔
5764
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
2,147,483,647✔
5765
}
5766

5767
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
2,147,483,647✔
5768
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
2,147,483,647✔
5769
  return msgToNode(&decoder, pObj);
2,147,483,647✔
5770
}
5771

5772
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,147,483,647✔
5773
  const SNodeList* pList = (const SNodeList*)pObj;
2,147,483,647✔
5774

5775
  SNode* pNode = NULL;
2,147,483,647✔
5776
  FOREACH(pNode, pList) {
2,147,483,647✔
5777
    int32_t code = nodeToMsg(pNode, pEncoder);
2,147,483,647✔
5778
    if (TSDB_CODE_SUCCESS != code) {
2,147,483,647✔
5779
      return code;
×
5780
    }
5781
  }
5782

5783
  return TSDB_CODE_SUCCESS;
2,147,483,647✔
5784
}
5785
enum {
5786
  SARRAY_CODE_CAPACITY = 1,
5787
  SARRAY_CODE_ELEMSIZE,
5788
  SARRAY_CODE_SIZE,
5789
  SARRAY_CODE_PDATA
5790
};
5791

5792
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder) {
153,531,728✔
5793
  const SArray* pArray = (const SArray*)pObj;
153,531,728✔
5794
  int32_t code = TSDB_CODE_SUCCESS;
153,531,728✔
5795
  if (TSDB_CODE_SUCCESS == code) {
153,531,728✔
5796
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_CAPACITY, pArray->capacity);
153,532,810✔
5797
  }
5798
  if (TSDB_CODE_SUCCESS == code) {
153,532,037✔
5799
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_ELEMSIZE, pArray->elemSize);
153,532,711✔
5800
  }
5801
  if (TSDB_CODE_SUCCESS == code) {
153,532,756✔
5802
    code = tlvEncodeI32(pEncoder, SARRAY_CODE_SIZE, pArray->size);
153,533,600✔
5803
  }
5804
  if (TSDB_CODE_SUCCESS == code && pArray->capacity * pArray->elemSize > 0 && pArray->pData != NULL) {
153,534,975✔
5805
    code = tlvEncodeBinary(pEncoder, SARRAY_CODE_PDATA, pArray->pData, pArray->capacity * pArray->elemSize);
153,533,128✔
5806
  }
5807
  return code;
153,535,692✔
5808
}
5809

5810

5811
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
2,147,483,647✔
5812
  SNodeList* pList = NULL;
2,147,483,647✔
5813
  int32_t code = TSDB_CODE_SUCCESS;
2,147,483,647✔
5814
  code = nodesMakeList(&pList);
2,147,483,647✔
5815

5816
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
2,147,483,647✔
5817
    SNode* pNode = NULL;
2,147,483,647✔
5818
    code = msgToNode(pDecoder, (void**)&pNode);
2,147,483,647✔
5819
    if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5820
      code = nodesListAppend(pList, pNode);
2,147,483,647✔
5821
    }
5822
  }
5823
  if (TSDB_CODE_SUCCESS == code) {
2,147,483,647✔
5824
    *pObj = pList;
2,147,483,647✔
5825
  } else {
5826
    nodesDestroyList(pList);
×
5827
  }
5828
  return code;
2,147,483,647✔
5829
}
5830

5831
static int32_t msgToSArray(STlv* pTlv, void** pObj){
119,132,929✔
5832
  SArray* pArray = NULL;
119,132,929✔
5833
  uint32_t capacity = 0;
119,132,929✔
5834
  uint32_t elemSize = 0;
119,132,929✔
5835
  uint32_t actualSize;
119,131,748✔
5836
  int32_t decodeFieldNum = 0;;
119,132,929✔
5837
  int32_t code = TSDB_CODE_SUCCESS;
119,132,929✔
5838
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
119,132,929✔
5839
  STlv*   pTlvTemp = NULL;
119,132,929✔
5840
  STlv*   pDataTlv = NULL;
119,133,509✔
5841

5842
  tlvForEach(&decoder, pTlvTemp, code) {
595,662,418✔
5843
    switch (pTlvTemp->type) {
476,532,587✔
5844
      case SARRAY_CODE_CAPACITY:
119,131,750✔
5845
        code = tlvDecodeI32(pTlvTemp, &capacity);
119,131,750✔
5846
        break;
119,131,913✔
5847
      case SARRAY_CODE_ELEMSIZE:
119,133,509✔
5848
        code = tlvDecodeI32(pTlvTemp, &elemSize);
119,133,509✔
5849
        break;
119,133,509✔
5850
      case SARRAY_CODE_SIZE:
119,134,399✔
5851
        code = tlvDecodeI32(pTlvTemp, &actualSize);
119,134,399✔
5852
        break;
119,133,509✔
5853
      case SARRAY_CODE_PDATA:
119,132,929✔
5854
        if (decodeFieldNum < 3) {
119,132,929✔
5855
          pDataTlv = pTlvTemp;
×
5856
          break;
×
5857
        }
5858
        pArray = taosArrayInit(capacity, elemSize);
119,132,929✔
5859
        if (NULL == pArray) {
119,133,378✔
5860
          return terrno;
×
5861
        }
5862
        pArray->size = actualSize;
119,133,378✔
5863
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
119,132,189✔
5864
          taosArrayDestroy(pArray);
1,584✔
5865
          return TSDB_CODE_OUT_OF_MEMORY;
×
5866
        }
5867
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
119,130,605✔
5868
        break;
119,129,978✔
5869
      default:
×
5870
        break;
×
5871
    }
5872
    decodeFieldNum++;
476,528,909✔
5873
  }
5874

5875
  if (pDataTlv != NULL) {
119,129,078✔
5876
    pArray = taosArrayInit(capacity, elemSize);
×
5877
    if (NULL == pArray) {
×
5878
      return terrno;
×
5879
    }
5880
    pArray->size = actualSize;
×
5881
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
5882
      taosArrayDestroy(pArray);
×
5883
      return TSDB_CODE_OUT_OF_MEMORY;
×
5884
    }
5885
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
5886
  }
5887
  *pObj = pArray;
119,129,078✔
5888
  return code;
119,131,750✔
5889
}
5890

5891

5892
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
2,147,483,647✔
5893
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
2,147,483,647✔
5894
  return msgToNodeList(&decoder, pObj);
2,147,483,647✔
5895
}
5896

5897
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
560,143,494✔
5898
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
560,143,494✔
5899
    terrno = TSDB_CODE_FAILED;
48✔
5900
    return TSDB_CODE_FAILED;
×
5901
  }
5902

5903
  STlvEncoder encoder;
430,999,371✔
5904
  int32_t     code = initTlvEncoder(&encoder);
560,489,597✔
5905
  if (TSDB_CODE_SUCCESS == code) {
559,518,593✔
5906
    code = nodeToMsg(pNode, &encoder);
559,636,103✔
5907
  }
5908
  if (TSDB_CODE_SUCCESS == code) {
560,282,162✔
5909
    endTlvEncode(&encoder, pMsg, pLen);
560,423,767✔
5910
  }
5911
  clearTlvEncoder(&encoder);
559,484,891✔
5912

5913
  terrno = code;
559,831,478✔
5914
  return code;
559,944,494✔
5915
}
5916

5917
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
399,620,601✔
5918
  if (NULL == pMsg || NULL == pNode) {
399,620,601✔
5919
    return TSDB_CODE_SUCCESS;
×
5920
  }
5921

5922
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
399,652,103✔
5923
  int32_t     code = msgToNode(&decoder, (void**)pNode);
399,656,436✔
5924
  if (TSDB_CODE_SUCCESS != code) {
399,618,110✔
5925
    nodesDestroyNode(*pNode);
×
5926
    *pNode = NULL;
×
5927
  }
5928

5929
  terrno = code;
399,618,110✔
5930
  return code;
399,542,485✔
5931
}
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