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

taosdata / TDengine / #3522

07 Nov 2024 05:59AM UTC coverage: 58.216% (+1.3%) from 56.943%
#3522

push

travis-ci

web-flow
Merge pull request #28663 from taosdata/fix/3_liaohj

fix(stream): stop the underlying scan operations for stream

111884 of 248391 branches covered (45.04%)

Branch coverage included in aggregate %.

3 of 4 new or added lines in 1 file covered. (75.0%)

1164 existing lines in 134 files now uncovered.

191720 of 273118 relevant lines covered (70.2%)

13088725.13 hits per line

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

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

85
static void clearTlvEncoder(STlvEncoder* pEncoder) { taosMemoryFree(pEncoder->pBuf); }
2,011,988✔
86

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

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
150,222,485✔
94
  int32_t tlvLen = sizeof(STlv) + len;
150,222,485✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
150,222,485✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
772,876✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
772,876✔
98
    if (NULL == pNewBuf) {
774,438✔
99
      return terrno;
17✔
100
    }
101
    pEncoder->pBuf = pNewBuf;
774,421✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
150,224,030✔
104
  pTlv->type = htons(type);
150,224,030✔
105
  pTlv->len = htonl(len);
150,224,030✔
106
  memcpy(pTlv->value, pValue, len);
150,224,030✔
107
  pEncoder->offset += tlvLen;
150,224,030✔
108
  ++(pEncoder->tlvCount);
150,224,030✔
109
  return TSDB_CODE_SUCCESS;
150,224,030✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
566,018,284✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
566,018,284✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
691,777✔
115
    if (NULL == pNewBuf) {
693,723!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
693,724✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
693,724✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
566,020,231✔
122
  pEncoder->offset += len;
566,020,231✔
123
  return TSDB_CODE_SUCCESS;
566,020,231✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
61,298,140✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
61,298,140✔
132
}
133

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

139
static int32_t tlvEncodeValueI16(STlvEncoder* pEncoder, int16_t value) {
167,208,978✔
140
  value = htons(value);
167,208,978✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
167,208,978✔
142
}
143

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
82,712,192✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
82,712,192✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
110,746,319✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
110,746,319✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
12,516,494✔
223
  if (NULL == pValue) {
12,516,494✔
224
    return TSDB_CODE_SUCCESS;
911,260✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
11,605,234✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
63,184,864✔
230
  int16_t len = strlen(pValue);
63,184,864✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
63,184,864✔
232
  if (TSDB_CODE_SUCCESS == code) {
63,320,084!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
63,327,815✔
234
  }
235
  return code;
63,160,254✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
233,201,009✔
243
  if (NULL == pObj) {
233,201,009✔
244
    return TSDB_CODE_SUCCESS;
28,132,302✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
205,068,707✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
680,406✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
680,406✔
250
    if (NULL == pNewBuf) {
681,383!
UNCOV
251
      return terrno;
×
252
    }
253
    pEncoder->pBuf = pNewBuf;
681,383✔
254
  }
255

256
  int32_t start = pEncoder->offset;
205,069,684✔
257
  pEncoder->offset += sizeof(STlv);
205,069,684✔
258
  int32_t code = func(pObj, pEncoder);
205,069,684✔
259
  if (TSDB_CODE_SUCCESS == code) {
206,501,517!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
207,155,606✔
261
    pTlv->type = htons(type);
207,155,606✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
207,155,606✔
263
  }
264
  ++(pEncoder->tlvCount);
206,501,517✔
265
  return code;
206,501,517✔
266
}
267

268
static int32_t tlvEncodeObjArray(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pArray, int32_t itemSize,
33,014✔
269
                                 int32_t num) {
270
  int32_t code = TSDB_CODE_SUCCESS;
33,014✔
271
  if (num > 0) {
33,014!
272
    int32_t start = pEncoder->offset;
33,015✔
273
    pEncoder->offset += sizeof(STlv);
33,015✔
274
    for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
67,221✔
275
      code = tlvEncodeObj(pEncoder, TLV_TYPE_ARRAY_ELEM, func, (const char*)pArray + i * itemSize);
34,201✔
276
    }
277
    if (TSDB_CODE_SUCCESS == code) {
33,020!
278
      STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
33,028✔
279
      pTlv->type = htons(type);
33,028✔
280
      pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
33,028✔
281
    }
282
  }
283
  return code;
33,019✔
284
}
285

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
3,080,140✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
3,080,140✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
5,679,317✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
2,599,703✔
291
  }
292
  return code;
3,079,614✔
293
}
294

295
static int32_t tlvGetNextTlv(STlvDecoder* pDecoder, STlv** pTlv) {
2,147,483,647✔
296
  if (pDecoder->offset == pDecoder->bufSize) {
2,147,483,647✔
297
    *pTlv = NULL;
1,307,183,786✔
298
    return TSDB_CODE_SUCCESS;
1,307,183,786✔
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; }
562,945,768✔
312

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

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

335
static int32_t tlvDecodeI8(STlv* pTlv, int8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
1,328,658,269✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
728,625,954✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
728,625,954✔
339
}
340

341
static int32_t tlvDecodeI16(STlv* pTlv, int16_t* pValue) {
×
342
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
×
343
  if (TSDB_CODE_SUCCESS == code) {
×
344
    *pValue = ntohs(*pValue);
×
345
  }
346
  return code;
×
347
}
348

349
static int32_t tlvDecodeValueI16(STlvDecoder* pDecoder, int16_t* pValue) {
789,949,534✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
789,949,534✔
351
  if (TSDB_CODE_SUCCESS == code) {
783,133,880!
352
    *pValue = ntohs(*pValue);
818,654,894✔
353
  }
354
  return code;
783,133,880✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
783,804,540✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
783,804,540✔
359
  if (TSDB_CODE_SUCCESS == code) {
775,312,638!
360
    *pValue = ntohl(*pValue);
776,578,345✔
361
  }
362
  return code;
775,312,638✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
334,107,976✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
334,107,976✔
367
  if (TSDB_CODE_SUCCESS == code) {
332,646,713!
368
    *pValue = ntohl(*pValue);
333,294,506✔
369
  }
370
  return code;
332,646,713✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
332,529,050✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
332,529,050✔
375
  if (TSDB_CODE_SUCCESS == code) {
331,458,139!
376
    *pValue = ntohll(*pValue);
331,786,661✔
377
  }
378
  return code;
331,458,139✔
379
}
380

381
static int32_t tlvDecodeValueI64(STlvDecoder* pDecoder, int64_t* pValue) {
31,686,902✔
382
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
31,686,902✔
383
  if (TSDB_CODE_SUCCESS == code) {
31,680,095!
384
    *pValue = ntohll(*pValue);
31,684,689✔
385
  }
386
  return code;
31,680,095✔
387
}
388

389
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
683,882,589✔
390

391
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
363,614,208✔
392
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
363,614,208✔
393
}
394

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

403
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
6,820,772✔
404
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
6,820,772✔
405
  if (TSDB_CODE_SUCCESS == code) {
6,820,795!
406
    *pValue = ntohs(*pValue);
6,824,854✔
407
  }
408
  return code;
6,820,795✔
409
}
410

411
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
7,738,405✔
412
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
7,738,405✔
413
  if (TSDB_CODE_SUCCESS == code) {
7,737,157!
414
    *pValue = ntohll(*pValue);
7,737,367✔
415
  }
416
  return code;
7,737,157✔
417
}
418

419
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
82,915,371✔
420
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
82,915,371✔
421
  if (TSDB_CODE_SUCCESS == code) {
82,822,470!
422
    *pValue = ntohll(*pValue);
82,870,332✔
423
  }
424
  return code;
82,822,470✔
425
}
426

427
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
1,719,724✔
428
  int64_t temp = 0;
1,719,724✔
429
  int32_t code = tlvDecodeI64(pTlv, &temp);
1,719,724✔
430
  if (TSDB_CODE_SUCCESS == code) {
1,719,848!
431
    *pValue = *(double*)&temp;
1,720,097✔
432
  }
433
  return code;
1,719,848✔
434
}
435

436
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
3,721,928✔
437
  int64_t temp = 0;
3,721,928✔
438
  int32_t code = tlvDecodeValueI64(pDecoder, &temp);
3,721,928✔
439
  if (TSDB_CODE_SUCCESS == code) {
3,721,988!
440
    *pValue = *(double*)&temp;
3,722,100✔
441
  }
442
  return code;
3,721,988✔
443
}
444

445
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
1,576,460,985✔
446
  switch (len) {
1,576,460,985!
447
    case 1:
1,451,234,811✔
448
      *(int8_t*)pValue = value;
1,451,234,811✔
449
      break;
1,451,234,811✔
450
    case 2:
×
451
      *(int16_t*)pValue = value;
×
452
      break;
×
453
    case 4:
135,662,340✔
454
      *(int32_t*)pValue = value;
135,662,340✔
455
      break;
135,662,340✔
456
    default:
×
457
      return TSDB_CODE_FAILED;
×
458
  }
459
  return TSDB_CODE_SUCCESS;
1,586,897,151✔
460
}
461

462
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
1,000,747,031✔
463
  int8_t  value = 0;
1,000,747,031✔
464
  int32_t code = tlvDecodeI8(pTlv, &value);
1,000,747,031✔
465
  if (TSDB_CODE_SUCCESS == code) {
996,692,809!
466
    code = convertIntegerType(value, pValue, sizeof(bool));
997,316,015✔
467
  }
468
  return code;
1,002,805,435✔
469
}
470

471
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
469,604,959✔
472
  int8_t  value = 0;
469,604,959✔
473
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
469,604,959✔
474
  if (TSDB_CODE_SUCCESS == code) {
469,219,831!
475
    code = convertIntegerType(value, pValue, sizeof(bool));
469,336,422✔
476
  }
477
  return code;
470,336,977✔
478
}
479

480
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
58,611,800✔
481
  int32_t value = 0;
58,611,800✔
482
  int32_t code = tlvDecodeI32(pTlv, &value);
58,611,800✔
483
  if (TSDB_CODE_SUCCESS == code) {
58,605,045!
484
    code = convertIntegerType(value, pValue, len);
58,606,115✔
485
  }
486
  return code;
58,611,149✔
487
}
488

489
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
77,864,237✔
490
  int32_t value = 0;
77,864,237✔
491
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
77,864,237✔
492
  if (TSDB_CODE_SUCCESS == code) {
77,413,625!
493
    code = convertIntegerType(value, pValue, len);
77,419,185✔
494
  }
495
  return code;
77,396,533✔
496
}
497

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

506
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
302,344,728✔
507
  int16_t len = 0;
302,344,728✔
508
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
302,344,728✔
509
  if (TSDB_CODE_SUCCESS == code) {
307,115,863!
510
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
307,235,778✔
511
  }
512
  return code;
303,857,473✔
513
}
514

515
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
319,192,340✔
516
  *pValue = taosStrndup(pTlv->value, pTlv->len);
319,192,340✔
517
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
341,355,510!
518
}
519

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

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

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

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

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

556
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
8,335,455✔
557
                                   int32_t* pNum) {
558
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
8,335,455✔
559
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
15,161,027✔
560
    code = func(pDecoder, (char*)pArray + i * itemSize);
6,820,284✔
561
  }
562
  return code;
8,340,743✔
563
}
564

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

570
static int32_t tlvDecodeDynObjFromTlv(STlv* pTlv, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
628,371,480✔
571
  int32_t code = makeFunc(pTlv->type, (SNode**)pObj);
628,371,480✔
572
  if (NULL == *pObj) {
628,202,353!
573
    return code;
×
574
  }
575
  return tlvDecodeObjFromTlv(pTlv, toFunc, *pObj);
628,202,353✔
576
}
577

578
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
632,448,081✔
579
  STlv*   pTlv = NULL;
632,448,081✔
580
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
632,448,081✔
581
  if (TSDB_CODE_SUCCESS == code) {
628,306,420!
582
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
628,558,329✔
583
  }
584
  return code;
618,747,576✔
585
}
586

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

589
static int32_t dataTypeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
37,167,508✔
590
  const SDataType* pNode = (const SDataType*)pObj;
37,167,508✔
591

592
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
37,167,508✔
593
  if (TSDB_CODE_SUCCESS == code) {
37,562,855✔
594
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
37,561,836✔
595
  }
596
  if (TSDB_CODE_SUCCESS == code) {
37,198,683!
597
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
37,203,685✔
598
  }
599
  if (TSDB_CODE_SUCCESS == code) {
36,811,167!
600
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
36,832,060✔
601
  }
602

603
  return code;
36,905,963✔
604
}
605

606
static int32_t dataTypeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,239,178✔
607
  const SDataType* pNode = (const SDataType*)pObj;
11,239,178✔
608

609
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
11,239,178✔
610
  if (TSDB_CODE_SUCCESS == code) {
11,231,345!
611
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
11,231,700✔
612
  }
613
  if (TSDB_CODE_SUCCESS == code) {
11,230,223!
614
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
11,230,543✔
615
  }
616
  if (TSDB_CODE_SUCCESS == code) {
11,223,130!
617
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
11,224,060✔
618
  }
619

620
  return code;
11,223,261✔
621
}
622

623
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
171,991,944✔
624
  SDataType* pNode = (SDataType*)pObj;
171,991,944✔
625

626
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
171,991,944✔
627
  if (TSDB_CODE_SUCCESS == code) {
171,377,709!
628
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
171,404,777✔
629
  }
630
  if (TSDB_CODE_SUCCESS == code) {
170,080,745!
631
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
170,084,246✔
632
  }
633
  if (TSDB_CODE_SUCCESS == code) {
169,064,460!
634
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
169,119,790✔
635
  }
636

637
  return code;
169,113,415✔
638
}
639

640
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
358,978,200✔
641
  SDataType* pNode = (SDataType*)pObj;
358,978,200✔
642

643
  int32_t code = TSDB_CODE_SUCCESS;
358,978,200✔
644
  STlv*   pTlv = NULL;
358,978,200✔
645
  tlvForEach(pDecoder, pTlv, code) {
1,753,504,383!
646
    switch (pTlv->type) {
1,401,465,229!
647
      case DATA_TYPE_CODE_TYPE:
355,178,305✔
648
        code = tlvDecodeI8(pTlv, &pNode->type);
355,178,305✔
649
        break;
351,075,582✔
650
      case DATA_TYPE_CODE_PRECISION:
350,096,371✔
651
        code = tlvDecodeU8(pTlv, &pNode->precision);
350,096,371✔
652
        break;
348,056,950✔
653
      case DATA_TYPE_CODE_SCALE:
348,199,710✔
654
        code = tlvDecodeU8(pTlv, &pNode->scale);
348,199,710✔
655
        break;
346,999,154✔
656
      case DATA_TYPE_CODE_BYTES:
347,990,843✔
657
        code = tlvDecodeI32(pTlv, &pNode->bytes);
347,990,843✔
658
        break;
348,394,497✔
659
      default:
×
660
        break;
×
661
    }
662
  }
663

664
  return code;
347,905,138✔
665
}
666

667
enum { EXPR_CODE_RES_TYPE = 1 };
668

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

674
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
360,486,764✔
675
  SExprNode* pNode = (SExprNode*)pObj;
360,486,764✔
676

677
  int32_t code = TSDB_CODE_SUCCESS;
360,486,764✔
678
  STlv*   pTlv = NULL;
360,486,764✔
679
  tlvForEach(pDecoder, pTlv, code) {
709,850,300!
680
    switch (pTlv->type) {
359,176,931!
681
      case EXPR_CODE_RES_TYPE:
359,176,931✔
682
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
359,176,931✔
683
        break;
349,363,536✔
684
      default:
×
685
        break;
×
686
    }
687
  }
688

689
  return code;
342,524,338✔
690
}
691

692
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
693

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

697
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
14,788,725✔
698
  if (TSDB_CODE_SUCCESS == code) {
14,606,560!
699
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
14,607,773✔
700
  }
701
  if (TSDB_CODE_SUCCESS == code) {
14,574,509!
702
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
14,580,635✔
703
  }
704
  if (TSDB_CODE_SUCCESS == code) {
14,610,469!
705
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
14,617,586✔
706
  }
707
  if (TSDB_CODE_SUCCESS == code) {
14,732,695!
708
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
14,740,838✔
709
  }
710
  if (TSDB_CODE_SUCCESS == code) {
14,656,286!
711
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
14,665,766✔
712
  }
713
  if (TSDB_CODE_SUCCESS == code) {
14,668,221!
714
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
14,678,281✔
715
  }
716
  if (TSDB_CODE_SUCCESS == code) {
14,600,794!
717
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
14,615,174✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
14,609,468!
720
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
14,625,669✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
14,620,038!
723
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
14,637,444✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
14,684,254!
726
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
14,720,230✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
14,614,503!
729
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
14,653,652✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
14,570,339!
732
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
14,611,144✔
733
  }  
734
  if (TSDB_CODE_SUCCESS == code) {
14,494,428!
735
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
14,543,810✔
736
  }  
737
  return code;
14,597,011✔
738
}
739

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

744
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
71,975,269✔
745
  SColumnNode* pNode = (SColumnNode*)pObj;
71,975,269✔
746

747
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
71,975,269✔
748
  if (TSDB_CODE_SUCCESS == code) {
71,529,353!
749
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
71,534,702✔
750
  }
751
  if (TSDB_CODE_SUCCESS == code) {
71,477,102!
752
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
71,481,630✔
753
  }
754
  if (TSDB_CODE_SUCCESS == code) {
71,701,833!
755
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
71,716,227✔
756
  }
757
  if (TSDB_CODE_SUCCESS == code) {
72,628,708!
758
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
72,659,098✔
759
  }
760
  if (TSDB_CODE_SUCCESS == code) {
72,119,970!
761
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
72,154,637✔
762
  }
763
  if (TSDB_CODE_SUCCESS == code) {
72,215,134!
764
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
72,242,656✔
765
  }
766
  if (TSDB_CODE_SUCCESS == code) {
72,275,072!
767
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
72,306,752✔
768
  }
769
  if (TSDB_CODE_SUCCESS == code) {
72,316,176!
770
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
72,351,264✔
771
  }
772
  if (TSDB_CODE_SUCCESS == code) {
72,359,895!
773
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
72,398,835✔
774
  }
775
  if (TSDB_CODE_SUCCESS == code) {
72,633,419!
776
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
72,662,305✔
777
  }
778
  if (TSDB_CODE_SUCCESS == code) {
72,646,036!
779
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
72,689,975✔
780
  }
781
  if (TSDB_CODE_SUCCESS == code) {
72,292,516!
782
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
72,340,547✔
783
  }  
784
  if (TSDB_CODE_SUCCESS == code) {
72,118,424!
785
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
72,171,143✔
786
  }  
787
  return code;
72,645,406✔
788
}
789

790
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
72,081,411✔
791
  SColumnNode* pNode = (SColumnNode*)pObj;
72,081,411✔
792

793
  int32_t code = TSDB_CODE_SUCCESS;
72,081,411✔
794
  STlv*   pTlv = NULL;
72,081,411✔
795
  tlvForEach(pDecoder, pTlv, code) {
144,650,127!
796
    switch (pTlv->type) {
71,938,203!
797
      case COLUMN_CODE_INLINE_ATTRS:
71,938,203✔
798
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
71,938,203✔
799
        break;
72,568,716✔
800
      default:
×
801
        break;
×
802
    }
803
  }
804

805
  return code;
72,229,370✔
806
}
807

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

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

821
  int32_t code = TSDB_CODE_SUCCESS;
5,432,015✔
822
  switch (pNode->node.resType.type) {
5,432,015!
823
    case TSDB_DATA_TYPE_NULL:
×
824
      break;
×
825
    case TSDB_DATA_TYPE_BOOL:
69,236✔
826
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
69,236✔
827
      break;
69,239✔
828
    case TSDB_DATA_TYPE_TINYINT:
4,778,683✔
829
    case TSDB_DATA_TYPE_SMALLINT:
830
    case TSDB_DATA_TYPE_INT:
831
    case TSDB_DATA_TYPE_BIGINT:
832
    case TSDB_DATA_TYPE_TIMESTAMP:
833
      code = tlvEncodeI64(pEncoder, VALUE_CODE_DATUM, pNode->datum.i);
4,778,683✔
834
      break;
4,781,276✔
835
    case TSDB_DATA_TYPE_UTINYINT:
151✔
836
    case TSDB_DATA_TYPE_USMALLINT:
837
    case TSDB_DATA_TYPE_UINT:
838
    case TSDB_DATA_TYPE_UBIGINT:
839
      code = tlvEncodeU64(pEncoder, VALUE_CODE_DATUM, pNode->datum.u);
151✔
840
      break;
151✔
841
    case TSDB_DATA_TYPE_FLOAT:
229,432✔
842
    case TSDB_DATA_TYPE_DOUBLE:
843
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
229,432✔
844
      break;
229,512✔
845
    case TSDB_DATA_TYPE_VARCHAR:
357,443✔
846
    case TSDB_DATA_TYPE_VARBINARY:
847
    case TSDB_DATA_TYPE_NCHAR:
848
    case TSDB_DATA_TYPE_GEOMETRY:
849
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, varDataTLen(pNode->datum.p));
357,443✔
850
      break;
357,473✔
851
    case TSDB_DATA_TYPE_JSON:
12✔
852
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
12✔
853
      break;
1,116✔
854
    case TSDB_DATA_TYPE_DECIMAL:
×
855
    case TSDB_DATA_TYPE_BLOB:
856
      // todo
857
    default:
858
      break;
×
859
  }
860

861
  return code;
5,435,825✔
862
}
863

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

867
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
5,440,442✔
868
  if (TSDB_CODE_SUCCESS == code) {
5,438,420!
869
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
5,438,608✔
870
  }
871
  if (TSDB_CODE_SUCCESS == code) {
5,439,012!
872
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
5,439,108✔
873
  }
874
  if (TSDB_CODE_SUCCESS == code) {
5,437,556!
875
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
5,437,777✔
876
  }
877
  if (TSDB_CODE_SUCCESS == code) {
5,440,396!
878
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
5,440,694✔
879
  }
880
  if (TSDB_CODE_SUCCESS == code) {
5,434,979!
881
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
5,435,451✔
882
  }
883
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
5,435,364!
884
    code = datumToMsg(pNode, pEncoder);
5,431,436✔
885
  }
886

887
  return code;
5,440,306✔
888
}
889

890
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
329,451,988✔
891
  SValueNode* pNode = (SValueNode*)pObj;
329,451,988✔
892

893
  int32_t code = TSDB_CODE_SUCCESS;
329,451,988✔
894
  switch (pNode->node.resType.type) {
329,451,988!
895
    case TSDB_DATA_TYPE_NULL:
×
896
      break;
×
897
    case TSDB_DATA_TYPE_BOOL:
2,483,787✔
898
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
2,483,787✔
899
      *(bool*)&pNode->typeData = pNode->datum.b;
2,484,035✔
900
      break;
2,484,035✔
901
    case TSDB_DATA_TYPE_TINYINT:
2,525,249✔
902
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
2,525,249✔
903
      *(int8_t*)&pNode->typeData = pNode->datum.i;
2,525,584✔
904
      break;
2,525,584✔
905
    case TSDB_DATA_TYPE_SMALLINT:
1,040,493✔
906
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,040,493✔
907
      *(int16_t*)&pNode->typeData = pNode->datum.i;
1,040,526✔
908
      break;
1,040,526✔
909
    case TSDB_DATA_TYPE_INT:
990,394✔
910
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
990,394✔
911
      *(int32_t*)&pNode->typeData = pNode->datum.i;
990,440✔
912
      break;
990,440✔
913
    case TSDB_DATA_TYPE_BIGINT:
317,335,343✔
914
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
317,335,343✔
915
      *(int64_t*)&pNode->typeData = pNode->datum.i;
317,807,285✔
916
      break;
317,807,285✔
917
    case TSDB_DATA_TYPE_TIMESTAMP:
615,196✔
918
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
615,196✔
919
      *(int64_t*)&pNode->typeData = pNode->datum.i;
615,232✔
920
      break;
615,232✔
921
    case TSDB_DATA_TYPE_UTINYINT:
44✔
922
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
44✔
923
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
44✔
924
      break;
44✔
925
    case TSDB_DATA_TYPE_USMALLINT:
×
926
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
×
927
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
×
928
      break;
×
929
    case TSDB_DATA_TYPE_UINT:
×
930
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
×
931
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
×
932
      break;
×
933
    case TSDB_DATA_TYPE_UBIGINT:
182,867✔
934
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
182,867✔
935
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
182,888✔
936
      break;
182,888✔
937
    case TSDB_DATA_TYPE_FLOAT:
113,959✔
938
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
113,959✔
939
      *(float*)&pNode->typeData = pNode->datum.d;
113,959✔
940
      break;
113,959✔
941
    case TSDB_DATA_TYPE_DOUBLE:
1,605,351✔
942
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
1,605,351✔
943
      *(double*)&pNode->typeData = pNode->datum.d;
1,605,715✔
944
      break;
1,605,715✔
945
    case TSDB_DATA_TYPE_NCHAR:
2,831,498✔
946
    case TSDB_DATA_TYPE_VARCHAR:
947
    case TSDB_DATA_TYPE_VARBINARY:
948
    case TSDB_DATA_TYPE_GEOMETRY: {
949
      if (pTlv->len > pNode->node.resType.bytes + VARSTR_HEADER_SIZE) {
2,831,498!
950
        code = TSDB_CODE_FAILED;
×
951
        break;
×
952
      }
953
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
2,831,498✔
954
      if (NULL == pNode->datum.p) {
2,835,611!
955
        code = terrno;
×
956
        break;
×
957
      }
958
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
2,835,611✔
959
      if (TSDB_CODE_SUCCESS == code) {
2,834,865!
960
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
2,834,925✔
961
      }
962
      break;
2,834,865✔
963
    }
964
    case TSDB_DATA_TYPE_JSON: {
×
965
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
×
966
        code = TSDB_CODE_FAILED;
×
967
        break;
×
968
      }
969
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
×
970
      break;
×
971
    }
UNCOV
972
    case TSDB_DATA_TYPE_DECIMAL:
×
973
    case TSDB_DATA_TYPE_BLOB:
974
      // todo
975
    default:
UNCOV
976
      break;
×
977
  }
978

979
  return code;
329,928,380✔
980
}
981

982
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
335,652,599✔
983
  SValueNode* pNode = (SValueNode*)pObj;
335,652,599✔
984

985
  int32_t code = TSDB_CODE_SUCCESS;
335,652,599✔
986
  STlv*   pTlv = NULL;
335,652,599✔
987
  tlvForEach(pDecoder, pTlv, code) {
2,147,483,647!
988
    switch (pTlv->type) {
2,147,483,647!
989
      case VALUE_CODE_EXPR_BASE:
332,487,803✔
990
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
332,487,803✔
991
        break;
319,094,188✔
992
      case VALUE_CODE_LITERAL:
319,216,724✔
993
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
319,216,724✔
994
        break;
340,516,041✔
995
      case VALUE_CODE_FLAG:
337,594,724✔
996
        code = tlvDecodeI32(pTlv, &pNode->flag);
337,594,724✔
997
        break;
332,702,448✔
998
      case VALUE_CODE_TRANSLATE:
331,297,769✔
999
        code = tlvDecodeBool(pTlv, &pNode->translate);
331,297,769✔
1000
        break;
329,220,031✔
1001
      case VALUE_CODE_NOT_RESERVED:
328,974,623✔
1002
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
328,974,623✔
1003
        break;
329,327,370✔
1004
      case VALUE_CODE_IS_NULL:
329,033,672✔
1005
        code = tlvDecodeBool(pTlv, &pNode->isNull);
329,033,672✔
1006
        break;
329,998,776✔
1007
      case VALUE_CODE_DATUM:
329,165,667✔
1008
        code = msgToDatum(pTlv, pNode);
329,165,667✔
1009
        break;
329,652,209✔
1010
      default:
×
1011
        break;
×
1012
    }
1013
  }
1014

1015
  return code;
320,379,135✔
1016
}
1017

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

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

1023
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,542,508✔
1024
  if (TSDB_CODE_SUCCESS == code) {
1,541,901!
1025
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
1,541,924✔
1026
  }
1027
  if (TSDB_CODE_SUCCESS == code) {
1,541,965!
1028
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
1,542,007✔
1029
  }
1030
  if (TSDB_CODE_SUCCESS == code) {
1,540,268!
1031
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
1,540,350✔
1032
  }
1033

1034
  return code;
1,540,030✔
1035
}
1036

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

1040
  int32_t code = TSDB_CODE_SUCCESS;
16,065,882✔
1041
  STlv*   pTlv = NULL;
16,065,882✔
1042
  tlvForEach(pDecoder, pTlv, code) {
77,403,397!
1043
    switch (pTlv->type) {
61,348,091!
1044
      case OPERATOR_CODE_EXPR_BASE:
16,054,861✔
1045
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
16,054,861✔
1046
        break;
15,993,378✔
1047
      case OPERATOR_CODE_OP_TYPE:
16,003,719✔
1048
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
16,003,719✔
1049
        break;
16,025,830✔
1050
      case OPERATOR_CODE_LEFT:
16,022,204✔
1051
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
16,022,204✔
1052
        break;
16,066,207✔
1053
      case OPERATOR_CODE_RIGHT:
13,267,307✔
1054
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
13,267,307✔
1055
        break;
13,252,100✔
1056
      default:
×
1057
        break;
×
1058
    }
1059
  }
1060

1061
  return code;
15,966,119✔
1062
}
1063

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

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

1069
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
330,765✔
1070
  if (TSDB_CODE_SUCCESS == code) {
330,848!
1071
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
330,855✔
1072
  }
1073
  if (TSDB_CODE_SUCCESS == code) {
330,874!
1074
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
330,887✔
1075
  }
1076

1077
  return code;
330,549✔
1078
}
1079

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

1083
  int32_t code = TSDB_CODE_SUCCESS;
4,944,243✔
1084
  STlv*   pTlv = NULL;
4,944,243✔
1085
  tlvForEach(pDecoder, pTlv, code) {
19,768,545!
1086
    switch (pTlv->type) {
14,822,558!
1087
      case LOGIC_COND_CODE_EXPR_BASE:
4,943,207✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
4,943,207✔
1089
        break;
4,937,247✔
1090
      case LOGIC_COND_CODE_COND_TYPE:
4,938,745✔
1091
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
4,938,745✔
1092
        break;
4,940,870✔
1093
      case LOGIC_COND_CODE_PARAMETERS:
4,940,606✔
1094
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
4,940,606✔
1095
        break;
4,946,185✔
1096
      default:
×
1097
        break;
×
1098
    }
1099
  }
1100

1101
  return code;
4,940,702✔
1102
}
1103

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

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

1121
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
3,949,658✔
1122
  if (TSDB_CODE_SUCCESS == code) {
3,937,702!
1123
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
3,937,982✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
3,944,953!
1126
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
3,945,188✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
3,935,415!
1129
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
3,935,819✔
1130
  }
1131
  if (TSDB_CODE_SUCCESS == code) {
3,929,878!
1132
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
3,930,530✔
1133
  }
1134
  if (TSDB_CODE_SUCCESS == code) {
3,933,421!
1135
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
3,936,140✔
1136
  }
1137
  if (TSDB_CODE_SUCCESS == code) {
3,937,951!
1138
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
3,941,563✔
1139
  }
1140
  if (TSDB_CODE_SUCCESS == code) {
3,942,659!
1141
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
3,946,396✔
1142
  }  
1143
  if (TSDB_CODE_SUCCESS == code) {
3,939,445!
1144
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
3,943,530✔
1145
  }
1146
  if (TSDB_CODE_SUCCESS == code) {
3,942,582!
1147
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
3,946,809✔
1148
  }
1149
  if (TSDB_CODE_SUCCESS == code) {
3,939,370!
1150
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
3,943,805✔
1151
  }
1152

1153
  return code;
3,947,537✔
1154
}
1155

1156
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
7,168,673✔
1157
  SFunctionNode* pNode = (SFunctionNode*)pObj;
7,168,673✔
1158

1159
  int32_t code = TSDB_CODE_SUCCESS;
7,168,673✔
1160
  STlv*   pTlv = NULL;
7,168,673✔
1161
  tlvForEach(pDecoder, pTlv, code) {
83,344,866!
1162
    switch (pTlv->type) {
76,183,503!
1163
      case FUNCTION_CODE_EXPR_BASE:
7,167,219✔
1164
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
7,167,219✔
1165
        break;
7,155,327✔
1166
      case FUNCTION_CODE_FUNCTION_NAME:
7,156,902✔
1167
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
7,156,902✔
1168
        break;
7,157,482✔
1169
      case FUNCTION_CODE_FUNCTION_ID:
7,157,447✔
1170
        code = tlvDecodeI32(pTlv, &pNode->funcId);
7,157,447✔
1171
        break;
7,158,213✔
1172
      case FUNCTION_CODE_FUNCTION_TYPE:
7,158,482✔
1173
        code = tlvDecodeI32(pTlv, &pNode->funcType);
7,158,482✔
1174
        break;
7,156,659✔
1175
      case FUNCTION_CODE_PARAMETERS:
4,544,422✔
1176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
4,544,422✔
1177
        break;
4,552,450✔
1178
      case FUNCTION_CODE_UDF_BUF_SIZE:
7,169,374✔
1179
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
7,169,374✔
1180
        break;
7,167,338✔
1181
      case FUNCTION_NODE_HAS_PK:
7,167,201✔
1182
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
7,167,201✔
1183
        break;
7,166,424✔
1184
      case FUNCTION_NODE_PK_BYTES:
7,166,020✔
1185
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
7,166,020✔
1186
        break;  
7,165,471✔
1187
      case FUNCTION_CODE_IS_MERGE_FUNC:
7,165,580✔
1188
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
7,165,580✔
1189
        break;
7,165,766✔
1190
      case FUNCTION_CODE_MERGE_FUNC_OF:
7,165,610✔
1191
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
7,165,610✔
1192
        break;
7,165,035✔
1193
      case FUNCTION_CODE_TRIM_TYPE:
7,165,246✔
1194
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
7,165,246✔
1195
        break;
7,166,028✔
1196
      default:
×
1197
        break;
×
1198
    }
1199
  }
1200

1201
  return code;
7,154,965✔
1202
}
1203

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

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

1209
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
382,492✔
1210
  if (TSDB_CODE_SUCCESS == code) {
382,322!
1211
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
382,322✔
1212
  }
1213
  if (TSDB_CODE_SUCCESS == code) {
382,341!
1214
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
382,343✔
1215
  }
1216

1217
  return code;
382,376✔
1218
}
1219

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

1223
  int32_t code = TSDB_CODE_SUCCESS;
2,040,708✔
1224
  STlv*   pTlv = NULL;
2,040,708✔
1225
  tlvForEach(pDecoder, pTlv, code) {
8,162,415!
1226
    switch (pTlv->type) {
6,121,846!
1227
      case ORDER_BY_EXPR_CODE_EXPR:
2,040,670✔
1228
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
2,040,670✔
1229
        break;
2,040,719✔
1230
      case ORDER_BY_EXPR_CODE_ORDER:
2,040,665✔
1231
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
2,040,665✔
1232
        break;
2,040,545✔
1233
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
2,040,511✔
1234
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
2,040,511✔
1235
        break;
2,040,443✔
1236
      default:
×
1237
        break;
×
1238
    }
1239
  }
1240

1241
  return code;
2,040,277✔
1242
}
1243

1244
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1245

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

1249
  int32_t code = tlvEncodeI64(pEncoder, LIMIT_CODE_LIMIT, pNode->limit);
200,427✔
1250
  if (TSDB_CODE_SUCCESS == code) {
200,442!
1251
    code = tlvEncodeI64(pEncoder, LIMIT_CODE_OFFSET, pNode->offset);
200,450✔
1252
  }
1253

1254
  return code;
200,443✔
1255
}
1256

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

1260
  int32_t code = TSDB_CODE_SUCCESS;
611,857✔
1261
  STlv*   pTlv = NULL;
611,857✔
1262
  tlvForEach(pDecoder, pTlv, code) {
1,835,458!
1263
    switch (pTlv->type) {
1,223,647!
1264
      case LIMIT_CODE_LIMIT:
611,836✔
1265
        code = tlvDecodeI64(pTlv, &pNode->limit);
611,836✔
1266
        break;
611,827✔
1267
      case LIMIT_CODE_OFFSET:
611,811✔
1268
        code = tlvDecodeI64(pTlv, &pNode->offset);
611,811✔
1269
        break;
611,774✔
1270
      default:
×
1271
        break;
×
1272
    }
1273
  }
1274

1275
  return code;
611,803✔
1276
}
1277

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

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

1283
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
1,517,110✔
1284
  if (TSDB_CODE_SUCCESS == code) {
1,517,307!
1285
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
1,517,379✔
1286
  }
1287
  if (TSDB_CODE_SUCCESS == code) {
1,517,556!
1288
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
1,517,632✔
1289
  }
1290
  if (TSDB_CODE_SUCCESS == code) {
1,517,502!
1291
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
1,517,629✔
1292
  }
1293

1294
  return code;
1,517,405✔
1295
}
1296

1297
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
3,752,294✔
1298
  SName* pNode = (SName*)pObj;
3,752,294✔
1299

1300
  int32_t code = TSDB_CODE_SUCCESS;
3,752,294✔
1301
  STlv*   pTlv = NULL;
3,752,294✔
1302
  tlvForEach(pDecoder, pTlv, code) {
18,759,731!
1303
    switch (pTlv->type) {
15,008,413!
1304
      case NAME_CODE_TYPE:
3,752,314✔
1305
        code = tlvDecodeU8(pTlv, &pNode->type);
3,752,314✔
1306
        break;
3,751,887✔
1307
      case NAME_CODE_ACCT_ID:
3,751,994✔
1308
        code = tlvDecodeI32(pTlv, &pNode->acctId);
3,751,994✔
1309
        break;
3,751,745✔
1310
      case NAME_CODE_DB_NAME:
3,752,311✔
1311
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
3,752,311✔
1312
        break;
3,751,870✔
1313
      case NAME_CODE_TABLE_NAME:
3,751,794✔
1314
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
3,751,794✔
1315
        break;
3,751,935✔
1316
      default:
×
1317
        break;
×
1318
    }
1319
  }
1320

1321
  return code;
3,751,769✔
1322
}
1323

1324
enum { TIME_WINDOW_CODE_START_KEY = 1, TIME_WINDOW_CODE_END_KEY };
1325

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

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

1334
  return code;
71,989✔
1335
}
1336

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

1340
  int32_t code = TSDB_CODE_SUCCESS;
582,134✔
1341
  STlv*   pTlv = NULL;
582,134✔
1342
  tlvForEach(pDecoder, pTlv, code) {
1,746,397!
1343
    switch (pTlv->type) {
1,164,265!
1344
      case TIME_WINDOW_CODE_START_KEY:
582,134✔
1345
        code = tlvDecodeI64(pTlv, &pNode->skey);
582,134✔
1346
        break;
582,130✔
1347
      case TIME_WINDOW_CODE_END_KEY:
582,131✔
1348
        code = tlvDecodeI64(pTlv, &pNode->ekey);
582,131✔
1349
        break;
582,133✔
1350
      default:
×
1351
        break;
×
1352
    }
1353
  }
1354

1355
  return code;
582,131✔
1356
}
1357

1358
enum { NODE_LIST_CODE_DATA_TYPE = 1, NODE_LIST_CODE_NODE_LIST };
1359

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

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

1368
  return code;
45,536✔
1369
}
1370

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

1374
  int32_t code = TSDB_CODE_SUCCESS;
2,634,080✔
1375
  STlv*   pTlv = NULL;
2,634,080✔
1376
  tlvForEach(pDecoder, pTlv, code) {
7,902,068!
1377
    switch (pTlv->type) {
5,266,538!
1378
      case NODE_LIST_CODE_DATA_TYPE:
2,633,779✔
1379
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
2,633,779✔
1380
        break;
2,632,648✔
1381
      case NODE_LIST_CODE_NODE_LIST:
2,632,759✔
1382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
2,632,759✔
1383
        break;
2,635,340✔
1384
      default:
×
1385
        break;
×
1386
    }
1387
  }
1388

1389
  return code;
2,634,508✔
1390
}
1391

1392
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1393

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

1397
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
12,683,692✔
1398
  if (TSDB_CODE_SUCCESS == code) {
12,732,444!
1399
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
12,733,181✔
1400
  }
1401

1402
  return code;
12,693,482✔
1403
}
1404

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

1408
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
12,529,458✔
1409
  if (TSDB_CODE_SUCCESS == code) {
12,770,377!
1410
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
12,770,983✔
1411
  }
1412

1413
  return code;
12,469,449✔
1414
}
1415

1416
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
52,464,208✔
1417
  STargetNode* pNode = (STargetNode*)pObj;
52,464,208✔
1418

1419
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
52,464,208✔
1420
  if (TSDB_CODE_SUCCESS == code) {
52,880,335!
1421
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
52,903,107✔
1422
  }
1423

1424
  return code;
52,876,778✔
1425
}
1426

1427
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
52,585,471✔
1428
  STargetNode* pNode = (STargetNode*)pObj;
52,585,471✔
1429

1430
  int32_t code = TSDB_CODE_SUCCESS;
52,585,471✔
1431
  STlv*   pTlv = NULL;
52,585,471✔
1432
  tlvForEach(pDecoder, pTlv, code) {
157,949,733!
1433
    switch (pTlv->type) {
105,050,483!
1434
      case TARGET_CODE_INLINE_ATTRS:
52,420,405✔
1435
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
52,420,405✔
1436
        break;
52,826,844✔
1437
      case TARGET_CODE_EXPR:
52,630,078✔
1438
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
52,630,078✔
1439
        break;
52,537,418✔
1440
      default:
×
1441
        break;
×
1442
    }
1443
  }
1444

1445
  return code;
52,132,458✔
1446
}
1447

1448
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1449

1450
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,239,297✔
1451
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
6,239,297✔
1452

1453
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
6,239,297✔
1454
  if (TSDB_CODE_SUCCESS == code) {
6,238,112!
1455
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
6,238,278✔
1456
  }
1457
  if (TSDB_CODE_SUCCESS == code) {
6,237,900!
1458
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
6,238,118✔
1459
  }
1460
  if (TSDB_CODE_SUCCESS == code) {
6,235,869!
1461
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
6,236,252✔
1462
  }
1463

1464
  return code;
6,236,172✔
1465
}
1466

1467
static int32_t dataBlockDescNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,241,064✔
1468
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
6,241,064✔
1469

1470
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
6,241,064✔
1471
  if (TSDB_CODE_SUCCESS == code) {
6,237,411!
1472
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
6,237,526✔
1473
  }
1474

1475
  return code;
6,229,729✔
1476
}
1477

1478
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
18,253,835✔
1479
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
18,253,835✔
1480

1481
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
18,253,835✔
1482
  if (TSDB_CODE_SUCCESS == code) {
18,269,059!
1483
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
18,270,301✔
1484
  }
1485
  if (TSDB_CODE_SUCCESS == code) {
18,256,309!
1486
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
18,257,731✔
1487
  }
1488
  if (TSDB_CODE_SUCCESS == code) {
18,248,607!
1489
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
18,250,260✔
1490
  }
1491

1492
  return code;
18,246,861✔
1493
}
1494

1495
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
18,257,427✔
1496
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
18,257,427✔
1497

1498
  int32_t code = TSDB_CODE_SUCCESS;
18,257,427✔
1499
  STlv*   pTlv = NULL;
18,257,427✔
1500
  tlvForEach(pDecoder, pTlv, code) {
54,763,299!
1501
    switch (pTlv->type) {
36,503,375!
1502
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
18,255,851✔
1503
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
18,255,851✔
1504
        break;
18,246,909✔
1505
      case DATA_BLOCK_DESC_CODE_SLOTS:
18,247,524✔
1506
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
18,247,524✔
1507
        break;
18,258,963✔
1508
      default:
×
1509
        break;
×
1510
    }
1511
  }
1512

1513
  return code;
18,246,592✔
1514
}
1515

1516
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1517

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

1521
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
22,597,369✔
1522
  if (TSDB_CODE_SUCCESS == code) {
22,562,147!
1523
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
22,563,568✔
1524
  }
1525
  if (TSDB_CODE_SUCCESS == code) {
22,592,104!
1526
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
22,596,400✔
1527
  }
1528
  if (TSDB_CODE_SUCCESS == code) {
22,475,448!
1529
    code = tlvEncodeValueBool(pEncoder, pNode->output);
22,482,760✔
1530
  }
1531
  if (TSDB_CODE_SUCCESS == code) {
22,293,598!
1532
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
22,305,219✔
1533
  }
1534

1535
  return code;
22,271,269✔
1536
}
1537

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

1542
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
96,837,762✔
1543
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
96,837,762✔
1544

1545
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
96,837,762✔
1546
  if (TSDB_CODE_SUCCESS == code) {
98,022,211!
1547
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
98,052,449✔
1548
  }
1549
  if (TSDB_CODE_SUCCESS == code) {
96,088,985!
1550
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
96,117,655✔
1551
  }
1552
  if (TSDB_CODE_SUCCESS == code) {
96,546,825!
1553
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
96,583,254✔
1554
  }
1555
  if (TSDB_CODE_SUCCESS == code) {
96,603,869!
1556
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
96,647,354✔
1557
  }
1558

1559
  return code;
96,713,971✔
1560
}
1561

1562
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
97,019,611✔
1563
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
97,019,611✔
1564

1565
  int32_t code = TSDB_CODE_SUCCESS;
97,019,611✔
1566
  STlv*   pTlv = NULL;
97,019,611✔
1567
  tlvForEach(pDecoder, pTlv, code) {
193,689,628!
1568
    switch (pTlv->type) {
96,742,467!
1569
      case SLOT_DESC_CODE_INLINE_ATTRS:
96,742,467✔
1570
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
96,742,467✔
1571
        break;
96,670,017✔
1572
      default:
×
1573
        break;
×
1574
    }
1575
  }
1576

1577
  return code;
96,289,690✔
1578
}
1579

1580
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1581

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

1585
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
2,598,703✔
1586
  if (TSDB_CODE_SUCCESS == code) {
2,598,994!
1587
    code = tlvEncodeValueU16(pEncoder, pNode->port);
2,599,083✔
1588
  }
1589

1590
  return code;
2,599,175✔
1591
}
1592

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

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

1601
  return code;
34,207✔
1602
}
1603

1604
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
6,818,654✔
1605
  SEp* pNode = (SEp*)pObj;
6,818,654✔
1606

1607
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
6,818,654✔
1608
  if (TSDB_CODE_SUCCESS == code) {
6,823,378!
1609
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
6,823,445✔
1610
  }
1611

1612
  return code;
6,824,921✔
1613
}
1614

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

1618
  int32_t code = TSDB_CODE_SUCCESS;
19,453✔
1619
  STlv*   pTlv = NULL;
19,453✔
1620
  tlvForEach(pDecoder, pTlv, code) {
58,487!
1621
    switch (pTlv->type) {
38,962!
1622
      case EP_CODE_FQDN:
19,486✔
1623
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
19,486✔
1624
        break;
19,479✔
1625
      case EP_CODE_port:
19,476✔
1626
        code = tlvDecodeU16(pTlv, &pNode->port);
19,476✔
1627
        break;
19,555✔
1628
      default:
×
1629
        break;
×
1630
    }
1631
  }
1632

1633
  return code;
19,526✔
1634
}
1635

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

1638
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,079,573✔
1639
  const SEpSet* pNode = (const SEpSet*)pObj;
3,079,573✔
1640

1641
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
3,079,573✔
1642
  if (TSDB_CODE_SUCCESS == code) {
3,080,373!
1643
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
3,080,465✔
1644
  }
1645

1646
  return code;
3,080,372✔
1647
}
1648

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

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

1660
  return code;
33,029✔
1661
}
1662

1663
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
8,335,980✔
1664
  SEpSet* pNode = (SEpSet*)pObj;
8,335,980✔
1665

1666
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
8,335,980✔
1667
  if (TSDB_CODE_SUCCESS == code) {
8,337,609✔
1668
    int32_t numOfEps = 0;
8,337,488✔
1669
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
8,337,488✔
1670
    pNode->numOfEps = numOfEps;
8,341,636✔
1671
  }
1672

1673
  return code;
8,341,757✔
1674
}
1675

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

1679
  int32_t code = TSDB_CODE_SUCCESS;
19,054✔
1680
  STlv*   pTlv = NULL;
19,054✔
1681
  tlvForEach(pDecoder, pTlv, code) {
76,331!
1682
    switch (pTlv->type) {
57,240!
1683
      case EP_SET_CODE_IN_USE:
19,084✔
1684
        code = tlvDecodeI8(pTlv, &pNode->inUse);
19,084✔
1685
        break;
19,086✔
1686
      case EP_SET_CODE_NUM_OF_EPS:
19,081✔
1687
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
19,081✔
1688
        break;
19,067✔
1689
      case EP_SET_CODE_EPS:
19,075✔
1690
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
19,075✔
1691
        break;
19,124✔
1692
      default:
×
1693
        break;
×
1694
    }
1695
  }
1696

1697
  return code;
19,107✔
1698
}
1699

1700
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1701

1702
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,079,282✔
1703
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
3,079,282✔
1704

1705
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
3,079,282✔
1706
  if (TSDB_CODE_SUCCESS == code) {
3,079,787!
1707
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
3,079,856✔
1708
  }
1709

1710
  return code;
3,080,424✔
1711
}
1712

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

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

1721
  return code;
×
1722
}
1723

1724
static int32_t msgToQueryNodeAddrInline(STlvDecoder* pDecoder, void* pObj) {
8,336,478✔
1725
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
8,336,478✔
1726

1727
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
8,336,478✔
1728
  if (TSDB_CODE_SUCCESS == code) {
8,337,509!
1729
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
8,337,877✔
1730
  }
1731

1732
  return code;
8,341,654✔
1733
}
1734

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

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

1751
  return code;
×
1752
}
1753

1754
enum { DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS = 1 };
1755

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

1759
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
1,066,438✔
1760
  if (TSDB_CODE_SUCCESS == code) {
1,066,437!
1761
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
1,066,437✔
1762
  }
1763
  if (TSDB_CODE_SUCCESS == code) {
1,066,423!
1764
    code = tlvEncodeValueU64(pEncoder, pNode->schedId);
1,066,423✔
1765
  }
1766
  if (TSDB_CODE_SUCCESS == code) {
1,066,412!
1767
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
1,066,413✔
1768
  }
1769
  if (TSDB_CODE_SUCCESS == code) {
1,066,422!
1770
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
1,066,423✔
1771
  }
1772

1773
  return code;
1,066,411✔
1774
}
1775

1776
static int32_t downstreamSourceNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,066,443✔
1777
  return tlvEncodeObj(pEncoder, DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS, downstreamSourceNodeInlineToMsg, pObj);
1,066,443✔
1778
}
1779

1780
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
3,066,422✔
1781
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
3,066,422✔
1782

1783
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
3,066,422✔
1784
  if (TSDB_CODE_SUCCESS == code) {
3,066,562!
1785
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
3,066,562✔
1786
  }
1787
  if (TSDB_CODE_SUCCESS == code) {
3,066,499!
1788
    code = tlvDecodeValueU64(pDecoder, &pNode->schedId);
3,066,499✔
1789
  }
1790
  if (TSDB_CODE_SUCCESS == code) {
3,066,420!
1791
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
3,066,422✔
1792
  }
1793
  if (TSDB_CODE_SUCCESS == code) {
3,066,365✔
1794
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
3,066,359✔
1795
  }
1796

1797
  return code;
3,066,295✔
1798
}
1799

1800
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
3,066,425✔
1801
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
3,066,425✔
1802

1803
  int32_t code = TSDB_CODE_SUCCESS;
3,066,425✔
1804
  STlv*   pTlv = NULL;
3,066,425✔
1805
  tlvForEach(pDecoder, pTlv, code) {
6,132,718!
1806
    switch (pTlv->type) {
3,066,435!
1807
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
3,066,435✔
1808
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
3,066,435✔
1809
        break;
3,066,293✔
1810
      default:
×
1811
        break;
×
1812
    }
1813
  }
1814

1815
  return code;
3,066,240✔
1816
}
1817

1818
enum { WHEN_THEN_CODE_EXPR_BASE = 1, WHEN_THEN_CODE_WHEN, WHEN_THEN_CODE_THEN };
1819

1820
static int32_t whenThenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
6,265✔
1821
  const SWhenThenNode* pNode = (const SWhenThenNode*)pObj;
6,265✔
1822

1823
  int32_t code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
6,265✔
1824
  if (TSDB_CODE_SUCCESS == code) {
6,265!
1825
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_WHEN, nodeToMsg, pNode->pWhen);
6,265✔
1826
  }
1827
  if (TSDB_CODE_SUCCESS == code) {
6,263!
1828
    code = tlvEncodeObj(pEncoder, WHEN_THEN_CODE_THEN, nodeToMsg, pNode->pThen);
6,263✔
1829
  }
1830

1831
  return code;
6,263✔
1832
}
1833

1834
static int32_t msgToWhenThenNode(STlvDecoder* pDecoder, void* pObj) {
121✔
1835
  SWhenThenNode* pNode = (SWhenThenNode*)pObj;
121✔
1836

1837
  int32_t code = TSDB_CODE_SUCCESS;
121✔
1838
  STlv*   pTlv = NULL;
121✔
1839
  tlvForEach(pDecoder, pTlv, code) {
484!
1840
    switch (pTlv->type) {
363!
1841
      case WHEN_THEN_CODE_EXPR_BASE:
121✔
1842
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
121✔
1843
        break;
121✔
1844
      case WHEN_THEN_CODE_WHEN:
121✔
1845
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
121✔
1846
        break;
121✔
1847
      case WHEN_THEN_CODE_THEN:
121✔
1848
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
121✔
1849
        break;
121✔
1850
      default:
×
1851
        break;
×
1852
    }
1853
  }
1854

1855
  return code;
121✔
1856
}
1857

1858
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
1859

1860
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,307✔
1861
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
4,307✔
1862

1863
  int32_t code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_EXPR_BASE, exprNodeToMsg, pNode);
4,307✔
1864
  if (TSDB_CODE_SUCCESS == code) {
4,307!
1865
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_CASE, nodeToMsg, pNode->pCase);
4,307✔
1866
  }
1867
  if (TSDB_CODE_SUCCESS == code) {
4,307!
1868
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_ELSE, nodeToMsg, pNode->pElse);
4,307✔
1869
  }
1870
  if (TSDB_CODE_SUCCESS == code) {
4,306!
1871
    code = tlvEncodeObj(pEncoder, CASE_WHEN_CODE_WHEN_THEN_LIST, nodeListToMsg, pNode->pWhenThenList);
4,306✔
1872
  }
1873

1874
  return code;
4,305✔
1875
}
1876

1877
static int32_t msgToCaseWhenNode(STlvDecoder* pDecoder, void* pObj) {
85✔
1878
  SCaseWhenNode* pNode = (SCaseWhenNode*)pObj;
85✔
1879

1880
  int32_t code = TSDB_CODE_SUCCESS;
85✔
1881
  STlv*   pTlv = NULL;
85✔
1882
  tlvForEach(pDecoder, pTlv, code) {
349!
1883
    switch (pTlv->type) {
264!
1884
      case CASE_WHEN_CODE_EXPR_BASE:
85✔
1885
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
85✔
1886
        break;
85✔
1887
      case CASE_WHEN_CODE_CASE:
26✔
1888
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pCase);
26✔
1889
        break;
26✔
1890
      case CASE_WHEN_CODE_ELSE:
68✔
1891
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pElse);
68✔
1892
        break;
68✔
1893
      case CASE_WHEN_CODE_WHEN_THEN_LIST:
85✔
1894
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pWhenThenList);
85✔
1895
        break;
85✔
1896
      default:
×
1897
        break;
×
1898
    }
1899
  }
1900

1901
  return code;
85✔
1902
}
1903

1904
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
1905

1906
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
829✔
1907
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
829✔
1908

1909
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
829✔
1910
  if (TSDB_CODE_SUCCESS == code) {
829!
1911
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
829✔
1912
  }
1913

1914
  return code;
829✔
1915
}
1916

1917
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
668✔
1918
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
668✔
1919

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

1935
  return code;
668✔
1936
}
1937

1938

1939
enum {
1940
  PHY_NODE_CODE_OUTPUT_DESC = 1,
1941
  PHY_NODE_CODE_CONDITIONS,
1942
  PHY_NODE_CODE_CHILDREN,
1943
  PHY_NODE_CODE_LIMIT,
1944
  PHY_NODE_CODE_SLIMIT,
1945
  PHY_NODE_CODE_INPUT_TS_ORDER,
1946
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
1947
  PHY_NODE_CODE_DYNAMIC_OP,
1948
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
1949
};
1950

1951
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
4,232,458✔
1952
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
4,232,458✔
1953

1954
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
4,232,458✔
1955
  if (TSDB_CODE_SUCCESS == code) {
4,228,800!
1956
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
4,228,896✔
1957
  }
1958
  if (TSDB_CODE_SUCCESS == code) {
4,229,468!
1959
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
4,229,651✔
1960
  }
1961
  if (TSDB_CODE_SUCCESS == code) {
4,230,217!
1962
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
4,230,548✔
1963
  }
1964
  if (TSDB_CODE_SUCCESS == code) {
4,231,285!
1965
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
4,231,878✔
1966
  }
1967
  if (TSDB_CODE_SUCCESS == code) {
4,230,747!
1968
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
4,231,531✔
1969
  }
1970
  if (TSDB_CODE_SUCCESS == code) {
4,231,839!
1971
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
4,232,739✔
1972
  }
1973
  if (TSDB_CODE_SUCCESS == code) {
4,231,495!
1974
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
4,232,495✔
1975
  }
1976
  if (TSDB_CODE_SUCCESS == code) { 
4,231,558!
1977
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
4,232,401✔
1978
  }
1979

1980
  return code;
4,231,385✔
1981
}
1982

1983
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
12,983,761✔
1984
  SPhysiNode* pNode = (SPhysiNode*)pObj;
12,983,761✔
1985

1986
  int32_t code = TSDB_CODE_SUCCESS;
12,983,761✔
1987
  STlv*   pTlv = NULL;
12,983,761✔
1988
  tlvForEach(pDecoder, pTlv, code) {
87,504,707!
1989
    switch (pTlv->type) {
74,518,960!
1990
      case PHY_NODE_CODE_OUTPUT_DESC:
12,983,163✔
1991
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
12,983,163✔
1992
        break;
12,983,949✔
1993
      case PHY_NODE_CODE_CONDITIONS:
2,552,477✔
1994
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
2,552,477✔
1995
        break;
2,552,453✔
1996
      case PHY_NODE_CODE_CHILDREN:
6,431,430✔
1997
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
6,431,430✔
1998
        break;
6,433,162✔
1999
      case PHY_NODE_CODE_LIMIT:
611,296✔
2000
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
611,296✔
2001
        break;
611,217✔
2002
      case PHY_NODE_CODE_SLIMIT:
386✔
2003
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
386✔
2004
        break;
386✔
2005
      case PHY_NODE_CODE_INPUT_TS_ORDER:
12,986,320✔
2006
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
12,986,320✔
2007
        break;
12,986,329✔
2008
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
12,985,447✔
2009
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
12,985,447✔
2010
        break;
12,985,763✔
2011
      case PHY_NODE_CODE_DYNAMIC_OP:
12,984,910✔
2012
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
12,984,910✔
2013
        break;
12,983,666✔
2014
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
12,983,531✔
2015
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
12,983,531✔
2016
        break;
12,984,021✔
2017
      default:
×
2018
        break;
×
2019
    }
2020
  }
2021

2022
  return code;
12,958,692✔
2023
}
2024

2025
enum {
2026
  PHY_SCAN_CODE_BASE_NODE = 1,
2027
  PHY_SCAN_CODE_SCAN_COLS,
2028
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2029
  PHY_SCAN_CODE_BASE_UID,
2030
  PHY_SCAN_CODE_BASE_SUID,
2031
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2032
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2033
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN
2034
};
2035

2036
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,516,251✔
2037
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
1,516,251✔
2038

2039
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,516,251✔
2040
  if (TSDB_CODE_SUCCESS == code) {
1,517,156!
2041
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
1,517,221✔
2042
  }
2043
  if (TSDB_CODE_SUCCESS == code) {
1,516,132!
2044
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
1,516,227✔
2045
  }
2046
  if (TSDB_CODE_SUCCESS == code) {
1,516,153!
2047
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
1,516,309✔
2048
  }
2049
  if (TSDB_CODE_SUCCESS == code) {
1,517,244!
2050
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
1,517,374✔
2051
  }
2052
  if (TSDB_CODE_SUCCESS == code) {
1,517,244!
2053
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
1,517,491✔
2054
  }
2055
  if (TSDB_CODE_SUCCESS == code) {
1,517,261!
2056
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
1,517,524✔
2057
  }
2058
  if (TSDB_CODE_SUCCESS == code) {
1,517,102!
2059
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
1,517,433✔
2060
  }
2061

2062
  return code;
1,517,479✔
2063
}
2064

2065
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
3,751,614✔
2066
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
3,751,614✔
2067

2068
  int32_t code = TSDB_CODE_SUCCESS;
3,751,614✔
2069
  STlv*   pTlv = NULL;
3,751,614✔
2070
  tlvForEach(pDecoder, pTlv, code) {
31,513,573!
2071
    switch (pTlv->type) {
27,761,211!
2072
      case PHY_SCAN_CODE_BASE_NODE:
3,752,018✔
2073
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,752,018✔
2074
        break;
3,750,712✔
2075
      case PHY_SCAN_CODE_SCAN_COLS:
3,747,787✔
2076
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
3,747,787✔
2077
        break;
3,751,358✔
2078
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
1,496,864✔
2079
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
1,496,864✔
2080
        break;
1,497,140✔
2081
      case PHY_SCAN_CODE_BASE_UID:
3,754,273✔
2082
        code = tlvDecodeU64(pTlv, &pNode->uid);
3,754,273✔
2083
        break;
3,753,260✔
2084
      case PHY_SCAN_CODE_BASE_SUID:
3,753,182✔
2085
        code = tlvDecodeU64(pTlv, &pNode->suid);
3,753,182✔
2086
        break;
3,752,592✔
2087
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
3,752,919✔
2088
        code = tlvDecodeI8(pTlv, &pNode->tableType);
3,752,919✔
2089
        break;
3,752,344✔
2090
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
3,752,082✔
2091
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
3,752,082✔
2092
        break;
3,752,001✔
2093
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
3,752,086✔
2094
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
3,752,086✔
2095
        break;
3,752,552✔
2096
      default:
×
2097
        break;
×
2098
    }
2099
  }
2100

2101
  return code;
3,744,085✔
2102
}
2103

2104
enum {
2105
  PHY_TAG_SCAN_CODE_SCAN = 1,
2106
  PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX
2107
};
2108

2109
static int32_t physiTagScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
43,840✔
2110
  const STagScanPhysiNode* pNode = (const STagScanPhysiNode*)pObj;
43,840✔
2111

2112
  int32_t code = tlvEncodeObj(pEncoder, PHY_TAG_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
43,840✔
2113

2114
  if (TSDB_CODE_SUCCESS == code) {
44,419!
2115
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
44,436✔
2116
  }
2117
  return code;
44,435✔
2118
}
2119

2120
static int32_t msgToPhysiTagScanNode(STlvDecoder* pDecoder, void* pObj) {
4,549✔
2121
  STagScanPhysiNode* pNode = (STagScanPhysiNode*)pObj;
4,549✔
2122

2123
  int32_t code = TSDB_CODE_SUCCESS;
4,549✔
2124
  STlv*   pTlv = NULL;
4,549✔
2125
  tlvForEach(pDecoder, pTlv, code) {
13,650!
2126
    switch (pTlv->type) {
9,094!
2127
      case PHY_TAG_SCAN_CODE_SCAN:
4,545✔
2128
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
4,545✔
2129
        break;
4,550✔
2130
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
4,549✔
2131
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
4,549✔
2132
        break;
4,551✔
2133
      default:
×
2134
        break;
×
2135
    }
2136
  }
2137

2138
  return code;
4,555✔
2139
}
2140

2141
enum {
2142
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2143
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2144
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2145
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2146
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2147
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2148
};
2149

2150
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,041✔
2151
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
8,041✔
2152

2153
  int32_t code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
8,041✔
2154
  if (TSDB_CODE_SUCCESS == code) {
8,034!
2155
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
8,035✔
2156
  }
2157
  if (TSDB_CODE_SUCCESS == code) {
8,032✔
2158
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_GROUP_SORT, pNode->groupSort);
8,031✔
2159
  }
2160
  if (TSDB_CODE_SUCCESS == code) {
8,038✔
2161
    code = tlvEncodeBool(pEncoder, PHY_LAST_ROW_SCAN_CODE_IGNULL, pNode->ignoreNull);
8,037✔
2162
  }
2163
  if (TSDB_CODE_SUCCESS == code) {
8,038✔
2164
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
8,037✔
2165
  }
2166
  if (TSDB_CODE_SUCCESS == code) {
8,035✔
2167
    code = tlvEncodeObj(pEncoder, PHY_LAST_ROW_SCAN_CODE_FUNCTYPES, SArrayToMsg, pNode->pFuncTypes);
8,034✔
2168
  }
2169

2170
  return code;
8,037✔
2171
}
2172

2173
static int32_t msgToPhysiLastRowScanNode(STlvDecoder* pDecoder, void* pObj) {
3,342✔
2174
  SLastRowScanPhysiNode* pNode = (SLastRowScanPhysiNode*)pObj;
3,342✔
2175

2176
  int32_t code = TSDB_CODE_SUCCESS;
3,342✔
2177
  STlv*   pTlv = NULL;
3,342✔
2178
  tlvForEach(pDecoder, pTlv, code) {
18,336!
2179
    switch (pTlv->type) {
14,994!
2180
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
3,343✔
2181
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
3,343✔
2182
        break;
3,336✔
2183
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
1,648✔
2184
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
1,648✔
2185
        break;
1,650✔
2186
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
3,338✔
2187
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
3,338✔
2188
        break;
3,340✔
2189
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
3,341✔
2190
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
3,341✔
2191
        break;
3,342✔
2192
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
3,280✔
2193
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
3,280✔
2194
        break;
3,282✔
2195
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
44✔
2196
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
44✔
2197
        break;
44✔
2198

2199
      default:
×
2200
        break;
×
2201
    }
2202
  }
2203

2204
  return code;
3,332✔
2205
}
2206

2207
enum {
2208
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2209
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2210
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2211
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2212
  PHY_TABLE_SCAN_CODE_TAGS,
2213
  PHY_TABLE_SCAN_CODE_SUBTABLE
2214
};
2215

2216
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,431,919✔
2217
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,431,919✔
2218

2219
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
1,431,919✔
2220
  if (TSDB_CODE_SUCCESS == code) {
1,431,738!
2221
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
1,431,836✔
2222
  }
2223
  if (TSDB_CODE_SUCCESS == code) {
1,431,094!
2224
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
1,431,156✔
2225
  }
2226
  if (TSDB_CODE_SUCCESS == code) {
1,430,989!
2227
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
1,431,108✔
2228
  }
2229
  if (TSDB_CODE_SUCCESS == code) {
1,430,916!
2230
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
1,431,108✔
2231
  }
2232
  if (TSDB_CODE_SUCCESS == code) {
1,430,982!
2233
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
1,431,281✔
2234
  }
2235
  if (TSDB_CODE_SUCCESS == code) {
1,431,060!
2236
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
1,431,188✔
2237
  }
2238
  if (TSDB_CODE_SUCCESS == code) {
1,431,033!
2239
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
1,431,229✔
2240
  }
2241
  if (TSDB_CODE_SUCCESS == code) {
1,431,029!
2242
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
1,431,253✔
2243
  }
2244
  if (TSDB_CODE_SUCCESS == code) {
1,430,850!
2245
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
1,431,118✔
2246
  }
2247
  if (TSDB_CODE_SUCCESS == code) {
1,430,734!
2248
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
1,431,001✔
2249
  }
2250
  if (TSDB_CODE_SUCCESS == code) {
1,431,325!
2251
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
1,431,596✔
2252
  }
2253
  if (TSDB_CODE_SUCCESS == code) {
1,431,591!
2254
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
1,432,099✔
2255
  }
2256
  if (TSDB_CODE_SUCCESS == code) {
1,432,250!
2257
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
1,432,772✔
2258
  }
2259
  if (TSDB_CODE_SUCCESS == code) {
1,432,051!
2260
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
1,432,385✔
2261
  }
2262
  if (TSDB_CODE_SUCCESS == code) {
1,432,181!
2263
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
1,432,558✔
2264
  }
2265
  if (TSDB_CODE_SUCCESS == code) {
1,431,603!
2266
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
1,432,039✔
2267
  }
2268
  if (TSDB_CODE_SUCCESS == code) {
1,431,933!
2269
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
1,432,382✔
2270
  }
2271
  if (TSDB_CODE_SUCCESS == code) {
1,431,266!
2272
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
1,431,764✔
2273
  }
2274
  if (TSDB_CODE_SUCCESS == code) {
1,431,130!
2275
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
1,431,651✔
2276
  }
2277
  if (TSDB_CODE_SUCCESS == code) {
1,430,601!
2278
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
1,431,276✔
2279
  }
2280
  return code;
1,431,329✔
2281
}
2282

2283
static int32_t physiTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,432,333✔
2284
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,432,333✔
2285

2286
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,432,333✔
2287
  if (TSDB_CODE_SUCCESS == code) {
1,432,264!
2288
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
1,432,319✔
2289
  }
2290
  if (TSDB_CODE_SUCCESS == code) {
1,431,756!
2291
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
1,431,829✔
2292
  }
2293
  if (TSDB_CODE_SUCCESS == code) {
1,431,838!
2294
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
1,431,946✔
2295
  }
2296
  if (TSDB_CODE_SUCCESS == code) {
1,431,826!
2297
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
1,431,966✔
2298
  }
2299
  if (TSDB_CODE_SUCCESS == code) {
1,431,596!
2300
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
1,431,795✔
2301
  }
2302

2303
  return code;
1,431,593✔
2304
}
2305

2306
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
3,720,536✔
2307
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
3,720,536✔
2308

2309
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
3,720,536✔
2310
  if (TSDB_CODE_SUCCESS == code) {
3,721,615!
2311
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
3,721,843✔
2312
  }
2313
  if (TSDB_CODE_SUCCESS == code) {
3,721,075✔
2314
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
3,719,535✔
2315
  }
2316
  if (TSDB_CODE_SUCCESS == code) {
3,722,463✔
2317
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
3,721,254✔
2318
  }
2319
  if (TSDB_CODE_SUCCESS == code) {
3,722,675✔
2320
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
3,721,523✔
2321
  }
2322
  if (TSDB_CODE_SUCCESS == code) {
3,723,296✔
2323
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
3,722,404✔
2324
  }
2325
  if (TSDB_CODE_SUCCESS == code) {
3,723,306✔
2326
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
3,721,015✔
2327
  }
2328
  if (TSDB_CODE_SUCCESS == code) {
3,725,624✔
2329
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
3,723,425✔
2330
  }
2331
  if (TSDB_CODE_SUCCESS == code) {
3,725,394✔
2332
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
3,723,283✔
2333
  }
2334
  if (TSDB_CODE_SUCCESS == code) {
3,724,375✔
2335
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
3,722,356✔
2336
  }
2337
  if (TSDB_CODE_SUCCESS == code) {
3,724,169✔
2338
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
3,720,312✔
2339
  }
2340
  if (TSDB_CODE_SUCCESS == code) {
3,726,551✔
2341
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
3,723,088✔
2342
  }
2343
  if (TSDB_CODE_SUCCESS == code) {
3,726,668✔
2344
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
3,723,457✔
2345
  }
2346
  if (TSDB_CODE_SUCCESS == code) {
3,727,273✔
2347
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
3,724,216✔
2348
  }
2349
  if (TSDB_CODE_SUCCESS == code) {
3,726,865✔
2350
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
3,722,301✔
2351
  }
2352
  if (TSDB_CODE_SUCCESS == code) {
3,728,063✔
2353
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
3,723,696✔
2354
  }
2355
  if (TSDB_CODE_SUCCESS == code) {
3,729,003✔
2356
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
3,724,665✔
2357
  }
2358
  if (TSDB_CODE_SUCCESS == code) {
3,728,937✔
2359
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
3,724,706✔
2360
  }
2361
  if (TSDB_CODE_SUCCESS == code) {
3,729,119✔
2362
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
3,723,185✔
2363
  }
2364
  if (TSDB_CODE_SUCCESS == code) {
3,730,509✔
2365
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
3,724,603✔
2366
  }
2367
  if (TSDB_CODE_SUCCESS == code) {
3,730,558✔
2368
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
3,724,684✔
2369
  }
2370
  return code;
3,724,634✔
2371
}
2372

2373
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
3,721,379✔
2374
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
3,721,379✔
2375

2376
  int32_t code = TSDB_CODE_SUCCESS;
3,721,379✔
2377
  STlv*   pTlv = NULL;
3,721,379✔
2378
  tlvForEach(pDecoder, pTlv, code) {
11,251,428✔
2379
    switch (pTlv->type) {
7,527,544!
2380
      case PHY_TABLE_SCAN_CODE_SCAN:
3,722,213✔
2381
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
3,722,213✔
2382
        break;
3,721,727✔
2383
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
3,721,501✔
2384
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
3,721,501✔
2385
        break;
3,724,461✔
2386
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2387
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2388
        break;
×
2389
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
83,830✔
2390
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
83,830✔
2391
        break;
83,861✔
2392
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2393
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2394
        break;
×
2395
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2396
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2397
        break;
×
2398
      default:
×
2399
        break;
×
2400
    }
2401
  }
2402

2403
  return code;
3,723,577✔
2404
}
2405

2406
enum {
2407
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2408
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2409
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2410
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2411
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2412
};
2413

2414
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
32,871✔
2415
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
32,871✔
2416

2417
  int32_t code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
32,871✔
2418
  if (TSDB_CODE_SUCCESS == code) {
32,862!
2419
    code = tlvEncodeObj(pEncoder, PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET, epSetToMsg, &pNode->mgmtEpSet);
32,864✔
2420
  }
2421
  if (TSDB_CODE_SUCCESS == code) {
32,865!
2422
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE, pNode->showRewrite);
32,867✔
2423
  }
2424
  if (TSDB_CODE_SUCCESS == code) {
32,862!
2425
    code = tlvEncodeI32(pEncoder, PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID, pNode->accountId);
32,865✔
2426
  }
2427
  if (TSDB_CODE_SUCCESS == code) {
32,861!
2428
    code = tlvEncodeBool(pEncoder, PHY_SYSTABLE_SCAN_CODE_SYS_INFO, pNode->sysInfo);
32,864✔
2429
  }
2430

2431
  return code;
32,867✔
2432
}
2433

2434
static int32_t msgToPhysiSysTableScanNode(STlvDecoder* pDecoder, void* pObj) {
19,074✔
2435
  SSystemTableScanPhysiNode* pNode = (SSystemTableScanPhysiNode*)pObj;
19,074✔
2436

2437
  int32_t code = TSDB_CODE_SUCCESS;
19,074✔
2438
  STlv*   pTlv = NULL;
19,074✔
2439
  tlvForEach(pDecoder, pTlv, code) {
114,400!
2440
    switch (pTlv->type) {
95,368!
2441
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
19,085✔
2442
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
19,085✔
2443
        break;
19,008✔
2444
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
19,051✔
2445
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
19,051✔
2446
        break;
19,074✔
2447
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
19,074✔
2448
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
19,074✔
2449
        break;
19,086✔
2450
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
19,084✔
2451
        code = tlvDecodeI32(pTlv, &pNode->accountId);
19,084✔
2452
        break;
19,081✔
2453
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
19,074✔
2454
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
19,074✔
2455
        break;
19,077✔
2456
      default:
×
2457
        break;
×
2458
    }
2459
  }
2460

2461
  return code;
19,035✔
2462
}
2463

2464
enum {
2465
  PHY_PROJECT_CODE_BASE_NODE = 1,
2466
  PHY_PROJECT_CODE_PROJECTIONS,
2467
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2468
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2469
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2470
};
2471

2472
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
550,006✔
2473
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
550,006✔
2474

2475
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
550,006✔
2476
  if (TSDB_CODE_SUCCESS == code) {
549,804!
2477
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
549,811✔
2478
  }
2479
  if (TSDB_CODE_SUCCESS == code) {
549,567!
2480
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
549,577✔
2481
  }
2482
  if (TSDB_CODE_SUCCESS == code) {
549,621!
2483
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
549,631✔
2484
  }
2485
  if (TSDB_CODE_SUCCESS == code) {
549,597!
2486
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
549,602✔
2487
  }
2488

2489
  return code;
549,582✔
2490
}
2491

2492
static int32_t msgToPhysiProjectNode(STlvDecoder* pDecoder, void* pObj) {
1,106,202✔
2493
  SProjectPhysiNode* pNode = (SProjectPhysiNode*)pObj;
1,106,202✔
2494

2495
  int32_t code = TSDB_CODE_SUCCESS;
1,106,202✔
2496
  STlv*   pTlv = NULL;
1,106,202✔
2497
  tlvForEach(pDecoder, pTlv, code) {
6,637,971!
2498
    switch (pTlv->type) {
5,531,807!
2499
      case PHY_PROJECT_CODE_BASE_NODE:
1,106,460✔
2500
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,106,460✔
2501
        break;
1,106,269✔
2502
      case PHY_PROJECT_CODE_PROJECTIONS:
1,106,266✔
2503
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
1,106,266✔
2504
        break;
1,106,550✔
2505
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
1,106,475✔
2506
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
1,106,475✔
2507
        break;
1,106,339✔
2508
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
1,106,323✔
2509
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,106,323✔
2510
        break;
1,106,301✔
2511
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
1,106,283✔
2512
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
1,106,283✔
2513
        break;
1,106,310✔
2514
      default:
×
2515
        break;
×
2516
    }
2517
  }
2518

2519
  return code;
1,105,846✔
2520
}
2521

2522
enum {
2523
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2524
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2525
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2526
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2527
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2528
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2529
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2530
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2531
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2532
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2533
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2534
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2535
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2536
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2537
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2538
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2539
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2540
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2541
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2542
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2543
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2544
};
2545

2546
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
90,242✔
2547
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
90,242✔
2548

2549
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
90,242✔
2550
  if (TSDB_CODE_SUCCESS == code) {
90,221!
2551
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
90,221✔
2552
  }
2553
  if (TSDB_CODE_SUCCESS == code) {
90,221!
2554
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
90,221✔
2555
  }
2556
  if (TSDB_CODE_SUCCESS == code) {
90,225!
2557
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
90,226✔
2558
  }
2559
  if (TSDB_CODE_SUCCESS == code) {
90,224!
2560
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
90,225✔
2561
  }
2562
  if (TSDB_CODE_SUCCESS == code) {
90,222!
2563
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
90,223✔
2564
  }  
2565
  if (TSDB_CODE_SUCCESS == code) {
90,221!
2566
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
90,222✔
2567
  }
2568
  if (TSDB_CODE_SUCCESS == code) {
90,221!
2569
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
90,222✔
2570
  }  
2571
  if (TSDB_CODE_SUCCESS == code) {
90,221!
2572
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
90,222✔
2573
  }  
2574
  if (TSDB_CODE_SUCCESS == code) {
90,222!
2575
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
90,223✔
2576
  }  
2577
  if (TSDB_CODE_SUCCESS == code) {
90,222!
2578
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
90,223✔
2579
  }
2580
  if (TSDB_CODE_SUCCESS == code) {
90,222!
2581
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
90,223✔
2582
  }
2583
  if (TSDB_CODE_SUCCESS == code) {
90,221!
2584
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
90,222✔
2585
  }
2586
  if (TSDB_CODE_SUCCESS == code) {
90,220!
2587
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
90,221✔
2588
  }
2589
  if (TSDB_CODE_SUCCESS == code) {
90,221!
2590
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
90,222✔
2591
  }
2592
  if (TSDB_CODE_SUCCESS == code) {
90,207!
2593
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
90,208✔
2594
  }
2595
  if (TSDB_CODE_SUCCESS == code) {
90,207!
2596
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
90,208✔
2597
  }
2598
  if (TSDB_CODE_SUCCESS == code) {
90,207!
2599
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
90,210✔
2600
  }
2601
  if (TSDB_CODE_SUCCESS == code) {
90,208!
2602
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
90,211✔
2603
  }
2604
  if (TSDB_CODE_SUCCESS == code) {
90,212!
2605
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
90,215✔
2606
  }
2607
  if (TSDB_CODE_SUCCESS == code) {
90,215!
2608
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
90,218✔
2609
  }
2610
  
2611
  return code;
90,213✔
2612
}
2613

2614
static int32_t msgToPhysiMergeJoinNode(STlvDecoder* pDecoder, void* pObj) {
7,317✔
2615
  SSortMergeJoinPhysiNode* pNode = (SSortMergeJoinPhysiNode*)pObj;
7,317✔
2616

2617
  int32_t code = TSDB_CODE_SUCCESS;
7,317✔
2618
  STlv*   pTlv = NULL;
7,317✔
2619
  tlvForEach(pDecoder, pTlv, code) {
104,819!
2620
    switch (pTlv->type) {
97,500!
2621
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
7,317✔
2622
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
7,317✔
2623
        break;
7,317✔
2624
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
7,317✔
2625
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
7,317✔
2626
        break;
7,316✔
2627
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
7,315✔
2628
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
7,315✔
2629
        break;
7,317✔
2630
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
668✔
2631
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
668✔
2632
        break;
668✔
2633
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
174✔
2634
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
174✔
2635
        break;
174✔
2636
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
7,316✔
2637
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
7,316✔
2638
        break;
7,316✔
2639
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
248✔
2640
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
248✔
2641
        break;
248✔
2642
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
158✔
2643
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
158✔
2644
        break;
158✔
2645
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
7,316✔
2646
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
7,316✔
2647
        break;
7,315✔
2648
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
7,315✔
2649
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
7,315✔
2650
        break;
7,315✔
2651
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
221✔
2652
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
221✔
2653
        break;
221✔
2654
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
221✔
2655
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
221✔
2656
        break;
221✔
2657
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
285✔
2658
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
285✔
2659
        break;
285✔
2660
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
410✔
2661
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
410✔
2662
        break;
410✔
2663
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
7,315✔
2664
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
7,315✔
2665
        break;
7,317✔
2666
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
7,317✔
2667
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
7,317✔
2668
        break;
7,317✔
2669
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
7,317✔
2670
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
7,317✔
2671
        break;
7,317✔
2672
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
7,318✔
2673
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
7,318✔
2674
        break;
7,318✔
2675
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
7,318✔
2676
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
7,318✔
2677
        break;
7,318✔
2678
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
7,317✔
2679
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
7,317✔
2680
        break;
7,317✔
2681
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
7,317✔
2682
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
7,317✔
2683
        break;
7,317✔
2684
      default:
×
2685
        break;
×
2686
    }
2687
  }
2688

2689
  return code;
7,317✔
2690
}
2691

2692
enum {
2693
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2694
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2695
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2696
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2697
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2698
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2699
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2700
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2701
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2702
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2703
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2704
  PHY_HASH_JOIN_CODE_TARGETS,
2705
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2706
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2707
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2708
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2709
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2710
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2711
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2712
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2713

2714
};
2715

2716
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,140✔
2717
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
9,140✔
2718

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

2778
  return code;
9,140✔
2779
}
2780

2781

2782
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
154✔
2783
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
154✔
2784

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

2854
  return code;
154✔
2855
}
2856

2857

2858
enum {
2859
  PHY_AGG_CODE_BASE_NODE = 1,
2860
  PHY_AGG_CODE_EXPR,
2861
  PHY_AGG_CODE_GROUP_KEYS,
2862
  PHY_AGG_CODE_AGG_FUNCS,
2863
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
2864
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
2865
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
2866
};
2867

2868
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
885,768✔
2869
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
885,768✔
2870

2871
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
885,768✔
2872
  if (TSDB_CODE_SUCCESS == code) {
885,815!
2873
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
885,826✔
2874
  }
2875
  if (TSDB_CODE_SUCCESS == code) {
885,456✔
2876
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
885,334✔
2877
  }
2878
  if (TSDB_CODE_SUCCESS == code) {
885,497✔
2879
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
885,398✔
2880
  }
2881
  if (TSDB_CODE_SUCCESS == code) {
885,180✔
2882
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
885,086✔
2883
  }
2884
  if (TSDB_CODE_SUCCESS == code) {
885,308✔
2885
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
885,220✔
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
885,256✔
2888
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
885,154✔
2889
  }
2890

2891
  return code;
885,089✔
2892
}
2893

2894
static int32_t msgToPhysiAggNode(STlvDecoder* pDecoder, void* pObj) {
362,109✔
2895
  SAggPhysiNode* pNode = (SAggPhysiNode*)pObj;
362,109✔
2896

2897
  int32_t code = TSDB_CODE_SUCCESS;
362,109✔
2898
  STlv*   pTlv = NULL;
362,109✔
2899
  tlvForEach(pDecoder, pTlv, code) {
2,197,343!
2900
    switch (pTlv->type) {
1,835,219!
2901
      case PHY_AGG_CODE_BASE_NODE:
362,123✔
2902
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
362,123✔
2903
        break;
362,048✔
2904
      case PHY_AGG_CODE_EXPR:
4,818✔
2905
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
4,818✔
2906
        break;
4,818✔
2907
      case PHY_AGG_CODE_GROUP_KEYS:
45,561✔
2908
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
45,561✔
2909
        break;
45,591✔
2910
      case PHY_AGG_CODE_AGG_FUNCS:
336,247✔
2911
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
336,247✔
2912
        break;
336,338✔
2913
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
362,196✔
2914
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
362,196✔
2915
        break;
362,150✔
2916
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
362,148✔
2917
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
362,148✔
2918
        break;
362,140✔
2919
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
362,126✔
2920
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
362,126✔
2921
        break;
362,149✔
2922
      default:
×
2923
        break;
×
2924
    }
2925
  }
2926

2927
  return code;
362,059✔
2928
}
2929

2930
enum {
2931
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
2932
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
2933
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
2934
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
2935
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
2936
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA
2937
};
2938

2939
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
730,146✔
2940
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
730,146✔
2941

2942
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
730,146✔
2943
  if (TSDB_CODE_SUCCESS == code) {
730,105!
2944
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
730,107✔
2945
  }
2946
  if (TSDB_CODE_SUCCESS == code) {
730,107!
2947
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
730,108✔
2948
  }
2949
  if (TSDB_CODE_SUCCESS == code) {
730,106!
2950
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
730,107✔
2951
  }
2952
  if (TSDB_CODE_SUCCESS == code) {
730,109!
2953
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
730,111✔
2954
  }
2955
  if (TSDB_CODE_SUCCESS == code) {
730,110!
2956
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
730,111✔
2957
  }
2958

2959
  return code;
730,112✔
2960
}
2961

2962
static int32_t msgToPhysiExchangeNode(STlvDecoder* pDecoder, void* pObj) {
2,803,499✔
2963
  SExchangePhysiNode* pNode = (SExchangePhysiNode*)pObj;
2,803,499✔
2964

2965
  int32_t code = TSDB_CODE_SUCCESS;
2,803,499✔
2966
  STlv*   pTlv = NULL;
2,803,499✔
2967
  tlvForEach(pDecoder, pTlv, code) {
19,623,842!
2968
    switch (pTlv->type) {
16,820,435!
2969
      case PHY_EXCHANGE_CODE_BASE_NODE:
2,803,470✔
2970
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
2,803,470✔
2971
        break;
2,803,380✔
2972
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
2,803,373✔
2973
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
2,803,373✔
2974
        break;
2,803,351✔
2975
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
2,803,371✔
2976
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
2,803,371✔
2977
        break;
2,803,362✔
2978
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
2,803,394✔
2979
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
2,803,394✔
2980
        break;
2,803,407✔
2981
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
2,803,412✔
2982
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
2,803,412✔
2983
        break;
2,803,482✔
2984
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
2,803,415✔
2985
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
2,803,415✔
2986
        break;
2,803,361✔
2987
      default:
×
2988
        break;
×
2989
    }
2990
  }
2991

2992
  return code;
2,803,070✔
2993
}
2994

2995
enum {
2996
  PHY_MERGE_CODE_BASE_NODE = 1,
2997
  PHY_MERGE_CODE_MERGE_KEYS,
2998
  PHY_MERGE_CODE_TARGETS,
2999
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3000
  PHY_MERGE_CODE_SRC_GROUP_ID,
3001
  PHY_MERGE_CODE_GROUP_SORT,
3002
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3003
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3004
  PHY_MERGE_CODE_TYPE,
3005
};
3006

3007
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
78,360✔
3008
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
78,360✔
3009

3010
  int32_t code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
78,360✔
3011
  if (TSDB_CODE_SUCCESS == code) {
78,356!
3012
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_MERGE_KEYS, nodeListToMsg, pNode->pMergeKeys);
78,356✔
3013
  }
3014
  if (TSDB_CODE_SUCCESS == code) {
78,359!
3015
    code = tlvEncodeObj(pEncoder, PHY_MERGE_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
78,359✔
3016
  }
3017
  if (TSDB_CODE_SUCCESS == code) {
78,354!
3018
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_NUM_OF_CHANNELS, pNode->numOfChannels);
78,354✔
3019
  }
3020
  if (TSDB_CODE_SUCCESS == code) {
78,353!
3021
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_SRC_GROUP_ID, pNode->srcGroupId);
78,353✔
3022
  }
3023
  if (TSDB_CODE_SUCCESS == code) {
78,355!
3024
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_GROUP_SORT, pNode->groupSort);
78,355✔
3025
  }
3026
  if (TSDB_CODE_SUCCESS == code) {
78,357!
3027
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
78,357✔
3028
  }
3029
  if (TSDB_CODE_SUCCESS == code) {
78,355!
3030
    code = tlvEncodeBool(pEncoder, PHY_MERGE_CODE_INPUT_WITH_GROUP_ID, pNode->inputWithGroupId);
78,355✔
3031
  }
3032
  if (TSDB_CODE_SUCCESS == code) {
78,356!
3033
    code = tlvEncodeI32(pEncoder, PHY_MERGE_CODE_TYPE, pNode->type);
78,356✔
3034
  }
3035

3036
  return code;
78,356✔
3037
}
3038

3039
static int32_t msgToPhysiMergeNode(STlvDecoder* pDecoder, void* pObj) {
1,266,740✔
3040
  SMergePhysiNode* pNode = (SMergePhysiNode*)pObj;
1,266,740✔
3041

3042
  int32_t code = TSDB_CODE_SUCCESS;
1,266,740✔
3043
  STlv*   pTlv = NULL;
1,266,740✔
3044
  tlvForEach(pDecoder, pTlv, code) {
12,667,110!
3045
    switch (pTlv->type) {
11,400,375!
3046
      case PHY_MERGE_CODE_BASE_NODE:
1,266,736✔
3047
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,266,736✔
3048
        break;
1,266,704✔
3049
      case PHY_MERGE_CODE_MERGE_KEYS:
1,266,552✔
3050
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
1,266,552✔
3051
        break;
1,266,583✔
3052
      case PHY_MERGE_CODE_TARGETS:
1,266,736✔
3053
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
1,266,736✔
3054
        break;
1,266,748✔
3055
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
1,266,736✔
3056
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
1,266,736✔
3057
        break;
1,266,726✔
3058
      case PHY_MERGE_CODE_SRC_GROUP_ID:
1,266,723✔
3059
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
1,266,723✔
3060
        break;
1,266,708✔
3061
      case PHY_MERGE_CODE_GROUP_SORT:
1,266,713✔
3062
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
1,266,713✔
3063
        break;
1,266,714✔
3064
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
1,266,716✔
3065
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
1,266,716✔
3066
        break;
1,266,723✔
3067
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
1,266,730✔
3068
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
1,266,730✔
3069
        break;
1,266,738✔
3070
      case PHY_MERGE_CODE_TYPE:
1,266,733✔
3071
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
1,266,733✔
3072
        break;
1,266,726✔
3073
      default:
×
3074
        break;
×
3075
    }
3076
  }
3077

3078
  return code;
1,266,615✔
3079
}
3080

3081
enum {
3082
  PHY_SORT_CODE_BASE_NODE = 1,
3083
  PHY_SORT_CODE_EXPR,
3084
  PHY_SORT_CODE_SORT_KEYS,
3085
  PHY_SORT_CODE_TARGETS,
3086
  PHY_SORT_CODE_CALC_GROUPID,
3087
  PHY_SORT_CODE_EXCLUDE_PK_COL
3088
};
3089

3090
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
213,031✔
3091
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
213,031✔
3092

3093
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
213,031✔
3094
  if (TSDB_CODE_SUCCESS == code) {
213,013!
3095
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
213,015✔
3096
  }
3097
  if (TSDB_CODE_SUCCESS == code) {
213,018!
3098
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
213,019✔
3099
  }
3100
  if (TSDB_CODE_SUCCESS == code) {
212,996!
3101
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
212,997✔
3102
  }
3103
  if (TSDB_CODE_SUCCESS == code) {
212,984✔
3104
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
212,983✔
3105
  }
3106
  if (TSDB_CODE_SUCCESS == code) {
212,992✔
3107
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
212,991✔
3108
  }
3109

3110
  return code;
213,002✔
3111
}
3112

3113
static int32_t msgToPhysiSortNode(STlvDecoder* pDecoder, void* pObj) {
717,870✔
3114
  SSortPhysiNode* pNode = (SSortPhysiNode*)pObj;
717,870✔
3115

3116
  int32_t code = TSDB_CODE_SUCCESS;
717,870✔
3117
  STlv*   pTlv = NULL;
717,870✔
3118
  tlvForEach(pDecoder, pTlv, code) {
4,308,133!
3119
    switch (pTlv->type) {
3,589,902!
3120
      case PHY_SORT_CODE_BASE_NODE:
717,860✔
3121
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
717,860✔
3122
        break;
717,858✔
3123
      case PHY_SORT_CODE_EXPR:
854✔
3124
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
854✔
3125
        break;
855✔
3126
      case PHY_SORT_CODE_SORT_KEYS:
717,860✔
3127
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
717,860✔
3128
        break;
717,910✔
3129
      case PHY_SORT_CODE_TARGETS:
717,901✔
3130
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
717,901✔
3131
        break;
717,913✔
3132
      case PHY_SORT_CODE_CALC_GROUPID:
717,894✔
3133
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
717,894✔
3134
        break;
717,867✔
3135
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
717,865✔
3136
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
717,865✔
3137
      default:
717,860✔
3138
        break;
717,860✔
3139
    }
3140
  }
3141

3142
  return code;
718,134✔
3143
}
3144

3145
enum {
3146
  PHY_WINDOW_CODE_BASE_NODE = 1,
3147
  PHY_WINDOW_CODE_EXPR,
3148
  PHY_WINDOW_CODE_FUNCS,
3149
  PHY_WINDOW_CODE_TS_PK,
3150
  PHY_WINDOW_CODE_TS_END,
3151
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3152
  PHY_WINDOW_CODE_WATERMARK,
3153
  PHY_WINDOW_CODE_DELETE_MARK,
3154
  PHY_WINDOW_CODE_IG_EXPIRED,
3155
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3156
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3157
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3158
  PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY,
3159
};
3160

3161
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
89,713✔
3162
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
89,713✔
3163

3164
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
89,713✔
3165
  if (TSDB_CODE_SUCCESS == code) {
89,669!
3166
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
89,670✔
3167
  }
3168
  if (TSDB_CODE_SUCCESS == code) {
89,669✔
3169
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
89,667✔
3170
  }
3171
  if (TSDB_CODE_SUCCESS == code) {
89,622✔
3172
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
89,621✔
3173
  }
3174
  if (TSDB_CODE_SUCCESS == code) {
89,586✔
3175
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
89,585✔
3176
  }
3177
  if (TSDB_CODE_SUCCESS == code) {
89,591!
3178
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
89,591✔
3179
  }
3180
  if (TSDB_CODE_SUCCESS == code) {
89,647!
3181
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
89,647✔
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
89,635!
3184
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
89,640✔
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
89,636!
3187
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
89,648✔
3188
  }
3189
  if (TSDB_CODE_SUCCESS == code) {
89,624!
3190
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
89,639✔
3191
  }
3192
  if (TSDB_CODE_SUCCESS == code) {
89,619!
3193
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY, pNode->destHasPrimaryKey);
89,630✔
3194
  }
3195

3196
  return code;
89,641✔
3197
}
3198

3199
static int32_t msgToPhysiWindowNode(STlvDecoder* pDecoder, void* pObj) {
2,330,344✔
3200
  SWindowPhysiNode* pNode = (SWindowPhysiNode*)pObj;
2,330,344✔
3201

3202
  int32_t code = TSDB_CODE_SUCCESS;
2,330,344✔
3203
  STlv*   pTlv = NULL;
2,330,344✔
3204
  tlvForEach(pDecoder, pTlv, code) {
23,406,391!
3205
    switch (pTlv->type) {
21,074,977!
3206
      case PHY_WINDOW_CODE_BASE_NODE:
2,330,420✔
3207
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
2,330,420✔
3208
        break;
2,330,464✔
3209
      case PHY_WINDOW_CODE_EXPR:
1,038✔
3210
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
1,038✔
3211
        break;
1,038✔
3212
      case PHY_WINDOW_CODE_FUNCS:
2,330,754✔
3213
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
2,330,754✔
3214
        break;
2,332,170✔
3215
      case PHY_WINDOW_CODE_TS_PK:
2,331,956✔
3216
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
2,331,956✔
3217
        break;
2,332,153✔
3218
      case PHY_WINDOW_CODE_TS_END:
94,319✔
3219
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
94,319✔
3220
        break;
94,320✔
3221
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
2,331,836✔
3222
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
2,331,836✔
3223
        break;
2,331,403✔
3224
      case PHY_WINDOW_CODE_WATERMARK:
2,330,930✔
3225
        code = tlvDecodeI64(pTlv, &pNode->watermark);
2,330,930✔
3226
        break;
2,330,779✔
3227
      case PHY_WINDOW_CODE_DELETE_MARK:
2,330,967✔
3228
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
2,330,967✔
3229
        break;
2,330,770✔
3230
      case PHY_WINDOW_CODE_IG_EXPIRED:
2,331,001✔
3231
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
2,331,001✔
3232
        break;
2,330,763✔
3233
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
2,330,660✔
3234
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
2,330,660✔
3235
        break;
2,331,146✔
3236
      case PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY:
2,331,096✔
3237
        code = tlvDecodeI8(pTlv, &pNode->destHasPrimaryKey);
2,331,096✔
3238
        break;
2,331,041✔
3239
      default:
×
3240
        break;
×
3241
    }
3242
  }
3243

3244
  return code;
2,329,216✔
3245
}
3246

3247
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS };
3248

3249
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,505✔
3250
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
80,505✔
3251

3252
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
80,505✔
3253
  if (TSDB_CODE_SUCCESS == code) {
80,508!
3254
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
80,508✔
3255
  }
3256
  if (TSDB_CODE_SUCCESS == code) {
80,490✔
3257
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
80,480✔
3258
  }
3259
  if (TSDB_CODE_SUCCESS == code) {
80,477✔
3260
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
80,469✔
3261
  }
3262
  if (TSDB_CODE_SUCCESS == code) {
80,501✔
3263
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
80,493✔
3264
  }
3265

3266
  return code;
80,498✔
3267
}
3268

3269
static int32_t physiIntervalNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,587✔
3270
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
80,587✔
3271

3272
  int32_t code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
80,587✔
3273
  if (TSDB_CODE_SUCCESS == code) {
80,510!
3274
    code = tlvEncodeObj(pEncoder, PHY_INTERVAL_CODE_INLINE_ATTRS, physiIntervalNodeInlineToMsg, pNode);
80,511✔
3275
  }
3276

3277
  return code;
80,507✔
3278
}
3279

3280
static int32_t msgToPhysiIntervalNodeInline(STlvDecoder* pDecoder, void* pObj) {
1,893,817✔
3281
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
1,893,817✔
3282

3283
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
1,893,817✔
3284
  if (TSDB_CODE_SUCCESS == code) {
1,894,264!
3285
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
1,894,301✔
3286
  }
3287
  if (TSDB_CODE_SUCCESS == code) {
1,894,001✔
3288
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
1,893,586✔
3289
  }
3290
  if (TSDB_CODE_SUCCESS == code) {
1,894,401✔
3291
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
1,894,008✔
3292
  }
3293
  if (TSDB_CODE_SUCCESS == code) {
1,894,884✔
3294
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
1,894,533✔
3295
  }
3296

3297
  return code;
1,894,593✔
3298
}
3299

3300
static int32_t msgToPhysiIntervalNode(STlvDecoder* pDecoder, void* pObj) {
1,893,781✔
3301
  SIntervalPhysiNode* pNode = (SIntervalPhysiNode*)pObj;
1,893,781✔
3302

3303
  int32_t code = TSDB_CODE_SUCCESS;
1,893,781✔
3304
  STlv*   pTlv = NULL;
1,893,781✔
3305
  tlvForEach(pDecoder, pTlv, code) {
5,682,171✔
3306
    switch (pTlv->type) {
3,787,922!
3307
      case PHY_INTERVAL_CODE_WINDOW:
1,894,129✔
3308
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
1,894,129✔
3309
        break;
1,893,860✔
3310
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
1,893,793✔
3311
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
1,893,793✔
3312
        break;
1,894,530✔
3313
      default:
×
3314
        break;
×
3315
    }
3316
  }
3317

3318
  return code;
1,893,608✔
3319
}
3320

3321
enum {
3322
  PHY_FILL_CODE_BASE_NODE = 1,
3323
  PHY_FILL_CODE_MODE,
3324
  PHY_FILL_CODE_FILL_EXPRS,
3325
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3326
  PHY_FILL_CODE_WSTART,
3327
  PHY_FILL_CODE_VALUES,
3328
  PHY_FILL_CODE_TIME_RANGE,
3329
  PHY_FILL_CODE_INPUT_TS_ORDER,
3330
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3331
};
3332

3333
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
13,931✔
3334
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
13,931✔
3335

3336
  int32_t code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
13,931✔
3337
  if (TSDB_CODE_SUCCESS == code) {
13,931!
3338
    code = tlvEncodeEnum(pEncoder, PHY_FILL_CODE_MODE, pNode->mode);
13,931✔
3339
  }
3340
  if (TSDB_CODE_SUCCESS == code) {
13,932!
3341
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_EXPRS, nodeListToMsg, pNode->pFillExprs);
13,932✔
3342
  }
3343
  if (TSDB_CODE_SUCCESS == code) {
13,932!
3344
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_NOT_FILL_EXPRS, nodeListToMsg, pNode->pNotFillExprs);
13,932✔
3345
  }
3346
  if (TSDB_CODE_SUCCESS == code) {
13,930✔
3347
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_WSTART, nodeToMsg, pNode->pWStartTs);
13,929✔
3348
  }
3349
  if (TSDB_CODE_SUCCESS == code) {
13,930✔
3350
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_VALUES, nodeToMsg, pNode->pValues);
13,929✔
3351
  }
3352
  if (TSDB_CODE_SUCCESS == code) {
13,928✔
3353
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_TIME_RANGE, timeWindowToMsg, &pNode->timeRange);
13,927✔
3354
  }
3355
  if (TSDB_CODE_SUCCESS == code) {
13,930✔
3356
    code = tlvEncodeObj(pEncoder, PHY_FILL_CODE_FILL_NULL_EXPRS, nodeListToMsg, pNode->pFillNullExprs);
13,929✔
3357
  }
3358

3359
  return code;
13,930✔
3360
}
3361

3362
static int32_t msgToPhysiFillNode(STlvDecoder* pDecoder, void* pObj) {
465,284✔
3363
  SFillPhysiNode* pNode = (SFillPhysiNode*)pObj;
465,284✔
3364

3365
  int32_t code = TSDB_CODE_SUCCESS;
465,284✔
3366
  STlv*   pTlv = NULL;
465,284✔
3367
  tlvForEach(pDecoder, pTlv, code) {
3,434,946!
3368
    switch (pTlv->type) {
2,969,667!
3369
      case PHY_FILL_CODE_BASE_NODE:
465,280✔
3370
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
465,280✔
3371
        break;
465,272✔
3372
      case PHY_FILL_CODE_MODE:
465,274✔
3373
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
465,274✔
3374
        break;
465,273✔
3375
      case PHY_FILL_CODE_FILL_EXPRS:
465,275✔
3376
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
465,275✔
3377
        break;
465,284✔
3378
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
85,486✔
3379
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
85,486✔
3380
        break;
85,486✔
3381
      case PHY_FILL_CODE_WSTART:
465,285✔
3382
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
465,285✔
3383
        break;
465,282✔
3384
      case PHY_FILL_CODE_VALUES:
386,849✔
3385
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
386,849✔
3386
        break;
386,849✔
3387
      case PHY_FILL_CODE_TIME_RANGE:
465,281✔
3388
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
465,281✔
3389
        break;
465,278✔
3390
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
170,937✔
3391
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
170,937✔
3392
        break;
170,938✔
3393
      default:
×
3394
        break;
×
3395
    }
3396
  }
3397

3398
  return code;
465,251✔
3399
}
3400

3401
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3402

3403
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,854✔
3404
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
3,854✔
3405

3406
  int32_t code = tlvEncodeObj(pEncoder, PHY_SESSION_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
3,854✔
3407
  if (TSDB_CODE_SUCCESS == code) {
3,854!
3408
    code = tlvEncodeI64(pEncoder, PHY_SESSION_CODE_GAP, pNode->gap);
3,854✔
3409
  }
3410

3411
  return code;
3,854✔
3412
}
3413

3414
static int32_t msgToPhysiSessionWindowNode(STlvDecoder* pDecoder, void* pObj) {
94,320✔
3415
  SSessionWinodwPhysiNode* pNode = (SSessionWinodwPhysiNode*)pObj;
94,320✔
3416

3417
  int32_t code = TSDB_CODE_SUCCESS;
94,320✔
3418
  STlv*   pTlv = NULL;
94,320✔
3419
  tlvForEach(pDecoder, pTlv, code) {
282,938!
3420
    switch (pTlv->type) {
188,629!
3421
      case PHY_SESSION_CODE_WINDOW:
94,320✔
3422
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
94,320✔
3423
        break;
94,308✔
3424
      case PHY_SESSION_CODE_GAP:
94,309✔
3425
        code = tlvDecodeI64(pTlv, &pNode->gap);
94,309✔
3426
        break;
94,310✔
3427
      default:
×
3428
        break;
×
3429
    }
3430
  }
3431

3432
  return code;
94,309✔
3433
}
3434

3435
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY };
3436

3437
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,160✔
3438
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
5,160✔
3439

3440
  int32_t code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
5,160✔
3441
  if (TSDB_CODE_SUCCESS == code) {
5,160!
3442
    code = tlvEncodeObj(pEncoder, PHY_STATE_CODE_KEY, nodeToMsg, pNode->pStateKey);
5,160✔
3443
  }
3444

3445
  return code;
5,160✔
3446
}
3447

3448
static int32_t msgToPhysiStateWindowNode(STlvDecoder* pDecoder, void* pObj) {
65,668✔
3449
  SStateWinodwPhysiNode* pNode = (SStateWinodwPhysiNode*)pObj;
65,668✔
3450

3451
  int32_t code = TSDB_CODE_SUCCESS;
65,668✔
3452
  STlv*   pTlv = NULL;
65,668✔
3453
  tlvForEach(pDecoder, pTlv, code) {
197,007!
3454
    switch (pTlv->type) {
131,337!
3455
      case PHY_STATE_CODE_WINDOW:
65,669✔
3456
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
65,669✔
3457
        break;
65,668✔
3458
      case PHY_STATE_CODE_KEY:
65,668✔
3459
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStateKey);
65,668✔
3460
        break;
65,671✔
3461
      default:
×
3462
        break;
×
3463
    }
3464
  }
3465

3466
  return code;
65,671✔
3467
}
3468

3469
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND };
3470

3471
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
62✔
3472
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
62✔
3473

3474
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
62✔
3475
  if (TSDB_CODE_SUCCESS == code) {
62!
3476
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
62✔
3477
  }
3478
  if (TSDB_CODE_SUCCESS == code) {
62!
3479
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
62✔
3480
  }
3481

3482
  return code;
62✔
3483
}
3484

3485
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
271,620✔
3486
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
271,620✔
3487

3488
  int32_t code = TSDB_CODE_SUCCESS;
271,620✔
3489
  STlv*   pTlv = NULL;
271,620✔
3490
  tlvForEach(pDecoder, pTlv, code) {
1,086,485!
3491
    switch (pTlv->type) {
814,862!
3492
      case PHY_EVENT_CODE_WINDOW:
271,620✔
3493
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
271,620✔
3494
        break;
271,621✔
3495
      case PHY_EVENT_CODE_START_COND:
271,621✔
3496
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartCond);
271,621✔
3497
        break;
271,621✔
3498
      case PHY_EVENT_CODE_END_COND:
271,621✔
3499
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndCond);
271,621✔
3500
        break;
271,623✔
3501
      default:
×
3502
        break;
×
3503
    }
3504
  }
3505

3506
  return code;
271,621✔
3507
}
3508

3509
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3510

3511
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
44✔
3512
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
44✔
3513

3514
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
44✔
3515
  if (TSDB_CODE_SUCCESS == code) {
45!
3516
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
45✔
3517
  }
3518
  if (TSDB_CODE_SUCCESS == code) {
45!
3519
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
45✔
3520
  }
3521

3522
  return code;
45✔
3523
}
3524

3525
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
5,323✔
3526
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
5,323✔
3527

3528
  int32_t code = TSDB_CODE_SUCCESS;
5,323✔
3529
  STlv*   pTlv = NULL;
5,323✔
3530
  tlvForEach(pDecoder, pTlv, code) {
21,229!
3531
    switch (pTlv->type) {
15,926!
3532
      case PHY_COUNT_CODE_WINDOW:
5,327✔
3533
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
5,327✔
3534
        break;
5,307✔
3535
      case PHY_COUNT_CODE_WINDOW_COUNT:
5,302✔
3536
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
5,302✔
3537
        break;
5,300✔
3538
      case PHY_COUNT_CODE_WINDOW_SLIDING:
5,297✔
3539
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
5,297✔
3540
        break;
5,299✔
3541
      default:
×
3542
        break;
×
3543
    }
3544
  }
3545

3546
  return code;
5,300✔
3547
}
3548

3549
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3550

3551
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3552
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3553

3554
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3555
  if (TSDB_CODE_SUCCESS == code) {
×
3556
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3557
  }
3558
  if (TSDB_CODE_SUCCESS == code) {
×
3559
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3560
  }
3561

3562
  return code;
×
3563
}
3564

3565
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3566
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3567

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

3586
  return code;
×
3587
}
3588

3589
enum {
3590
  PHY_PARTITION_CODE_BASE_NODE = 1,
3591
  PHY_PARTITION_CODE_EXPR,
3592
  PHY_PARTITION_CODE_KEYS,
3593
  PHY_PARTITION_CODE_TARGETS,
3594
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3595
  PHY_PARTITION_CODE_TS_SLOTID
3596
};
3597

3598
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,363✔
3599
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
14,363✔
3600

3601
  int32_t code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
14,363✔
3602
  if (TSDB_CODE_SUCCESS == code) {
14,368!
3603
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_EXPR, nodeListToMsg, pNode->pExprs);
14,368✔
3604
  }
3605
  if (TSDB_CODE_SUCCESS == code) {
14,369!
3606
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_KEYS, nodeListToMsg, pNode->pPartitionKeys);
14,369✔
3607
  }
3608
  if (TSDB_CODE_SUCCESS == code) {
14,358!
3609
    code = tlvEncodeObj(pEncoder, PHY_PARTITION_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
14,358✔
3610
  }
3611
  if (TSDB_CODE_SUCCESS == code) {
14,362✔
3612
    code = tlvEncodeBool(pEncoder, PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER, pNode->needBlockOutputTsOrder);
14,361✔
3613
  }
3614
  if (TSDB_CODE_SUCCESS == code) {
14,362✔
3615
    code = tlvEncodeI32(pEncoder, PHY_PARTITION_CODE_TS_SLOTID, pNode->tsSlotId);
14,360✔
3616
  }
3617

3618
  return code;
14,365✔
3619
}
3620

3621
static int32_t msgToPhysiPartitionNode(STlvDecoder* pDecoder, void* pObj) {
13,130✔
3622
  SPartitionPhysiNode* pNode = (SPartitionPhysiNode*)pObj;
13,130✔
3623

3624
  int32_t code = TSDB_CODE_SUCCESS;
13,130✔
3625
  STlv*   pTlv = NULL;
13,130✔
3626
  tlvForEach(pDecoder, pTlv, code) {
81,537!
3627
    switch (pTlv->type) {
68,393!
3628
      case PHY_PARTITION_CODE_BASE_NODE:
13,131✔
3629
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
13,131✔
3630
        break;
13,121✔
3631
      case PHY_PARTITION_CODE_EXPR:
2,722✔
3632
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
2,722✔
3633
        break;
2,722✔
3634
      case PHY_PARTITION_CODE_KEYS:
13,125✔
3635
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
13,125✔
3636
        break;
13,141✔
3637
      case PHY_PARTITION_CODE_TARGETS:
13,137✔
3638
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
13,137✔
3639
        break;
13,149✔
3640
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
13,145✔
3641
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
13,145✔
3642
        break;
13,140✔
3643
      case PHY_PARTITION_CODE_TS_SLOTID:
13,133✔
3644
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
13,133✔
3645
        break;
13,134✔
3646
      default:
×
3647
        break;
×
3648
    }
3649
  }
3650

3651
  return code;
13,119✔
3652
}
3653

3654
enum { PHY_STREAM_PARTITION_CODE_BASE_NODE = 1, PHY_STREAM_PARTITION_CODE_TAGS, PHY_STREAM_PARTITION_CODE_SUBTABLE };
3655

3656
static int32_t physiStreamPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3657
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
×
3658

3659
  int32_t code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_BASE_NODE, physiPartitionNodeToMsg, &pNode->part);
×
3660
  if (TSDB_CODE_SUCCESS == code) {
×
3661
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_TAGS, nodeListToMsg, pNode->pTags);
×
3662
  }
3663
  if (TSDB_CODE_SUCCESS == code) {
×
3664
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
×
3665
  }
3666

3667
  return code;
×
3668
}
3669

3670
static int32_t msgToPhysiStreamPartitionNode(STlvDecoder* pDecoder, void* pObj) {
×
3671
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
×
3672

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

3691
  return code;
×
3692
}
3693

3694
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
3695

3696
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
22,216✔
3697
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
22,216✔
3698

3699
  int32_t code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
22,216✔
3700
  if (TSDB_CODE_SUCCESS == code) {
22,213!
3701
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, nodeListToMsg, pNode->pExprs);
22,213✔
3702
  }
3703
  if (TSDB_CODE_SUCCESS == code) {
22,213!
3704
    code = tlvEncodeObj(pEncoder, PHY_INDEF_ROWS_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
22,213✔
3705
  }
3706

3707
  return code;
22,212✔
3708
}
3709

3710
static int32_t msgToPhysiIndefRowsFuncNode(STlvDecoder* pDecoder, void* pObj) {
97,904✔
3711
  SIndefRowsFuncPhysiNode* pNode = (SIndefRowsFuncPhysiNode*)pObj;
97,904✔
3712

3713
  int32_t code = TSDB_CODE_SUCCESS;
97,904✔
3714
  STlv*   pTlv = NULL;
97,904✔
3715
  tlvForEach(pDecoder, pTlv, code) {
293,725!
3716
    switch (pTlv->type) {
195,821!
3717
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
97,904✔
3718
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
97,904✔
3719
        break;
97,904✔
3720
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
13✔
3721
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
13✔
3722
        break;
13✔
3723
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
97,904✔
3724
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
97,904✔
3725
        break;
97,904✔
3726
      default:
×
3727
        break;
×
3728
    }
3729
  }
3730

3731
  return code;
97,904✔
3732
}
3733

3734
enum {
3735
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
3736
  PHY_INERP_FUNC_CODE_EXPR,
3737
  PHY_INERP_FUNC_CODE_FUNCS,
3738
  PHY_INERP_FUNC_CODE_TIME_RANGE,
3739
  PHY_INERP_FUNC_CODE_INTERVAL,
3740
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
3741
  PHY_INERP_FUNC_CODE_FILL_MODE,
3742
  PHY_INERP_FUNC_CODE_FILL_VALUES,
3743
  PHY_INERP_FUNC_CODE_TIME_SERIES
3744
};
3745

3746
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,362✔
3747
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
2,362✔
3748

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

3775
  return code;
2,362✔
3776
}
3777

3778
static int32_t msgToPhysiInterpFuncNode(STlvDecoder* pDecoder, void* pObj) {
63,727✔
3779
  SInterpFuncPhysiNode* pNode = (SInterpFuncPhysiNode*)pObj;
63,727✔
3780

3781
  int32_t code = TSDB_CODE_SUCCESS;
63,727✔
3782
  STlv*   pTlv = NULL;
63,727✔
3783
  tlvForEach(pDecoder, pTlv, code) {
560,606!
3784
    switch (pTlv->type) {
496,879!
3785
      case PHY_INERP_FUNC_CODE_BASE_NODE:
63,727✔
3786
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
63,727✔
3787
        break;
63,727✔
3788
      case PHY_INERP_FUNC_CODE_EXPR:
1✔
3789
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
1✔
3790
        break;
1✔
3791
      case PHY_INERP_FUNC_CODE_FUNCS:
63,727✔
3792
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
63,727✔
3793
        break;
63,727✔
3794
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
63,727✔
3795
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
63,727✔
3796
        break;
63,727✔
3797
      case PHY_INERP_FUNC_CODE_INTERVAL:
63,727✔
3798
        code = tlvDecodeI64(pTlv, &pNode->interval);
63,727✔
3799
        break;
63,727✔
3800
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
63,727✔
3801
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
63,727✔
3802
        break;
63,727✔
3803
      case PHY_INERP_FUNC_CODE_FILL_MODE:
63,727✔
3804
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
63,727✔
3805
        break;
63,727✔
3806
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
50,789✔
3807
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
50,789✔
3808
        break;
50,789✔
3809
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
63,727✔
3810
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
63,727✔
3811
        break;
63,727✔
3812
      default:
×
3813
        break;
×
3814
    }
3815
  }
3816

3817
  return code;
63,727✔
3818
}
3819

3820
enum {
3821
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
3822
  PHY_FORECAST_FUNC_CODE_EXPR,
3823
  PHY_FORECAST_FUNC_CODE_FUNCS,
3824
};
3825

3826
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3827
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3828

3829
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
3830
  if (TSDB_CODE_SUCCESS == code) {
×
3831
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
3832
  }
3833
  if (TSDB_CODE_SUCCESS == code) {
×
3834
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
3835
  }
3836

3837
  return code;
×
3838
}
3839

3840
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
3841
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3842

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

3861
  return code;
×
3862
}
3863

3864
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
3865

3866
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,011,855✔
3867
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
2,011,855✔
3868
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
2,011,855✔
3869
}
3870

3871
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
5,269,060✔
3872
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
5,269,060✔
3873

3874
  int32_t code = TSDB_CODE_SUCCESS;
5,269,060✔
3875
  STlv*   pTlv = NULL;
5,269,060✔
3876
  tlvForEach(pDecoder, pTlv, code) {
10,541,254!
3877
    switch (pTlv->type) {
5,272,139!
3878
      case PHY_DATA_SINK_CODE_INPUT_DESC:
5,272,139✔
3879
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
5,272,139✔
3880
        break;
5,272,194✔
3881
      default:
×
3882
        break;
×
3883
    }
3884
  }
3885

3886
  return code;
5,267,631✔
3887
}
3888

3889
enum { PHY_DISPATCH_CODE_SINK = 1 };
3890

3891
static int32_t physiDispatchNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,956,328✔
3892
  const SDataDispatcherNode* pNode = (const SDataDispatcherNode*)pObj;
1,956,328✔
3893
  return tlvEncodeObj(pEncoder, PHY_DISPATCH_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
1,956,328✔
3894
}
3895

3896
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
5,216,699✔
3897
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
5,216,699✔
3898

3899
  int32_t code = TSDB_CODE_SUCCESS;
5,216,699✔
3900
  STlv*   pTlv = NULL;
5,216,699✔
3901
  tlvForEach(pDecoder, pTlv, code) {
10,434,178!
3902
    switch (pTlv->type) {
5,219,009!
3903
      case PHY_DISPATCH_CODE_SINK:
5,219,009✔
3904
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
5,219,009✔
3905
        break;
5,217,479✔
3906
      default:
×
3907
        break;
×
3908
    }
3909
  }
3910

3911
  return code;
5,214,647✔
3912
}
3913

3914
enum {
3915
  PHY_QUERY_INSERT_CODE_SINK = 1,
3916
  PHY_QUERY_INSERT_CODE_COLS,
3917
  PHY_QUERY_INSERT_CODE_TABLE_ID,
3918
  PHY_QUERY_INSERT_CODE_STABLE_ID,
3919
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
3920
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
3921
  PHY_QUERY_INSERT_CODE_VG_ID,
3922
  PHY_QUERY_INSERT_CODE_EP_SET,
3923
  PHY_QUERY_INSERT_CODE_EXPLAIN
3924
};
3925

3926
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
162✔
3927
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
162✔
3928

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

3955
  return code;
162✔
3956
}
3957

3958
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
29✔
3959
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
29✔
3960

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

3997
  return code;
29✔
3998
}
3999

4000
enum {
4001
  PHY_DELETER_CODE_SINK = 1,
4002
  PHY_DELETER_CODE_TABLE_ID,
4003
  PHY_DELETER_CODE_TABLE_TYPE,
4004
  PHY_DELETER_CODE_TABLE_FNAME,
4005
  PHY_DELETER_CODE_TS_COL_NAME,
4006
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4007
  PHY_DELETER_CODE_AFFECTED_ROWS,
4008
  PHY_DELETER_CODE_START_TS,
4009
  PHY_DELETER_CODE_END_TS
4010
};
4011

4012
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
55,692✔
4013
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
55,692✔
4014

4015
  int32_t code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_SINK, physicDataSinkNodeToMsg, &pNode->sink);
55,692✔
4016
  if (TSDB_CODE_SUCCESS == code) {
55,699!
4017
    code = tlvEncodeU64(pEncoder, PHY_DELETER_CODE_TABLE_ID, pNode->tableId);
55,699✔
4018
  }
4019
  if (TSDB_CODE_SUCCESS == code) {
55,698✔
4020
    code = tlvEncodeI8(pEncoder, PHY_DELETER_CODE_TABLE_TYPE, pNode->tableType);
55,697✔
4021
  }
4022
  if (TSDB_CODE_SUCCESS == code) {
55,700✔
4023
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TABLE_FNAME, pNode->tableFName);
55,699✔
4024
  }
4025
  if (TSDB_CODE_SUCCESS == code) {
55,699✔
4026
    code = tlvEncodeCStr(pEncoder, PHY_DELETER_CODE_TS_COL_NAME, pNode->tsColName);
55,698✔
4027
  }
4028
  if (TSDB_CODE_SUCCESS == code) {
55,700✔
4029
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_DELETE_TIME_RANGE, timeWindowToMsg, &pNode->deleteTimeRange);
55,699✔
4030
  }
4031
  if (TSDB_CODE_SUCCESS == code) {
55,701✔
4032
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_AFFECTED_ROWS, nodeToMsg, pNode->pAffectedRows);
55,697✔
4033
  }
4034
  if (TSDB_CODE_SUCCESS == code) {
55,703✔
4035
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_START_TS, nodeToMsg, pNode->pStartTs);
55,699✔
4036
  }
4037
  if (TSDB_CODE_SUCCESS == code) {
55,703✔
4038
    code = tlvEncodeObj(pEncoder, PHY_DELETER_CODE_END_TS, nodeToMsg, pNode->pEndTs);
55,699✔
4039
  }
4040

4041
  return code;
55,700✔
4042
}
4043

4044
static int32_t msgToPhysiDeleteNode(STlvDecoder* pDecoder, void* pObj) {
53,122✔
4045
  SDataDeleterNode* pNode = (SDataDeleterNode*)pObj;
53,122✔
4046

4047
  int32_t code = TSDB_CODE_SUCCESS;
53,122✔
4048
  STlv*   pTlv = NULL;
53,122✔
4049
  tlvForEach(pDecoder, pTlv, code) {
531,247✔
4050
    switch (pTlv->type) {
478,116!
4051
      case PHY_DELETER_CODE_SINK:
53,122✔
4052
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
53,122✔
4053
        break;
53,125✔
4054
      case PHY_DELETER_CODE_TABLE_ID:
53,124✔
4055
        code = tlvDecodeU64(pTlv, &pNode->tableId);
53,124✔
4056
        break;
53,124✔
4057
      case PHY_DELETER_CODE_TABLE_TYPE:
53,124✔
4058
        code = tlvDecodeI8(pTlv, &pNode->tableType);
53,124✔
4059
        break;
53,124✔
4060
      case PHY_DELETER_CODE_TABLE_FNAME:
53,124✔
4061
        code = tlvDecodeCStr(pTlv, pNode->tableFName, sizeof(pNode->tableFName));
53,124✔
4062
        break;
53,124✔
4063
      case PHY_DELETER_CODE_TS_COL_NAME:
53,124✔
4064
        code = tlvDecodeCStr(pTlv, pNode->tsColName, sizeof(pNode->tsColName));
53,124✔
4065
        break;
53,124✔
4066
      case PHY_DELETER_CODE_DELETE_TIME_RANGE:
53,125✔
4067
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->deleteTimeRange);
53,125✔
4068
        break;
53,125✔
4069
      case PHY_DELETER_CODE_AFFECTED_ROWS:
53,125✔
4070
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pAffectedRows);
53,125✔
4071
        break;
53,127✔
4072
      case PHY_DELETER_CODE_START_TS:
53,125✔
4073
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pStartTs);
53,125✔
4074
        break;
53,125✔
4075
      case PHY_DELETER_CODE_END_TS:
53,123✔
4076
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pEndTs);
53,123✔
4077
        break;
53,127✔
4078
      default:
×
4079
        break;
×
4080
    }
4081
  }
4082

4083
  return code;
53,123✔
4084
}
4085

4086
enum {
4087
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4088
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4089
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4090
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4091
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4092
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4093
};
4094

4095
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,140✔
4096
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
9,140✔
4097

4098
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
9,140✔
4099
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4100
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
9,140✔
4101
  }
4102
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4103
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
9,140✔
4104
  }
4105
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4106
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
9,140✔
4107
  }
4108
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4109
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
9,140✔
4110
  }
4111
  if (TSDB_CODE_SUCCESS == code) {
9,140!
4112
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
9,140✔
4113
  }
4114

4115
  return code;
9,140✔
4116
}
4117

4118
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
154✔
4119
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
154✔
4120

4121
  int32_t code = TSDB_CODE_SUCCESS;
154✔
4122
  STlv*   pTlv = NULL;
154✔
4123
  tlvForEach(pDecoder, pTlv, code) {
924!
4124
    switch (pTlv->type) {
770!
4125
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
154✔
4126
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
154✔
4127
        break;
154✔
4128
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4129
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4130
        break;
×
4131
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
154✔
4132
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
154✔
4133
        break;    
154✔
4134
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
154✔
4135
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
154✔
4136
        break;    
154✔
4137
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
154✔
4138
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
154✔
4139
        break;    
154✔
4140
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
154✔
4141
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
154✔
4142
        break;    
154✔
4143
      default:
×
4144
        break;
×
4145
    }
4146
  }
4147

4148
  return code;
154✔
4149
}
4150

4151

4152
enum {
4153
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4154
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4155
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4156
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4157
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4158
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4159
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4160
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4161
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4162
};
4163

4164
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,140✔
4165
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
9,140✔
4166

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

4202
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
154✔
4203
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
154✔
4204

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

4241
  return code;
154✔
4242
}
4243

4244

4245

4246
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4247

4248
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,014,320✔
4249
  const SSubplanId* pNode = (const SSubplanId*)pObj;
2,014,320✔
4250

4251
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
2,014,320✔
4252
  if (TSDB_CODE_SUCCESS == code) {
2,014,186!
4253
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
2,014,250✔
4254
  }
4255
  if (TSDB_CODE_SUCCESS == code) {
2,014,645!
4256
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
2,014,888✔
4257
  }
4258

4259
  return code;
2,014,311✔
4260
}
4261

4262
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4263
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4264

4265
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4266
  if (TSDB_CODE_SUCCESS == code) {
×
4267
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4268
  }
4269
  if (TSDB_CODE_SUCCESS == code) {
×
4270
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4271
  }
4272

4273
  return code;
×
4274
}
4275

4276
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
5,269,780✔
4277
  SSubplanId* pNode = (SSubplanId*)pObj;
5,269,780✔
4278

4279
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
5,269,780✔
4280
  if (TSDB_CODE_SUCCESS == code) {
5,269,844!
4281
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
5,270,128✔
4282
  }
4283
  if (TSDB_CODE_SUCCESS == code) {
5,270,046!
4284
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
5,270,638✔
4285
  }
4286

4287
  return code;
5,269,511✔
4288
}
4289

4290
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4291
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4292

4293
  int32_t code = TSDB_CODE_SUCCESS;
×
4294
  STlv*   pTlv = NULL;
×
4295
  tlvForEach(pDecoder, pTlv, code) {
×
4296
    switch (pTlv->type) {
×
4297
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4298
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4299
        break;
×
4300
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4301
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4302
        break;
×
4303
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4304
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4305
        break;
×
4306
      default:
×
4307
        break;
×
4308
    }
4309
  }
4310

4311
  return code;
×
4312
}
4313

4314
enum {
4315
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4316
  SUBPLAN_CODE_ROOT_NODE,
4317
  SUBPLAN_CODE_DATA_SINK,
4318
  SUBPLAN_CODE_TAG_COND,
4319
  SUBPLAN_CODE_TAG_INDEX_COND
4320
};
4321

4322
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,014,347✔
4323
  const SSubplan* pNode = (const SSubplan*)pObj;
2,014,347✔
4324

4325
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
2,014,347✔
4326
  if (TSDB_CODE_SUCCESS == code) {
2,014,292!
4327
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
2,014,335✔
4328
  }
4329
  if (TSDB_CODE_SUCCESS == code) {
2,013,745✔
4330
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
2,013,558✔
4331
  }
4332
  if (TSDB_CODE_SUCCESS == code) {
2,013,497✔
4333
    code = tlvEncodeValueI32(pEncoder, pNode->level);
2,013,387✔
4334
  }
4335
  if (TSDB_CODE_SUCCESS == code) {
2,013,337✔
4336
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
2,013,308✔
4337
  }
4338
  if (TSDB_CODE_SUCCESS == code) {
2,013,834!
4339
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
2,013,906✔
4340
  }
4341
  if (TSDB_CODE_SUCCESS == code) {
2,013,693!
4342
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
2,013,720✔
4343
  }
4344
  if (TSDB_CODE_SUCCESS == code) {
2,014,174!
4345
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
2,014,252✔
4346
  }
4347
  if (TSDB_CODE_SUCCESS == code) {
2,013,732!
4348
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
2,013,878✔
4349
  }
4350
  if (TSDB_CODE_SUCCESS == code) {
2,013,570!
4351
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
2,013,764✔
4352
  }
4353
  if (TSDB_CODE_SUCCESS == code) {
2,013,247✔
4354
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
2,013,082✔
4355
  }
4356
  if (TSDB_CODE_SUCCESS == code) {
2,013,125!
4357
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
2,013,126✔
4358
  }
4359

4360
  return code;
2,012,939✔
4361
}
4362

4363
static int32_t subplanToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,014,553✔
4364
  const SSubplan* pNode = (const SSubplan*)pObj;
2,014,553✔
4365

4366
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
2,014,553✔
4367
  if (TSDB_CODE_SUCCESS == code) {
2,013,522!
4368
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
2,013,579✔
4369
  }
4370
  if (TSDB_CODE_SUCCESS == code) {
2,012,287!
4371
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
2,012,402✔
4372
  }
4373
  if (TSDB_CODE_SUCCESS == code) {
2,010,998!
4374
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
2,011,391✔
4375
  }
4376
  if (TSDB_CODE_SUCCESS == code) {
2,011,036!
4377
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
2,011,516✔
4378
  }
4379

4380
  return code;
2,011,542✔
4381
}
4382

4383
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
5,269,966✔
4384
  SSubplan* pNode = (SSubplan*)pObj;
5,269,966✔
4385

4386
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
5,269,966✔
4387
  if (TSDB_CODE_SUCCESS == code) {
5,269,482!
4388
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
5,269,602✔
4389
  }
4390
  if (TSDB_CODE_SUCCESS == code) {
5,269,200!
4391
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
5,269,478✔
4392
  }
4393
  if (TSDB_CODE_SUCCESS == code) {
5,269,354!
4394
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
5,269,839✔
4395
  }
4396
  if (TSDB_CODE_SUCCESS == code) {
5,268,500✔
4397
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
5,266,997✔
4398
  }
4399
  if (TSDB_CODE_SUCCESS == code) {
5,274,632✔
4400
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
5,273,336✔
4401
  }
4402
  if (TSDB_CODE_SUCCESS == code) {
5,274,611✔
4403
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
5,273,473✔
4404
  }
4405
  if (TSDB_CODE_SUCCESS == code) {
5,276,327✔
4406
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
5,275,228✔
4407
  }
4408
  if (TSDB_CODE_SUCCESS == code) {
5,274,512✔
4409
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
5,271,594✔
4410
  }
4411
  if (TSDB_CODE_SUCCESS == code) {
5,274,594✔
4412
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
5,271,938✔
4413
  }
4414
  if (TSDB_CODE_SUCCESS == code) {
5,274,846✔
4415
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
5,272,240✔
4416
  }
4417
  if (TSDB_CODE_SUCCESS == code) {
5,274,160✔
4418
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
5,271,595✔
4419
  }
4420
  return code;
5,271,545✔
4421
}
4422

4423
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
5,270,786✔
4424
  SSubplan* pNode = (SSubplan*)pObj;
5,270,786✔
4425

4426
  int32_t code = TSDB_CODE_SUCCESS;
5,270,786✔
4427
  STlv*   pTlv = NULL;
5,270,786✔
4428
  tlvForEach(pDecoder, pTlv, code) {
22,370,326!
4429
    switch (pTlv->type) {
17,099,909!
4430
      case SUBPLAN_CODE_INLINE_ATTRS:
5,270,797✔
4431
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
5,270,797✔
4432
        break;
5,271,305✔
4433
      case SUBPLAN_CODE_ROOT_NODE:
5,271,024✔
4434
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
5,271,024✔
4435
        break;
5,270,287✔
4436
      case SUBPLAN_CODE_DATA_SINK:
5,270,116✔
4437
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
5,270,116✔
4438
        break;
5,269,813✔
4439
      case SUBPLAN_CODE_TAG_COND:
1,232,236✔
4440
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
1,232,236✔
4441
        break;
1,232,416✔
4442
      case SUBPLAN_CODE_TAG_INDEX_COND:
55,736✔
4443
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
55,736✔
4444
        break;
55,719✔
4445
      default:
×
4446
        break;
×
4447
    }
4448
  }
4449

4450
  return code;
5,267,626✔
4451
}
4452

4453
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4454

4455
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4456
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4457

4458
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
×
4459
  if (TSDB_CODE_SUCCESS == code) {
×
4460
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
×
4461
  }
4462

4463
  return code;
×
4464
}
4465

4466
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4467
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4468

4469
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
×
4470
  if (TSDB_CODE_SUCCESS == code) {
×
4471
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
×
4472
  }
4473

4474
  return code;
×
4475
}
4476

4477
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
×
4478
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4479

4480
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
×
4481
  if (TSDB_CODE_SUCCESS == code) {
×
4482
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
×
4483
  }
4484

4485
  return code;
×
4486
}
4487

4488
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
×
4489
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4490

4491
  int32_t code = TSDB_CODE_SUCCESS;
×
4492
  STlv*   pTlv = NULL;
×
4493
  tlvForEach(pDecoder, pTlv, code) {
×
4494
    switch (pTlv->type) {
×
4495
      case QUERY_PLAN_CODE_INLINE_ATTRS:
×
4496
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
×
4497
        break;
×
4498
      case QUERY_PLAN_CODE_SUBPLANS:
×
4499
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
×
4500
        break;
×
4501
      default:
×
4502
        break;
×
4503
    }
4504
  }
4505

4506
  return code;
×
4507
}
4508

4509
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
75,887,619✔
4510
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4511
  int32_t code = TSDB_CODE_SUCCESS;
75,887,619✔
4512
  switch (nodeType(pObj)) {
75,887,619!
4513
    case QUERY_NODE_COLUMN:
14,941,432✔
4514
      code = columnNodeToMsg(pObj, pEncoder);
14,941,432✔
4515
      break;
14,602,477✔
4516
    case QUERY_NODE_VALUE:
5,439,829✔
4517
      code = valueNodeToMsg(pObj, pEncoder);
5,439,829✔
4518
      break;
5,440,212✔
4519
    case QUERY_NODE_OPERATOR:
1,542,369✔
4520
      code = operatorNodeToMsg(pObj, pEncoder);
1,542,369✔
4521
      break;
1,539,991✔
4522
    case QUERY_NODE_LOGIC_CONDITION:
330,713✔
4523
      code = logicConditionNodeToMsg(pObj, pEncoder);
330,713✔
4524
      break;
330,535✔
4525
    case QUERY_NODE_FUNCTION:
3,946,604✔
4526
      code = functionNodeToMsg(pObj, pEncoder);
3,946,604✔
4527
      break;
3,947,059✔
4528
    case QUERY_NODE_ORDER_BY_EXPR:
382,504✔
4529
      code = orderByExprNodeToMsg(pObj, pEncoder);
382,504✔
4530
      break;
382,375✔
4531
    case QUERY_NODE_LIMIT:
200,434✔
4532
      code = limitNodeToMsg(pObj, pEncoder);
200,434✔
4533
      break;
200,433✔
4534
    case QUERY_NODE_NODE_LIST:
45,518✔
4535
      code = nodeListNodeToMsg(pObj, pEncoder);
45,518✔
4536
      break;
45,534✔
4537
    case QUERY_NODE_TARGET:
12,529,143✔
4538
      code = targetNodeToMsg(pObj, pEncoder);
12,529,143✔
4539
      break;
12,474,140✔
4540
    case QUERY_NODE_DATABLOCK_DESC:
6,241,236✔
4541
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
6,241,236✔
4542
      break;
6,229,483✔
4543
    case QUERY_NODE_SLOT_DESC:
22,498,153✔
4544
      code = slotDescNodeToMsg(pObj, pEncoder);
22,498,153✔
4545
      break;
22,330,119✔
4546
    case QUERY_NODE_DOWNSTREAM_SOURCE:
1,066,446✔
4547
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
1,066,446✔
4548
      break;
1,066,414✔
4549
    case QUERY_NODE_LEFT_VALUE:
67,113✔
4550
      break;
67,113✔
4551
    case QUERY_NODE_WHEN_THEN:
6,265✔
4552
      code = whenThenNodeToMsg(pObj, pEncoder);
6,265✔
4553
      break;
6,263✔
4554
    case QUERY_NODE_CASE_WHEN:
4,307✔
4555
      code = caseWhenNodeToMsg(pObj, pEncoder);
4,307✔
4556
      break;
4,305✔
4557
    case QUERY_NODE_WINDOW_OFFSET:
829✔
4558
      code = windowOffsetNodeToMsg(pObj, pEncoder);
829✔
4559
      break;
829✔
4560
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
43,913✔
4561
      code = physiTagScanNodeToMsg(pObj, pEncoder);
43,913✔
4562
      break;
44,418✔
4563
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
13✔
4564
      code = physiScanNodeToMsg(pObj, pEncoder);
13✔
4565
      break;
13✔
4566
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
8,042✔
4567
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4568
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
8,042✔
4569
      break;
8,036✔
4570
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,432,264✔
4571
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4572
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4573
      code = physiTableScanNodeToMsg(pObj, pEncoder);
1,432,264✔
4574
      break;
1,431,380✔
4575
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
32,871✔
4576
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
32,871✔
4577
      break;
32,863✔
4578
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
550,006✔
4579
      code = physiProjectNodeToMsg(pObj, pEncoder);
550,006✔
4580
      break;
549,565✔
4581
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
90,242✔
4582
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
90,242✔
4583
      break;
90,213✔
4584
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
9,140✔
4585
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
9,140✔
4586
      break;
9,140✔
4587
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
886,014✔
4588
      code = physiAggNodeToMsg(pObj, pEncoder);
886,014✔
4589
      break;
884,996✔
4590
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
730,148✔
4591
      code = physiExchangeNodeToMsg(pObj, pEncoder);
730,148✔
4592
      break;
730,113✔
4593
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
78,361✔
4594
      code = physiMergeNodeToMsg(pObj, pEncoder);
78,361✔
4595
      break;
78,356✔
4596
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
213,039✔
4597
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4598
      code = physiSortNodeToMsg(pObj, pEncoder);
213,039✔
4599
      break;
213,000✔
4600
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
80,593✔
4601
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4602
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4603
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4604
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4605
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4606
      code = physiIntervalNodeToMsg(pObj, pEncoder);
80,593✔
4607
      break;
80,498✔
4608
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
13,932✔
4609
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4610
      code = physiFillNodeToMsg(pObj, pEncoder);
13,932✔
4611
      break;
13,929✔
4612
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
3,854✔
4613
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4614
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4615
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4616
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
3,854✔
4617
      break;
3,854✔
4618
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
5,160✔
4619
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4620
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
5,160✔
4621
      break;
5,160✔
4622
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
62✔
4623
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4624
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
62✔
4625
      break;
62✔
4626
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
45✔
4627
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4628
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
45✔
4629
      break;
45✔
4630
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4631
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
4632
      break;
×
4633
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
14,363✔
4634
      code = physiPartitionNodeToMsg(pObj, pEncoder);
14,363✔
4635
      break;
14,365✔
4636
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4637
      code = physiStreamPartitionNodeToMsg(pObj, pEncoder);
×
4638
      break;
×
4639
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
22,216✔
4640
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
22,216✔
4641
      break;
22,212✔
4642
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
2,362✔
4643
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4644
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
2,362✔
4645
      break;
2,362✔
4646
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4647
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
4648
      break;
×
4649
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,956,256✔
4650
      code = physiDispatchNodeToMsg(pObj, pEncoder);
1,956,256✔
4651
      break;
1,955,319✔
4652
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
162✔
4653
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
162✔
4654
      break;
162✔
4655
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
55,697✔
4656
      code = physiDeleteNodeToMsg(pObj, pEncoder);
55,697✔
4657
      break;
55,698✔
4658
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
9,140✔
4659
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
9,140✔
4660
      break;
9,140✔
4661
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
9,140✔
4662
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
9,140✔
4663
      break;
9,140✔
4664
    case QUERY_NODE_PHYSICAL_SUBPLAN:
2,014,325✔
4665
      code = subplanToMsg(pObj, pEncoder);
2,014,325✔
4666
      break;
2,011,585✔
4667
    case QUERY_NODE_PHYSICAL_PLAN:
×
4668
      code = queryPlanToMsg(pObj, pEncoder);
×
4669
      break;
×
4670
    default:
×
4671
      break;
×
4672
  }
4673
  if (TSDB_CODE_SUCCESS != code) {
75,306,270!
4674
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
4675
  }
4676
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4677
  return code;
75,549,256✔
4678
}
4679

4680
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
627,817,668✔
4681
  int32_t code = TSDB_CODE_SUCCESS;
627,817,668✔
4682
  switch (nodeType(pObj)) {
627,817,668!
4683
    case QUERY_NODE_COLUMN:
72,043,754✔
4684
      code = msgToColumnNode(pDecoder, pObj);
72,043,754✔
4685
      break;
72,309,651✔
4686
    case QUERY_NODE_VALUE:
335,433,471✔
4687
      code = msgToValueNode(pDecoder, pObj);
335,433,471✔
4688
      break;
328,079,346✔
4689
    case QUERY_NODE_OPERATOR:
16,064,780✔
4690
      code = msgToOperatorNode(pDecoder, pObj);
16,064,780✔
4691
      break;
16,030,462✔
4692
    case QUERY_NODE_LOGIC_CONDITION:
4,944,947✔
4693
      code = msgToLogicConditionNode(pDecoder, pObj);
4,944,947✔
4694
      break;
4,944,381✔
4695
    case QUERY_NODE_FUNCTION:
7,169,042✔
4696
      code = msgToFunctionNode(pDecoder, pObj);
7,169,042✔
4697
      break;
7,164,994✔
4698
    case QUERY_NODE_ORDER_BY_EXPR:
2,040,722✔
4699
      code = msgToOrderByExprNode(pDecoder, pObj);
2,040,722✔
4700
      break;
2,040,419✔
4701
    case QUERY_NODE_LIMIT:
611,924✔
4702
      code = msgToLimitNode(pDecoder, pObj);
611,924✔
4703
      break;
611,764✔
4704
    case QUERY_NODE_NODE_LIST:
2,634,498✔
4705
      code = msgToNodeListNode(pDecoder, pObj);
2,634,498✔
4706
      break;
2,634,927✔
4707
    case QUERY_NODE_TARGET:
52,594,407✔
4708
      code = msgToTargetNode(pDecoder, pObj);
52,594,407✔
4709
      break;
52,381,072✔
4710
    case QUERY_NODE_DATABLOCK_DESC:
18,257,877✔
4711
      code = msgToDataBlockDescNode(pDecoder, pObj);
18,257,877✔
4712
      break;
18,253,638✔
4713
    case QUERY_NODE_SLOT_DESC:
97,004,065✔
4714
      code = msgToSlotDescNode(pDecoder, pObj);
97,004,065✔
4715
      break;
96,430,971✔
4716
    case QUERY_NODE_DOWNSTREAM_SOURCE:
3,066,428✔
4717
      code = msgToDownstreamSourceNode(pDecoder, pObj);
3,066,428✔
4718
    case QUERY_NODE_LEFT_VALUE:
3,066,441✔
4719
      break;
3,066,441✔
4720
    case QUERY_NODE_WHEN_THEN:
121✔
4721
      code = msgToWhenThenNode(pDecoder, pObj);
121✔
4722
      break;
121✔
4723
    case QUERY_NODE_CASE_WHEN:
85✔
4724
      code = msgToCaseWhenNode(pDecoder, pObj);
85✔
4725
      break;
85✔
4726
    case QUERY_NODE_WINDOW_OFFSET:
668✔
4727
      code = msgToWindowOffsetNode(pDecoder, pObj);
668✔
4728
      break;
668✔
4729
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
4,549✔
4730
      code = msgToPhysiTagScanNode(pDecoder, pObj);
4,549✔
4731
      break;
4,551✔
4732
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
3,235✔
4733
      code = msgToPhysiScanNode(pDecoder, pObj);
3,235✔
4734
      break;
3,228✔
4735
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
3,342✔
4736
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4737
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
3,342✔
4738
      break;
3,340✔
4739
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
3,721,857✔
4740
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4741
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4742
      code = msgToPhysiTableScanNode(pDecoder, pObj);
3,721,857✔
4743
      break;
3,721,723✔
4744
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
19,096✔
4745
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
19,096✔
4746
      break;
19,049✔
4747
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
1,106,285✔
4748
      code = msgToPhysiProjectNode(pDecoder, pObj);
1,106,285✔
4749
      break;
1,106,282✔
4750
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
7,317✔
4751
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
7,317✔
4752
      break;
7,317✔
4753
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
154✔
4754
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
154✔
4755
      break;
154✔
4756
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
362,141✔
4757
      code = msgToPhysiAggNode(pDecoder, pObj);
362,141✔
4758
      break;
362,134✔
4759
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
2,803,502✔
4760
      code = msgToPhysiExchangeNode(pDecoder, pObj);
2,803,502✔
4761
      break;
2,803,348✔
4762
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
1,266,746✔
4763
      code = msgToPhysiMergeNode(pDecoder, pObj);
1,266,746✔
4764
      break;
1,266,729✔
4765
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
717,878✔
4766
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4767
      code = msgToPhysiSortNode(pDecoder, pObj);
717,878✔
4768
      break;
717,848✔
4769
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
1,893,713✔
4770
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4771
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4772
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4773
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4774
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4775
      code = msgToPhysiIntervalNode(pDecoder, pObj);
1,893,713✔
4776
      break;
1,893,708✔
4777
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
465,284✔
4778
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4779
      code = msgToPhysiFillNode(pDecoder, pObj);
465,284✔
4780
      break;
465,279✔
4781
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
94,320✔
4782
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4783
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4784
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4785
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
94,320✔
4786
      break;
94,309✔
4787
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
65,669✔
4788
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4789
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
65,669✔
4790
      break;
65,671✔
4791
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
271,620✔
4792
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4793
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
271,620✔
4794
      break;
271,623✔
4795
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
5,324✔
4796
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4797
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
5,324✔
4798
      break;
5,297✔
4799
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4800
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
4801
      break;
×
4802
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
13,134✔
4803
      code = msgToPhysiPartitionNode(pDecoder, pObj);
13,134✔
4804
      break;
13,129✔
4805
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4806
      code = msgToPhysiStreamPartitionNode(pDecoder, pObj);
×
4807
      break;
×
4808
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
97,904✔
4809
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
97,904✔
4810
      break;
97,904✔
4811
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
63,727✔
4812
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4813
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
63,727✔
4814
      break;
63,727✔
4815
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4816
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
4817
      break;
×
4818
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
5,217,900✔
4819
      code = msgToPhysiDispatchNode(pDecoder, pObj);
5,217,900✔
4820
      break;
5,216,055✔
4821
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
29✔
4822
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
29✔
4823
      break;
29✔
4824
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
53,124✔
4825
      code = msgToPhysiDeleteNode(pDecoder, pObj);
53,124✔
4826
      break;
53,126✔
4827
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
154✔
4828
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
154✔
4829
      break;
154✔
4830
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
154✔
4831
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
154✔
4832
      break;
154✔
4833
    case QUERY_NODE_PHYSICAL_SUBPLAN:
5,270,856✔
4834
      code = msgToSubplan(pDecoder, pObj);
5,270,856✔
4835
      break;
5,269,238✔
4836
    case QUERY_NODE_PHYSICAL_PLAN:
×
4837
      code = msgToQueryPlan(pDecoder, pObj);
×
4838
      break;
×
4839
    default:
×
4840
      break;
×
4841
  }
4842
  if (TSDB_CODE_SUCCESS != code) {
627,474,046!
4843
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
4844
  }
4845
  return code;
619,013,772✔
4846
}
4847

4848
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
75,942,902✔
4849
  return tlvEncodeObj(pEncoder, nodeType(pObj), specificNodeToMsg, pObj);
75,942,902✔
4850
}
4851

4852
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj) {
633,419,874✔
4853
  return tlvDecodeDynObj(pDecoder, (FMakeObject)nodesMakeNode, msgToSpecificNode, pObj);
633,419,874✔
4854
}
4855

4856
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj) {
120,976,000✔
4857
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
120,976,000✔
4858
  return msgToNode(&decoder, pObj);
120,976,000✔
4859
}
4860

4861
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
17,424,468✔
4862
  const SNodeList* pList = (const SNodeList*)pObj;
17,424,468✔
4863

4864
  SNode* pNode = NULL;
17,424,468✔
4865
  FOREACH(pNode, pList) {
64,677,305!
4866
    int32_t code = nodeToMsg(pNode, pEncoder);
47,497,291✔
4867
    if (TSDB_CODE_SUCCESS != code) {
47,252,837!
4868
      return code;
×
4869
    }
4870
  }
4871

4872
  return TSDB_CODE_SUCCESS;
17,180,014✔
4873
}
4874
enum {
4875
  SARRAY_CODE_CAPACITY = 1,
4876
  SARRAY_CODE_ELEMSIZE,
4877
  SARRAY_CODE_SIZE,
4878
  SARRAY_CODE_PDATA
4879
};
4880

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

4899

4900
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj) {
53,608,125✔
4901
  SNodeList* pList = NULL;
53,608,125✔
4902
  int32_t code = TSDB_CODE_SUCCESS;
53,608,125✔
4903
  code = nodesMakeList(&pList);
53,608,125✔
4904

4905
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
567,197,165✔
4906
    SNode* pNode = NULL;
509,232,657✔
4907
    code = msgToNode(pDecoder, (void**)&pNode);
509,232,657✔
4908
    if (TSDB_CODE_SUCCESS == code) {
495,817,977!
4909
      code = nodesListAppend(pList, pNode);
495,904,586✔
4910
    }
4911
  }
4912
  if (TSDB_CODE_SUCCESS == code) {
53,640,202!
4913
    *pObj = pList;
53,640,202✔
4914
  } else {
4915
    nodesDestroyList(pList);
×
4916
  }
4917
  return code;
53,638,634✔
4918
}
4919

4920
static int32_t msgToSArray(STlv* pTlv, void** pObj){
44✔
4921
  SArray* pArray = NULL;
44✔
4922
  uint32_t capacity = 0;
44✔
4923
  uint32_t elemSize = 0;
44✔
4924
  uint32_t actualSize;
4925
  int32_t decodeFieldNum = 0;;
44✔
4926
  int32_t code = TSDB_CODE_SUCCESS;
44✔
4927
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
44✔
4928
  STlv*   pTlvTemp = NULL;
44✔
4929
  STlv*   pDataTlv = NULL;
44✔
4930

4931
  tlvForEach(&decoder, pTlvTemp, code) {
220!
4932
    switch (pTlvTemp->type) {
176!
4933
      case SARRAY_CODE_CAPACITY:
44✔
4934
        code = tlvDecodeI32(pTlvTemp, &capacity);
44✔
4935
        break;
44✔
4936
      case SARRAY_CODE_ELEMSIZE:
44✔
4937
        code = tlvDecodeI32(pTlvTemp, &elemSize);
44✔
4938
        break;
44✔
4939
      case SARRAY_CODE_SIZE:
44✔
4940
        code = tlvDecodeI32(pTlvTemp, &actualSize);
44✔
4941
        break;
44✔
4942
      case SARRAY_CODE_PDATA:
44✔
4943
        if (decodeFieldNum < 3) {
44!
4944
          pDataTlv = pTlvTemp;
×
4945
          break;
×
4946
        }
4947
        pArray = taosArrayInit(capacity, elemSize);
44✔
4948
        if (NULL == pArray) {
44!
4949
          return terrno;
×
4950
        }
4951
        pArray->size = actualSize;
44✔
4952
        if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
44!
4953
          taosArrayDestroy(pArray);
×
4954
          return TSDB_CODE_OUT_OF_MEMORY;
×
4955
        }
4956
        code = tlvDecodeBinary(pTlvTemp, pArray->pData);
44✔
4957
        break;
44✔
4958
      default:
×
4959
        break;
×
4960
    }
4961
    decodeFieldNum++;
176✔
4962
  }
4963

4964
  if (pDataTlv != NULL) {
44!
4965
    pArray = taosArrayInit(capacity, elemSize);
×
4966
    if (NULL == pArray) {
×
4967
      return terrno;
×
4968
    }
4969
    pArray->size = actualSize;
×
4970
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
4971
      taosArrayDestroy(pArray);
×
4972
      return TSDB_CODE_OUT_OF_MEMORY;
×
4973
    }
4974
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
4975
  }
4976
  *pObj = pArray;
44✔
4977
  return code;
44✔
4978
}
4979

4980

4981
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
53,594,044✔
4982
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
53,594,044✔
4983
  return msgToNodeList(&decoder, pObj);
53,594,044✔
4984
}
4985

4986
int32_t nodesNodeToMsg(const SNode* pNode, char** pMsg, int32_t* pLen) {
2,014,599✔
4987
  if (NULL == pNode || NULL == pMsg || NULL == pLen) {
2,014,599!
4988
    terrno = TSDB_CODE_FAILED;
×
4989
    return TSDB_CODE_FAILED;
×
4990
  }
4991

4992
  STlvEncoder encoder;
4993
  int32_t     code = initTlvEncoder(&encoder);
2,016,696✔
4994
  if (TSDB_CODE_SUCCESS == code) {
2,016,818!
4995
    code = nodeToMsg(pNode, &encoder);
2,016,837✔
4996
  }
4997
  if (TSDB_CODE_SUCCESS == code) {
2,011,799!
4998
    endTlvEncode(&encoder, pMsg, pLen);
2,011,823✔
4999
  }
5000
  clearTlvEncoder(&encoder);
2,011,803✔
5001

5002
  terrno = code;
2,012,240✔
5003
  return code;
2,012,305✔
5004
}
5005

5006
int32_t nodesMsgToNode(const char* pMsg, int32_t len, SNode** pNode) {
5,271,456✔
5007
  if (NULL == pMsg || NULL == pNode) {
5,271,456!
5008
    return TSDB_CODE_SUCCESS;
×
5009
  }
5010

5011
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
5,273,738✔
5012
  int32_t     code = msgToNode(&decoder, (void**)pNode);
5,273,738✔
5013
  if (TSDB_CODE_SUCCESS != code) {
5,269,147!
5014
    nodesDestroyNode(*pNode);
×
5015
    *pNode = NULL;
×
5016
  }
5017

5018
  terrno = code;
5,269,147✔
5019
  return code;
5,268,810✔
5020
}
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