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

taosdata / TDengine / #3530

16 Nov 2024 07:44AM UTC coverage: 60.219% (-0.7%) from 60.888%
#3530

push

travis-ci

web-flow
Update 03-ad.md

118417 of 252124 branches covered (46.97%)

Branch coverage included in aggregate %.

198982 of 274951 relevant lines covered (72.37%)

6072359.98 hits per line

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

80.83
/source/libs/nodes/src/nodesMsgFuncs.c
1
/*
2
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
3
 *
4
 * This program is free software: you can use, redistribute, and/or modify
5
 * it under the terms of the GNU Affero General Public License, version 3
6
 * or later ("AGPL"), as published by the Free Software Foundation.
7
 *
8
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
 * FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * You should have received a copy of the GNU Affero General Public License
13
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14
 */
15

16
#include "nodesUtil.h"
17
#include "plannodes.h"
18
#include "tdatablock.h"
19

20
#ifndef htonll
21

22
#define htonll(x)                                                                                   \
23
  (((int64_t)x & 0x00000000000000ff) << 7 * 8) | (((int64_t)x & 0x000000000000ff00) << 5 * 8) |     \
24
      (((int64_t)x & 0x0000000000ff0000) << 3 * 8) | (((int64_t)x & 0x00000000ff000000) << 1 * 8) | \
25
      (((int64_t)x & 0x000000ff00000000) >> 1 * 8) | (((int64_t)x & 0x0000ff0000000000) >> 3 * 8) | \
26
      (((int64_t)x & 0x00ff000000000000) >> 5 * 8) | (((int64_t)x & 0xff00000000000000) >> 7 * 8)
27

28
#define ntohll(x) htonll(x)
29

30
#endif
31

32
#define NODES_MSG_DEFAULT_LEN 1024
33
#define TLV_TYPE_ARRAY_ELEM   0
34

35
#define tlvForEach(pDecoder, pTlv, code) \
36
  while (TSDB_CODE_SUCCESS == code && TSDB_CODE_SUCCESS == (code = tlvGetNextTlv(pDecoder, &pTlv)) && NULL != pTlv)
37

38
#pragma pack(push, 1)
39

40
typedef struct STlv {
41
  int16_t type;
42
  int32_t len;
43
  char    value[0];
44
} STlv;
45

46
#pragma pack(pop)
47

48
typedef struct STlvEncoder {
49
  int32_t allocSize;
50
  int32_t offset;
51
  char*   pBuf;
52
  int32_t tlvCount;
53
} STlvEncoder;
54

55
typedef struct STlvDecoder {
56
  int32_t     bufSize;
57
  int32_t     offset;
58
  const char* pBuf;
59
} STlvDecoder;
60

61
typedef int32_t (*FToMsg)(const void* pObj, STlvEncoder* pEncoder);
62
typedef int32_t (*FToObject)(STlvDecoder* pDecoder, void* pObj);
63
typedef int32_t (*FMakeObject)(int16_t type, SNode** ppNode);
64
typedef int32_t (*FSetObject)(STlv* pTlv, void* pObj);
65

66
static int32_t nodeToMsg(const void* pObj, STlvEncoder* pEncoder);
67
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder);
68
static int32_t SArrayToMsg(const void* pObj, STlvEncoder* pEncoder);
69

70
static int32_t msgToNode(STlvDecoder* pDecoder, void** pObj);
71
static int32_t msgToNodeFromTlv(STlv* pTlv, void** pObj);
72
static int32_t msgToNodeList(STlvDecoder* pDecoder, void** pObj);
73
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj);
74
static int32_t msgToSArray(STlv* pTlv, void** pObj);
75

76

77
static int32_t initTlvEncoder(STlvEncoder* pEncoder) {
1,723,870✔
78
  pEncoder->allocSize = NODES_MSG_DEFAULT_LEN;
1,723,870✔
79
  pEncoder->offset = 0;
1,723,870✔
80
  pEncoder->tlvCount = 0;
1,723,870✔
81
  pEncoder->pBuf = taosMemoryMalloc(pEncoder->allocSize);
1,723,870✔
82
  return NULL == pEncoder->pBuf ? terrno : TSDB_CODE_SUCCESS;
1,726,086!
83
}
84

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

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

93
static int32_t tlvEncodeImpl(STlvEncoder* pEncoder, int16_t type, const void* pValue, int32_t len) {
135,804,446✔
94
  int32_t tlvLen = sizeof(STlv) + len;
135,804,446✔
95
  if (pEncoder->offset + tlvLen > pEncoder->allocSize) {
135,804,446✔
96
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + tlvLen);
686,673✔
97
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
686,673✔
98
    if (NULL == pNewBuf) {
688,289!
99
      return terrno;
×
100
    }
101
    pEncoder->pBuf = pNewBuf;
688,292✔
102
  }
103
  STlv* pTlv = (STlv*)(pEncoder->pBuf + pEncoder->offset);
135,806,065✔
104
  pTlv->type = htons(type);
135,806,065✔
105
  pTlv->len = htonl(len);
135,806,065✔
106
  memcpy(pTlv->value, pValue, len);
135,806,065✔
107
  pEncoder->offset += tlvLen;
135,806,065✔
108
  ++(pEncoder->tlvCount);
135,806,065✔
109
  return TSDB_CODE_SUCCESS;
135,806,065✔
110
}
111

112
static int32_t tlvEncodeValueImpl(STlvEncoder* pEncoder, const void* pValue, int32_t len) {
509,734,182✔
113
  if (pEncoder->offset + len > pEncoder->allocSize) {
509,734,182✔
114
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize * 2);
697,007✔
115
    if (NULL == pNewBuf) {
699,392!
116
      return terrno;
×
117
    }
118
    pEncoder->pBuf = pNewBuf;
699,402✔
119
    pEncoder->allocSize = pEncoder->allocSize * 2;
699,402✔
120
  }
121
  memcpy(pEncoder->pBuf + pEncoder->offset, pValue, len);
509,736,577✔
122
  pEncoder->offset += len;
509,736,577✔
123
  return TSDB_CODE_SUCCESS;
509,736,577✔
124
}
125

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

130
static int32_t tlvEncodeValueI8(STlvEncoder* pEncoder, int8_t value) {
55,300,726✔
131
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
55,300,726✔
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) {
151,044,882✔
140
  value = htons(value);
151,044,882✔
141
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
151,044,882✔
142
}
143

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

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

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

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

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

168
static int32_t tlvEncodeValueU8(STlvEncoder* pEncoder, uint8_t value) {
74,038,148✔
169
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
74,038,148✔
170
}
171

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

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

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

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

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

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

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

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

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

218
static int32_t tlvEncodeValueBool(STlvEncoder* pEncoder, int8_t value) {
99,367,537✔
219
  return tlvEncodeValueImpl(pEncoder, &value, sizeof(value));
99,367,537✔
220
}
221

222
static int32_t tlvEncodeCStr(STlvEncoder* pEncoder, int16_t type, const char* pValue) {
11,269,739✔
223
  if (NULL == pValue) {
11,269,739✔
224
    return TSDB_CODE_SUCCESS;
920,031✔
225
  }
226
  return tlvEncodeImpl(pEncoder, type, pValue, strlen(pValue));
10,349,708✔
227
}
228

229
static int32_t tlvEncodeValueCStr(STlvEncoder* pEncoder, const char* pValue) {
56,708,456✔
230
  int16_t len = strlen(pValue);
56,708,456✔
231
  int32_t code = tlvEncodeValueI16(pEncoder, len);
56,708,456✔
232
  if (TSDB_CODE_SUCCESS == code) {
56,709,903!
233
    code = tlvEncodeValueImpl(pEncoder, pValue, len);
56,717,026✔
234
  }
235
  return code;
56,618,913✔
236
}
237

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

242
static int32_t tlvEncodeObj(STlvEncoder* pEncoder, int16_t type, FToMsg func, const void* pObj) {
206,465,150✔
243
  if (NULL == pObj) {
206,465,150✔
244
    return TSDB_CODE_SUCCESS;
23,601,549✔
245
  }
246

247
  if (pEncoder->offset + sizeof(STlv) > pEncoder->allocSize) {
182,863,601✔
248
    pEncoder->allocSize = TMAX(pEncoder->allocSize * 2, pEncoder->allocSize + sizeof(STlv));
459,693✔
249
    void* pNewBuf = taosMemoryRealloc(pEncoder->pBuf, pEncoder->allocSize);
459,693✔
250
    if (NULL == pNewBuf) {
460,967✔
251
      return terrno;
4✔
252
    }
253
    pEncoder->pBuf = pNewBuf;
460,963✔
254
  }
255

256
  int32_t start = pEncoder->offset;
182,864,871✔
257
  pEncoder->offset += sizeof(STlv);
182,864,871✔
258
  int32_t code = func(pObj, pEncoder);
182,864,871✔
259
  if (TSDB_CODE_SUCCESS == code) {
184,068,187!
260
    STlv* pTlv = (STlv*)(pEncoder->pBuf + start);
184,560,507✔
261
    pTlv->type = htons(type);
184,560,507✔
262
    pTlv->len = htonl(pEncoder->offset - start - sizeof(STlv));
184,560,507✔
263
  }
264
  ++(pEncoder->tlvCount);
184,068,187✔
265
  return code;
184,068,187✔
266
}
267

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

286
static int32_t tlvEncodeValueArray(STlvEncoder* pEncoder, FToMsg func, const void* pArray, int32_t itemSize,
2,697,201✔
287
                                   int32_t num) {
288
  int32_t code = tlvEncodeValueI32(pEncoder, num);
2,697,201✔
289
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < num; ++i) {
4,957,500✔
290
    code = func((const char*)pArray + i * itemSize, pEncoder);
2,260,314✔
291
  }
292
  return code;
2,697,186✔
293
}
294

295
static int32_t tlvGetNextTlv(STlvDecoder* pDecoder, STlv** pTlv) {
458,589,916✔
296
  if (pDecoder->offset == pDecoder->bufSize) {
458,589,916✔
297
    *pTlv = NULL;
108,503,969✔
298
    return TSDB_CODE_SUCCESS;
108,503,969✔
299
  }
300

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

311
static bool tlvDecodeEnd(STlvDecoder* pDecoder) { return pDecoder->offset == pDecoder->bufSize; }
67,527,735✔
312

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

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

335
static int32_t tlvDecodeI8(STlv* pTlv, int8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
52,370,729✔
336

337
static int32_t tlvDecodeValueI8(STlvDecoder* pDecoder, int8_t* pValue) {
178,129,589✔
338
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
178,129,589✔
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) {
182,195,886✔
350
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
182,195,886✔
351
  if (TSDB_CODE_SUCCESS == code) {
181,211,577!
352
    *pValue = ntohs(*pValue);
187,277,453✔
353
  }
354
  return code;
181,211,577✔
355
}
356

357
static int32_t tlvDecodeI32(STlv* pTlv, int32_t* pValue) {
53,095,859✔
358
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
53,095,859✔
359
  if (TSDB_CODE_SUCCESS == code) {
53,057,227!
360
    *pValue = ntohl(*pValue);
53,068,536✔
361
  }
362
  return code;
53,057,227✔
363
}
364

365
static int32_t tlvDecodeValueI32(STlvDecoder* pDecoder, int32_t* pValue) {
85,672,926✔
366
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
85,672,926✔
367
  if (TSDB_CODE_SUCCESS == code) {
85,397,194!
368
    *pValue = ntohl(*pValue);
85,494,138✔
369
  }
370
  return code;
85,397,194✔
371
}
372

373
static int32_t tlvDecodeI64(STlv* pTlv, int64_t* pValue) {
5,986,263✔
374
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
5,986,263✔
375
  if (TSDB_CODE_SUCCESS == code) {
5,985,531!
376
    *pValue = ntohll(*pValue);
5,986,022✔
377
  }
378
  return code;
5,985,531✔
379
}
380

381
static int32_t tlvDecodeValueI64(STlvDecoder* pDecoder, int64_t* pValue) {
9,247,782✔
382
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
9,247,782✔
383
  if (TSDB_CODE_SUCCESS == code) {
9,246,443!
384
    *pValue = ntohll(*pValue);
9,247,881✔
385
  }
386
  return code;
9,246,443✔
387
}
388

389
static int32_t tlvDecodeU8(STlv* pTlv, uint8_t* pValue) { return tlvDecodeImpl(pTlv, pValue, sizeof(*pValue)); }
23,696,742✔
390

391
static int32_t tlvDecodeValueU8(STlvDecoder* pDecoder, uint8_t* pValue) {
86,252,813✔
392
  return tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
86,252,813✔
393
}
394

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

403
static int32_t tlvDecodeValueU16(STlvDecoder* pDecoder, uint16_t* pValue) {
2,424,696✔
404
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
2,424,696✔
405
  if (TSDB_CODE_SUCCESS == code) {
2,424,674!
406
    *pValue = ntohs(*pValue);
2,425,916✔
407
  }
408
  return code;
2,424,674✔
409
}
410

411
static int32_t tlvDecodeU64(STlv* pTlv, uint64_t* pValue) {
2,764,906✔
412
  int32_t code = tlvDecodeImpl(pTlv, pValue, sizeof(*pValue));
2,764,906✔
413
  if (TSDB_CODE_SUCCESS == code) {
2,764,303!
414
    *pValue = ntohll(*pValue);
2,764,368✔
415
  }
416
  return code;
2,764,303✔
417
}
418

419
static int32_t tlvDecodeValueU64(STlvDecoder* pDecoder, uint64_t* pValue) {
20,249,060✔
420
  int32_t code = tlvDecodeValueImpl(pDecoder, pValue, sizeof(*pValue));
20,249,060✔
421
  if (TSDB_CODE_SUCCESS == code) {
20,229,392!
422
    *pValue = ntohll(*pValue);
20,237,433✔
423
  }
424
  return code;
20,229,392✔
425
}
426

427
static int32_t tlvDecodeDouble(STlv* pTlv, double* pValue) {
210,670✔
428
  int64_t temp = 0;
210,670✔
429
  int32_t code = tlvDecodeI64(pTlv, &temp);
210,670✔
430
  if (TSDB_CODE_SUCCESS == code) {
210,742!
431
    *pValue = *(double*)&temp;
210,778✔
432
  }
433
  return code;
210,742✔
434
}
435

436
static int32_t tlvDecodeValueDouble(STlvDecoder* pDecoder, double* pValue) {
1,286,605✔
437
  int64_t temp = 0;
1,286,605✔
438
  int32_t code = tlvDecodeValueI64(pDecoder, &temp);
1,286,605✔
439
  if (TSDB_CODE_SUCCESS == code) {
1,286,884!
440
    *pValue = *(double*)&temp;
1,287,021✔
441
  }
442
  return code;
1,286,884✔
443
}
444

445
static int32_t convertIntegerType(int32_t value, void* pValue, int16_t len) {
185,330,928✔
446
  switch (len) {
185,330,928!
447
    case 1:
154,574,010✔
448
      *(int8_t*)pValue = value;
154,574,010✔
449
      break;
154,574,010✔
450
    case 2:
×
451
      *(int16_t*)pValue = value;
×
452
      break;
×
453
    case 4:
31,572,019✔
454
      *(int32_t*)pValue = value;
31,572,019✔
455
      break;
31,572,019✔
456
    default:
×
457
      return TSDB_CODE_FAILED;
×
458
  }
459
  return TSDB_CODE_SUCCESS;
186,146,029✔
460
}
461

462
static int32_t tlvDecodeBool(STlv* pTlv, bool* pValue) {
39,546,889✔
463
  int8_t  value = 0;
39,546,889✔
464
  int32_t code = tlvDecodeI8(pTlv, &value);
39,546,889✔
465
  if (TSDB_CODE_SUCCESS == code) {
39,525,175!
466
    code = convertIntegerType(value, pValue, sizeof(bool));
39,525,876✔
467
  }
468
  return code;
39,539,683✔
469
}
470

471
static int32_t tlvDecodeValueBool(STlvDecoder* pDecoder, bool* pValue) {
115,506,193✔
472
  int8_t  value = 0;
115,506,193✔
473
  int32_t code = tlvDecodeValueI8(pDecoder, &value);
115,506,193✔
474
  if (TSDB_CODE_SUCCESS == code) {
115,508,871!
475
    code = convertIntegerType(value, pValue, sizeof(bool));
115,519,127✔
476
  }
477
  return code;
115,513,449✔
478
}
479

480
static int32_t tlvDecodeEnum(STlv* pTlv, void* pValue, int16_t len) {
14,276,292✔
481
  int32_t value = 0;
14,276,292✔
482
  int32_t code = tlvDecodeI32(pTlv, &value);
14,276,292✔
483
  if (TSDB_CODE_SUCCESS == code) {
14,273,904!
484
    code = convertIntegerType(value, pValue, len);
14,274,091✔
485
  }
486
  return code;
14,274,704✔
487
}
488

489
static int32_t tlvDecodeValueEnum(STlvDecoder* pDecoder, void* pValue, int16_t len) {
17,421,986✔
490
  int32_t value = 0;
17,421,986✔
491
  int32_t code = tlvDecodeValueI32(pDecoder, &value);
17,421,986✔
492
  if (TSDB_CODE_SUCCESS == code) {
17,346,571!
493
    code = convertIntegerType(value, pValue, len);
17,347,665✔
494
  }
495
  return code;
17,337,807✔
496
}
497

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

506
static int32_t tlvDecodeValueCStr(STlvDecoder* pDecoder, char* pValue) {
67,603,404✔
507
  int16_t len = 0;
67,603,404✔
508
  int32_t code = tlvDecodeValueI16(pDecoder, &len);
67,603,404✔
509
  if (TSDB_CODE_SUCCESS == code) {
68,422,422!
510
    code = tlvDecodeValueImpl(pDecoder, pValue, len);
68,433,760✔
511
  }
512
  return code;
67,996,985✔
513
}
514

515
static int32_t tlvDecodeCStrP(STlv* pTlv, char** pValue) {
4,471,223✔
516
  *pValue = taosStrndup(pTlv->value, pTlv->len);
4,471,223✔
517
  return NULL == *pValue ? terrno : TSDB_CODE_SUCCESS;
4,490,474!
518
}
519

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

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

534
static int32_t tlvDecodeObjFromTlv(STlv* pTlv, FToObject func, void* pObj) {
168,933,589✔
535
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
168,933,589✔
536
  return func(&decoder, pObj);
168,933,589✔
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) {
35,761✔
549
  int32_t code = TSDB_CODE_SUCCESS;
35,761✔
550
  int32_t i = 0;
35,761✔
551
  STlv*   pTlv = NULL;
35,761✔
552
  tlvForEach(pDecoder, pTlv, code) { code = tlvDecodeObjFromTlv(pTlv, func, (char*)pArray + itemSize * i++); }
72,657!
553
  return code;
35,772✔
554
}
555

556
static int32_t tlvDecodeValueArray(STlvDecoder* pDecoder, FToObject func, void* pArray, int32_t itemSize,
2,882,167✔
557
                                   int32_t* pNum) {
558
  int32_t code = tlvDecodeValueI32(pDecoder, pNum);
2,882,167✔
559
  for (size_t i = 0; TSDB_CODE_SUCCESS == code && i < *pNum; ++i) {
5,308,415✔
560
    code = func(pDecoder, (char*)pArray + i * itemSize);
2,424,630✔
561
  }
562
  return code;
2,883,785✔
563
}
564

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

570
static int32_t tlvDecodeDynObjFromTlv(STlv* pTlv, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
78,543,089✔
571
  int32_t code = makeFunc(pTlv->type, (SNode**)pObj);
78,543,089✔
572
  if (NULL == *pObj) {
78,654,188!
573
    return code;
×
574
  }
575
  return tlvDecodeObjFromTlv(pTlv, toFunc, *pObj);
78,654,188✔
576
}
577

578
static int32_t tlvDecodeDynObj(STlvDecoder* pDecoder, FMakeObject makeFunc, FToObject toFunc, void** pObj) {
78,789,827✔
579
  STlv*   pTlv = NULL;
78,789,827✔
580
  int32_t code = tlvGetNextTlv(pDecoder, &pTlv);
78,789,827✔
581
  if (TSDB_CODE_SUCCESS == code) {
78,537,721!
582
    code = tlvDecodeDynObjFromTlv(pTlv, makeFunc, toFunc, pObj);
78,548,922✔
583
  }
584
  return code;
77,826,049✔
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) {
34,015,900✔
590
  const SDataType* pNode = (const SDataType*)pObj;
34,015,900✔
591

592
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->type);
34,015,900✔
593
  if (TSDB_CODE_SUCCESS == code) {
33,830,986!
594
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
33,834,411✔
595
  }
596
  if (TSDB_CODE_SUCCESS == code) {
33,551,849!
597
    code = tlvEncodeValueU8(pEncoder, pNode->scale);
33,562,148✔
598
  }
599
  if (TSDB_CODE_SUCCESS == code) {
33,174,682!
600
    code = tlvEncodeValueI32(pEncoder, pNode->bytes);
33,240,034✔
601
  }
602

603
  return code;
33,410,654✔
604
}
605

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

609
  int32_t code = tlvEncodeI8(pEncoder, DATA_TYPE_CODE_TYPE, pNode->type);
10,450,896✔
610
  if (TSDB_CODE_SUCCESS == code) {
10,448,167!
611
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_PRECISION, pNode->precision);
10,448,343✔
612
  }
613
  if (TSDB_CODE_SUCCESS == code) {
10,441,000!
614
    code = tlvEncodeU8(pEncoder, DATA_TYPE_CODE_SCALE, pNode->scale);
10,441,381✔
615
  }
616
  if (TSDB_CODE_SUCCESS == code) {
10,433,045!
617
    code = tlvEncodeI32(pEncoder, DATA_TYPE_CODE_BYTES, pNode->bytes);
10,433,955✔
618
  }
619

620
  return code;
10,441,003✔
621
}
622

623
static int32_t msgToDataTypeInline(STlvDecoder* pDecoder, void* pObj) {
39,640,253✔
624
  SDataType* pNode = (SDataType*)pObj;
39,640,253✔
625

626
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->type);
39,640,253✔
627
  if (TSDB_CODE_SUCCESS == code) {
39,552,809!
628
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
39,555,856✔
629
  }
630
  if (TSDB_CODE_SUCCESS == code) {
39,168,295!
631
    code = tlvDecodeValueU8(pDecoder, &pNode->scale);
39,169,407✔
632
  }
633
  if (TSDB_CODE_SUCCESS == code) {
38,877,091!
634
    code = tlvDecodeValueI32(pDecoder, &pNode->bytes);
38,883,898✔
635
  }
636

637
  return code;
38,798,043✔
638
}
639

640
static int32_t msgToDataType(STlvDecoder* pDecoder, void* pObj) {
11,209,401✔
641
  SDataType* pNode = (SDataType*)pObj;
11,209,401✔
642

643
  int32_t code = TSDB_CODE_SUCCESS;
11,209,401✔
644
  STlv*   pTlv = NULL;
11,209,401✔
645
  tlvForEach(pDecoder, pTlv, code) {
55,937,926!
646
    switch (pTlv->type) {
44,747,588!
647
      case DATA_TYPE_CODE_TYPE:
11,202,647✔
648
        code = tlvDecodeI8(pTlv, &pNode->type);
11,202,647✔
649
        break;
11,195,500✔
650
      case DATA_TYPE_CODE_PRECISION:
11,188,924✔
651
        code = tlvDecodeU8(pTlv, &pNode->precision);
11,188,924✔
652
        break;
11,182,817✔
653
      case DATA_TYPE_CODE_SCALE:
11,180,660✔
654
        code = tlvDecodeU8(pTlv, &pNode->scale);
11,180,660✔
655
        break;
11,171,544✔
656
      case DATA_TYPE_CODE_BYTES:
11,175,357✔
657
        code = tlvDecodeI32(pTlv, &pNode->bytes);
11,175,357✔
658
        break;
11,178,664✔
659
      default:
×
660
        break;
×
661
    }
662
  }
663

664
  return code;
11,186,415✔
665
}
666

667
enum { EXPR_CODE_RES_TYPE = 1 };
668

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

674
static int32_t msgToExprNode(STlvDecoder* pDecoder, void* pObj) {
11,212,154✔
675
  SExprNode* pNode = (SExprNode*)pObj;
11,212,154✔
676

677
  int32_t code = TSDB_CODE_SUCCESS;
11,212,154✔
678
  STlv*   pTlv = NULL;
11,212,154✔
679
  tlvForEach(pDecoder, pTlv, code) {
22,388,672!
680
    switch (pTlv->type) {
11,211,421!
681
      case EXPR_CODE_RES_TYPE:
11,211,421✔
682
        code = tlvDecodeObjFromTlv(pTlv, msgToDataType, &pNode->resType);
11,211,421✔
683
        break;
11,176,518✔
684
      default:
×
685
        break;
×
686
    }
687
  }
688

689
  return code;
11,161,567✔
690
}
691

692
enum { COLUMN_CODE_INLINE_ATTRS = 1 };
693

694
static int32_t columnNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
13,324,990✔
695
  const SColumnNode* pNode = (const SColumnNode*)pObj;
13,324,990✔
696

697
  int32_t code = dataTypeInlineToMsg(&pNode->node.resType, pEncoder);
13,324,990✔
698
  if (TSDB_CODE_SUCCESS == code) {
13,181,963!
699
    code = tlvEncodeValueU64(pEncoder, pNode->tableId);
13,183,359✔
700
  }
701
  if (TSDB_CODE_SUCCESS == code) {
13,161,697!
702
    code = tlvEncodeValueI8(pEncoder, pNode->tableType);
13,164,653✔
703
  }
704
  if (TSDB_CODE_SUCCESS == code) {
13,124,604!
705
    code = tlvEncodeValueI16(pEncoder, pNode->colId);
13,128,736✔
706
  }
707
  if (TSDB_CODE_SUCCESS == code) {
13,179,352!
708
    code = tlvEncodeValueEnum(pEncoder, pNode->colType);
13,184,032✔
709
  }
710
  if (TSDB_CODE_SUCCESS == code) {
13,181,532!
711
    code = tlvEncodeValueCStr(pEncoder, pNode->dbName);
13,186,595✔
712
  }
713
  if (TSDB_CODE_SUCCESS == code) {
13,150,255!
714
    code = tlvEncodeValueCStr(pEncoder, pNode->tableName);
13,156,228✔
715
  }
716
  if (TSDB_CODE_SUCCESS == code) {
13,110,073!
717
    code = tlvEncodeValueCStr(pEncoder, pNode->tableAlias);
13,117,776✔
718
  }
719
  if (TSDB_CODE_SUCCESS == code) {
13,115,992!
720
    code = tlvEncodeValueCStr(pEncoder, pNode->colName);
13,125,680✔
721
  }
722
  if (TSDB_CODE_SUCCESS == code) {
13,110,310!
723
    code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
13,127,137✔
724
  }
725
  if (TSDB_CODE_SUCCESS == code) {
13,185,427!
726
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
13,211,514✔
727
  }
728
  if (TSDB_CODE_SUCCESS == code) {
13,192,111!
729
    code = tlvEncodeValueBool(pEncoder, pNode->tableHasPk);
13,218,899✔
730
  }
731
  if (TSDB_CODE_SUCCESS == code) {
13,199,587!
732
    code = tlvEncodeValueBool(pEncoder, pNode->isPk);
13,226,847✔
733
  }  
734
  if (TSDB_CODE_SUCCESS == code) {
13,131,917!
735
    code = tlvEncodeValueI16(pEncoder, pNode->numOfPKs);
13,165,009✔
736
  }  
737
  return code;
13,187,758✔
738
}
739

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

744
static int32_t msgToColumnNodeInline(STlvDecoder* pDecoder, void* pObj) {
15,491,408✔
745
  SColumnNode* pNode = (SColumnNode*)pObj;
15,491,408✔
746

747
  int32_t code = msgToDataTypeInline(pDecoder, &pNode->node.resType);
15,491,408✔
748
  if (TSDB_CODE_SUCCESS == code) {
15,304,483!
749
    code = tlvDecodeValueU64(pDecoder, &pNode->tableId);
15,304,795✔
750
  }
751
  if (TSDB_CODE_SUCCESS == code) {
15,293,570!
752
    code = tlvDecodeValueI8(pDecoder, &pNode->tableType);
15,293,689✔
753
  }
754
  if (TSDB_CODE_SUCCESS == code) {
15,332,228!
755
    code = tlvDecodeValueI16(pDecoder, &pNode->colId);
15,332,996✔
756
  }
757
  if (TSDB_CODE_SUCCESS == code) {
15,573,129!
758
    code = tlvDecodeValueEnum(pDecoder, &pNode->colType, sizeof(pNode->colType));
15,576,308✔
759
  }
760
  if (TSDB_CODE_SUCCESS == code) {
15,487,959!
761
    code = tlvDecodeValueCStr(pDecoder, pNode->dbName);
15,491,362✔
762
  }
763
  if (TSDB_CODE_SUCCESS == code) {
15,539,768!
764
    code = tlvDecodeValueCStr(pDecoder, pNode->tableName);
15,542,532✔
765
  }
766
  if (TSDB_CODE_SUCCESS == code) {
15,554,360!
767
    code = tlvDecodeValueCStr(pDecoder, pNode->tableAlias);
15,557,347✔
768
  }
769
  if (TSDB_CODE_SUCCESS == code) {
15,553,782!
770
    code = tlvDecodeValueCStr(pDecoder, pNode->colName);
15,556,975✔
771
  }
772
  if (TSDB_CODE_SUCCESS == code) {
15,562,737!
773
    code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
15,566,193✔
774
  }
775
  if (TSDB_CODE_SUCCESS == code) {
15,602,074!
776
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
15,606,454✔
777
  }
778
  if (TSDB_CODE_SUCCESS == code) {
15,596,594!
779
    code = tlvDecodeValueBool(pDecoder, &pNode->tableHasPk);
15,602,127✔
780
  }
781
  if (TSDB_CODE_SUCCESS == code) {
15,526,479!
782
    code = tlvDecodeValueBool(pDecoder, &pNode->isPk);
15,532,536✔
783
  }  
784
  if (TSDB_CODE_SUCCESS == code) {
15,457,071!
785
    code = tlvDecodeValueI16(pDecoder, &pNode->numOfPKs);
15,463,554✔
786
  }  
787
  return code;
15,590,551✔
788
}
789

790
static int32_t msgToColumnNode(STlvDecoder* pDecoder, void* pObj) {
15,520,798✔
791
  SColumnNode* pNode = (SColumnNode*)pObj;
15,520,798✔
792

793
  int32_t code = TSDB_CODE_SUCCESS;
15,520,798✔
794
  STlv*   pTlv = NULL;
15,520,798✔
795
  tlvForEach(pDecoder, pTlv, code) {
31,107,045!
796
    switch (pTlv->type) {
15,503,624!
797
      case COLUMN_CODE_INLINE_ATTRS:
15,503,624✔
798
        code = tlvDecodeObjFromTlv(pTlv, msgToColumnNodeInline, pNode);
15,503,624✔
799
        break;
15,586,247✔
800
      default:
×
801
        break;
×
802
    }
803
  }
804

805
  return code;
15,588,481✔
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,339,998✔
819
  const SValueNode* pNode = (const SValueNode*)pObj;
5,339,998✔
820

821
  int32_t code = TSDB_CODE_SUCCESS;
5,339,998✔
822
  switch (pNode->node.resType.type) {
5,339,998!
823
    case TSDB_DATA_TYPE_NULL:
×
824
      break;
×
825
    case TSDB_DATA_TYPE_BOOL:
66,236✔
826
      code = tlvEncodeBool(pEncoder, VALUE_CODE_DATUM, pNode->datum.b);
66,236✔
827
      break;
66,233✔
828
    case TSDB_DATA_TYPE_TINYINT:
4,722,676✔
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,722,676✔
834
      break;
4,723,136✔
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:
206,336✔
842
    case TSDB_DATA_TYPE_DOUBLE:
843
      code = tlvEncodeDouble(pEncoder, VALUE_CODE_DATUM, pNode->datum.d);
206,336✔
844
      break;
206,404✔
845
    case TSDB_DATA_TYPE_VARCHAR:
346,825✔
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));
346,825✔
850
      break;
346,866✔
851
    case TSDB_DATA_TYPE_JSON:
12✔
852
      code = tlvEncodeBinary(pEncoder, VALUE_CODE_DATUM, pNode->datum.p, getJsonValueLen(pNode->datum.p));
12✔
853
      break;
329✔
854
    case TSDB_DATA_TYPE_DECIMAL:
×
855
    case TSDB_DATA_TYPE_BLOB:
856
      // todo
857
    default:
858
      break;
×
859
  }
860

861
  return code;
5,340,881✔
862
}
863

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

867
  int32_t code = tlvEncodeObj(pEncoder, VALUE_CODE_EXPR_BASE, exprNodeToMsg, pNode);
5,346,380✔
868
  if (TSDB_CODE_SUCCESS == code) {
5,345,438!
869
    code = tlvEncodeCStr(pEncoder, VALUE_CODE_LITERAL, pNode->literal);
5,345,545✔
870
  }
871
  if (TSDB_CODE_SUCCESS == code) {
5,345,836!
872
    code = tlvEncodeI32(pEncoder, VALUE_CODE_FLAG, pNode->flag);
5,345,987✔
873
  }
874
  if (TSDB_CODE_SUCCESS == code) {
5,345,877!
875
    code = tlvEncodeBool(pEncoder, VALUE_CODE_TRANSLATE, pNode->translate);
5,346,120✔
876
  }
877
  if (TSDB_CODE_SUCCESS == code) {
5,346,377!
878
    code = tlvEncodeBool(pEncoder, VALUE_CODE_NOT_RESERVED, pNode->notReserved);
5,346,643✔
879
  }
880
  if (TSDB_CODE_SUCCESS == code) {
5,342,796!
881
    code = tlvEncodeBool(pEncoder, VALUE_CODE_IS_NULL, pNode->isNull);
5,343,133✔
882
  }
883
  if (TSDB_CODE_SUCCESS == code && !pNode->isNull) {
5,343,177!
884
    code = datumToMsg(pNode, pEncoder);
5,339,498✔
885
  }
886

887
  return code;
5,345,077✔
888
}
889

890
static int32_t msgToDatum(STlv* pTlv, void* pObj) {
5,551,046✔
891
  SValueNode* pNode = (SValueNode*)pObj;
5,551,046✔
892

893
  int32_t code = TSDB_CODE_SUCCESS;
5,551,046✔
894
  switch (pNode->node.resType.type) {
5,551,046!
895
    case TSDB_DATA_TYPE_NULL:
×
896
      break;
×
897
    case TSDB_DATA_TYPE_BOOL:
66,281✔
898
      code = tlvDecodeBool(pTlv, &pNode->datum.b);
66,281✔
899
      *(bool*)&pNode->typeData = pNode->datum.b;
66,301✔
900
      break;
66,301✔
901
    case TSDB_DATA_TYPE_TINYINT:
1,150,801✔
902
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
1,150,801✔
903
      *(int8_t*)&pNode->typeData = pNode->datum.i;
1,150,961✔
904
      break;
1,150,961✔
905
    case TSDB_DATA_TYPE_SMALLINT:
60,169✔
906
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
60,169✔
907
      *(int16_t*)&pNode->typeData = pNode->datum.i;
60,184✔
908
      break;
60,184✔
909
    case TSDB_DATA_TYPE_INT:
71,197✔
910
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
71,197✔
911
      *(int32_t*)&pNode->typeData = pNode->datum.i;
71,210✔
912
      break;
71,210✔
913
    case TSDB_DATA_TYPE_BIGINT:
3,567,966✔
914
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
3,567,966✔
915
      *(int64_t*)&pNode->typeData = pNode->datum.i;
3,567,925✔
916
      break;
3,567,925✔
917
    case TSDB_DATA_TYPE_TIMESTAMP:
56,758✔
918
      code = tlvDecodeI64(pTlv, &pNode->datum.i);
56,758✔
919
      *(int64_t*)&pNode->typeData = pNode->datum.i;
56,762✔
920
      break;
56,762✔
921
    case TSDB_DATA_TYPE_UTINYINT:
88✔
922
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
88✔
923
      *(uint8_t*)&pNode->typeData = pNode->datum.u;
88✔
924
      break;
88✔
925
    case TSDB_DATA_TYPE_USMALLINT:
15✔
926
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
15✔
927
      *(uint16_t*)&pNode->typeData = pNode->datum.u;
15✔
928
      break;
15✔
929
    case TSDB_DATA_TYPE_UINT:
15✔
930
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
15✔
931
      *(uint32_t*)&pNode->typeData = pNode->datum.u;
15✔
932
      break;
15✔
933
    case TSDB_DATA_TYPE_UBIGINT:
60✔
934
      code = tlvDecodeU64(pTlv, &pNode->datum.u);
60✔
935
      *(uint64_t*)&pNode->typeData = pNode->datum.u;
60✔
936
      break;
60✔
937
    case TSDB_DATA_TYPE_FLOAT:
1,863✔
938
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
1,863✔
939
      *(float*)&pNode->typeData = pNode->datum.d;
1,864✔
940
      break;
1,864✔
941
    case TSDB_DATA_TYPE_DOUBLE:
208,762✔
942
      code = tlvDecodeDouble(pTlv, &pNode->datum.d);
208,762✔
943
      *(double*)&pNode->typeData = pNode->datum.d;
208,854✔
944
      break;
208,854✔
945
    case TSDB_DATA_TYPE_NCHAR:
368,142✔
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) {
368,142!
950
        code = TSDB_CODE_FAILED;
×
951
        break;
×
952
      }
953
      pNode->datum.p = taosMemoryCalloc(1, pNode->node.resType.bytes + 1);
368,142✔
954
      if (NULL == pNode->datum.p) {
368,754!
955
        code = terrno;
×
956
        break;
×
957
      }
958
      code = tlvDecodeBinary(pTlv, pNode->datum.p);
368,754✔
959
      if (TSDB_CODE_SUCCESS == code) {
368,690!
960
        varDataSetLen(pNode->datum.p, pTlv->len - VARSTR_HEADER_SIZE);
368,694✔
961
      }
962
      break;
368,690✔
963
    }
964
    case TSDB_DATA_TYPE_JSON: {
12✔
965
      if (pTlv->len <= 0 || pTlv->len > TSDB_MAX_JSON_TAG_LEN) {
12!
966
        code = TSDB_CODE_FAILED;
×
967
        break;
×
968
      }
969
      code = tlvDecodeDynBinary(pTlv, (void**)&pNode->datum.p);
12✔
970
      break;
12✔
971
    }
972
    case TSDB_DATA_TYPE_DECIMAL:
×
973
    case TSDB_DATA_TYPE_BLOB:
974
      // todo
975
    default:
976
      break;
×
977
  }
978

979
  return code;
5,551,858✔
980
}
981

982
static int32_t msgToValueNode(STlvDecoder* pDecoder, void* pObj) {
5,565,383✔
983
  SValueNode* pNode = (SValueNode*)pObj;
5,565,383✔
984

985
  int32_t code = TSDB_CODE_SUCCESS;
5,565,383✔
986
  STlv*   pTlv = NULL;
5,565,383✔
987
  tlvForEach(pDecoder, pTlv, code) {
43,382,940!
988
    switch (pTlv->type) {
37,821,691!
989
      case VALUE_CODE_EXPR_BASE:
5,564,021✔
990
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
5,564,021✔
991
        break;
5,543,727✔
992
      case VALUE_CODE_LITERAL:
4,471,406✔
993
        code = tlvDecodeCStrP(pTlv, &pNode->literal);
4,471,406✔
994
        break;
4,490,496✔
995
      case VALUE_CODE_FLAG:
5,562,987✔
996
        code = tlvDecodeI32(pTlv, &pNode->flag);
5,562,987✔
997
        break;
5,561,162✔
998
      case VALUE_CODE_TRANSLATE:
5,559,676✔
999
        code = tlvDecodeBool(pTlv, &pNode->translate);
5,559,676✔
1000
        break;
5,557,280✔
1001
      case VALUE_CODE_NOT_RESERVED:
5,556,761✔
1002
        code = tlvDecodeBool(pTlv, &pNode->notReserved);
5,556,761✔
1003
        break;
5,556,218✔
1004
      case VALUE_CODE_IS_NULL:
5,555,794✔
1005
        code = tlvDecodeBool(pTlv, &pNode->isNull);
5,555,794✔
1006
        break;
5,556,736✔
1007
      case VALUE_CODE_DATUM:
5,551,046✔
1008
        code = msgToDatum(pTlv, pNode);
5,551,046✔
1009
        break;
5,551,938✔
1010
      default:
×
1011
        break;
×
1012
    }
1013
  }
1014

1015
  return code;
5,553,853✔
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,428,143✔
1021
  const SOperatorNode* pNode = (const SOperatorNode*)pObj;
1,428,143✔
1022

1023
  int32_t code = tlvEncodeObj(pEncoder, OPERATOR_CODE_EXPR_BASE, exprNodeToMsg, pNode);
1,428,143✔
1024
  if (TSDB_CODE_SUCCESS == code) {
1,427,645!
1025
    code = tlvEncodeEnum(pEncoder, OPERATOR_CODE_OP_TYPE, pNode->opType);
1,427,663✔
1026
  }
1027
  if (TSDB_CODE_SUCCESS == code) {
1,427,599!
1028
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_LEFT, nodeToMsg, pNode->pLeft);
1,427,622✔
1029
  }
1030
  if (TSDB_CODE_SUCCESS == code) {
1,425,680!
1031
    code = tlvEncodeObj(pEncoder, OPERATOR_CODE_RIGHT, nodeToMsg, pNode->pRight);
1,425,740✔
1032
  }
1033

1034
  return code;
1,425,440✔
1035
}
1036

1037
static int32_t msgToOperatorNode(STlvDecoder* pDecoder, void* pObj) {
1,544,053✔
1038
  SOperatorNode* pNode = (SOperatorNode*)pObj;
1,544,053✔
1039

1040
  int32_t code = TSDB_CODE_SUCCESS;
1,544,053✔
1041
  STlv*   pTlv = NULL;
1,544,053✔
1042
  tlvForEach(pDecoder, pTlv, code) {
7,555,573!
1043
    switch (pTlv->type) {
6,012,064!
1044
      case OPERATOR_CODE_EXPR_BASE:
1,543,869✔
1045
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
1,543,869✔
1046
        break;
1,541,668✔
1047
      case OPERATOR_CODE_OP_TYPE:
1,541,889✔
1048
        code = tlvDecodeEnum(pTlv, &pNode->opType, sizeof(pNode->opType));
1,541,889✔
1049
        break;
1,542,316✔
1050
      case OPERATOR_CODE_LEFT:
1,542,296✔
1051
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLeft);
1,542,296✔
1052
        break;
1,544,601✔
1053
      case OPERATOR_CODE_RIGHT:
1,384,010✔
1054
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pRight);
1,384,010✔
1055
        break;
1,382,935✔
1056
      default:
×
1057
        break;
×
1058
    }
1059
  }
1060

1061
  return code;
1,541,847✔
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) {
319,145✔
1067
  const SLogicConditionNode* pNode = (const SLogicConditionNode*)pObj;
319,145✔
1068

1069
  int32_t code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_EXPR_BASE, exprNodeToMsg, pNode);
319,145✔
1070
  if (TSDB_CODE_SUCCESS == code) {
319,251!
1071
    code = tlvEncodeEnum(pEncoder, LOGIC_COND_CODE_COND_TYPE, pNode->condType);
319,259✔
1072
  }
1073
  if (TSDB_CODE_SUCCESS == code) {
319,267✔
1074
    code = tlvEncodeObj(pEncoder, LOGIC_COND_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
319,264✔
1075
  }
1076

1077
  return code;
318,888✔
1078
}
1079

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

1083
  int32_t code = TSDB_CODE_SUCCESS;
327,558✔
1084
  STlv*   pTlv = NULL;
327,558✔
1085
  tlvForEach(pDecoder, pTlv, code) {
1,309,688!
1086
    switch (pTlv->type) {
981,990!
1087
      case LOGIC_COND_CODE_EXPR_BASE:
327,516✔
1088
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
327,516✔
1089
        break;
327,173✔
1090
      case LOGIC_COND_CODE_COND_TYPE:
327,206✔
1091
        code = tlvDecodeEnum(pTlv, &pNode->condType, sizeof(pNode->condType));
327,206✔
1092
        break;
327,265✔
1093
      case LOGIC_COND_CODE_PARAMETERS:
327,268✔
1094
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
327,268✔
1095
        break;
327,692✔
1096
      default:
×
1097
        break;
×
1098
    }
1099
  }
1100

1101
  return code;
327,491✔
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,376,617✔
1119
  const SFunctionNode* pNode = (const SFunctionNode*)pObj;
3,376,617✔
1120

1121
  int32_t code = tlvEncodeObj(pEncoder, FUNCTION_CODE_EXPR_BASE, exprNodeToMsg, pNode);
3,376,617✔
1122
  if (TSDB_CODE_SUCCESS == code) {
3,365,723!
1123
    code = tlvEncodeCStr(pEncoder, FUNCTION_CODE_FUNCTION_NAME, pNode->functionName);
3,365,926✔
1124
  }
1125
  if (TSDB_CODE_SUCCESS == code) {
3,367,168!
1126
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_ID, pNode->funcId);
3,367,494✔
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
3,365,087!
1129
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_FUNCTION_TYPE, pNode->funcType);
3,365,584✔
1130
  }
1131
  if (TSDB_CODE_SUCCESS == code) {
3,363,254!
1132
    code = tlvEncodeObj(pEncoder, FUNCTION_CODE_PARAMETERS, nodeListToMsg, pNode->pParameterList);
3,364,098✔
1133
  }
1134
  if (TSDB_CODE_SUCCESS == code) {
3,364,159!
1135
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_UDF_BUF_SIZE, pNode->udfBufSize);
3,365,299✔
1136
  }
1137
  if (TSDB_CODE_SUCCESS == code) {
3,371,321!
1138
    code = tlvEncodeBool(pEncoder, FUNCTION_NODE_HAS_PK, pNode->hasPk);
3,373,012✔
1139
  }
1140
  if (TSDB_CODE_SUCCESS == code) {
3,372,757!
1141
    code = tlvEncodeI32(pEncoder, FUNCTION_NODE_PK_BYTES, pNode->pkBytes);
3,374,585✔
1142
  }  
1143
  if (TSDB_CODE_SUCCESS == code) {
3,373,177!
1144
    code = tlvEncodeBool(pEncoder, FUNCTION_CODE_IS_MERGE_FUNC, pNode->hasOriginalFunc);
3,375,948✔
1145
  }
1146
  if (TSDB_CODE_SUCCESS == code) {
3,371,222!
1147
    code = tlvEncodeI32(pEncoder, FUNCTION_CODE_MERGE_FUNC_OF, pNode->originalFuncId);
3,374,125✔
1148
  }
1149
  if (TSDB_CODE_SUCCESS == code) {
3,372,875!
1150
    code = tlvEncodeEnum(pEncoder, FUNCTION_CODE_TRIM_TYPE, pNode->trimType);
3,377,302✔
1151
  }
1152

1153
  return code;
3,379,159✔
1154
}
1155

1156
static int32_t msgToFunctionNode(STlvDecoder* pDecoder, void* pObj) {
3,775,579✔
1157
  SFunctionNode* pNode = (SFunctionNode*)pObj;
3,775,579✔
1158

1159
  int32_t code = TSDB_CODE_SUCCESS;
3,775,579✔
1160
  STlv*   pTlv = NULL;
3,775,579✔
1161
  tlvForEach(pDecoder, pTlv, code) {
44,500,498!
1162
    switch (pTlv->type) {
40,728,683!
1163
      case FUNCTION_CODE_EXPR_BASE:
3,774,361✔
1164
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
3,774,361✔
1165
        break;
3,762,739✔
1166
      case FUNCTION_CODE_FUNCTION_NAME:
3,763,134✔
1167
        code = tlvDecodeCStr(pTlv, pNode->functionName, sizeof(pNode->functionName));
3,763,134✔
1168
        break;
3,763,164✔
1169
      case FUNCTION_CODE_FUNCTION_ID:
3,762,598✔
1170
        code = tlvDecodeI32(pTlv, &pNode->funcId);
3,762,598✔
1171
        break;
3,763,286✔
1172
      case FUNCTION_CODE_FUNCTION_TYPE:
3,763,279✔
1173
        code = tlvDecodeI32(pTlv, &pNode->funcType);
3,763,279✔
1174
        break;
3,762,098✔
1175
      case FUNCTION_CODE_PARAMETERS:
3,036,718✔
1176
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pParameterList);
3,036,718✔
1177
        break;
3,047,976✔
1178
      case FUNCTION_CODE_UDF_BUF_SIZE:
3,775,403✔
1179
        code = tlvDecodeI32(pTlv, &pNode->udfBufSize);
3,775,403✔
1180
        break;
3,773,512✔
1181
      case FUNCTION_NODE_HAS_PK:
3,772,893✔
1182
        code = tlvDecodeBool(pTlv, &pNode->hasPk);
3,772,893✔
1183
        break;
3,771,783✔
1184
      case FUNCTION_NODE_PK_BYTES:
3,770,816✔
1185
        code = tlvDecodeI32(pTlv, &pNode->pkBytes);
3,770,816✔
1186
        break;  
3,770,718✔
1187
      case FUNCTION_CODE_IS_MERGE_FUNC:
3,770,411✔
1188
        code = tlvDecodeBool(pTlv, &pNode->hasOriginalFunc);
3,770,411✔
1189
        break;
3,770,319✔
1190
      case FUNCTION_CODE_MERGE_FUNC_OF:
3,769,706✔
1191
        code = tlvDecodeI32(pTlv, &pNode->originalFuncId);
3,769,706✔
1192
        break;
3,769,606✔
1193
      case FUNCTION_CODE_TRIM_TYPE:
3,769,364✔
1194
        code = tlvDecodeEnum(pTlv, &pNode->trimType, sizeof(pNode->trimType));
3,769,364✔
1195
        break;
3,769,718✔
1196
      default:
×
1197
        break;
×
1198
    }
1199
  }
1200

1201
  return code;
3,756,494✔
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) {
318,730✔
1207
  const SOrderByExprNode* pNode = (const SOrderByExprNode*)pObj;
318,730✔
1208

1209
  int32_t code = tlvEncodeObj(pEncoder, ORDER_BY_EXPR_CODE_EXPR, nodeToMsg, pNode->pExpr);
318,730✔
1210
  if (TSDB_CODE_SUCCESS == code) {
318,559!
1211
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_ORDER, pNode->order);
318,560✔
1212
  }
1213
  if (TSDB_CODE_SUCCESS == code) {
318,628!
1214
    code = tlvEncodeEnum(pEncoder, ORDER_BY_EXPR_CODE_NULL_ORDER, pNode->nullOrder);
318,630✔
1215
  }
1216

1217
  return code;
318,635✔
1218
}
1219

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

1223
  int32_t code = TSDB_CODE_SUCCESS;
328,857✔
1224
  STlv*   pTlv = NULL;
328,857✔
1225
  tlvForEach(pDecoder, pTlv, code) {
1,315,433!
1226
    switch (pTlv->type) {
986,608!
1227
      case ORDER_BY_EXPR_CODE_EXPR:
328,865✔
1228
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
328,865✔
1229
        break;
328,901✔
1230
      case ORDER_BY_EXPR_CODE_ORDER:
328,893✔
1231
        code = tlvDecodeEnum(pTlv, &pNode->order, sizeof(pNode->order));
328,893✔
1232
        break;
328,858✔
1233
      case ORDER_BY_EXPR_CODE_NULL_ORDER:
328,850✔
1234
        code = tlvDecodeEnum(pTlv, &pNode->nullOrder, sizeof(pNode->nullOrder));
328,850✔
1235
        break;
328,817✔
1236
      default:
×
1237
        break;
×
1238
    }
1239
  }
1240

1241
  return code;
328,785✔
1242
}
1243

1244
enum { LIMIT_CODE_LIMIT = 1, LIMIT_CODE_OFFSET };
1245

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

1249
  int32_t code = tlvEncodeI64(pEncoder, LIMIT_CODE_LIMIT, pNode->limit);
194,491✔
1250
  if (TSDB_CODE_SUCCESS == code) {
194,472!
1251
    code = tlvEncodeI64(pEncoder, LIMIT_CODE_OFFSET, pNode->offset);
194,476✔
1252
  }
1253

1254
  return code;
194,446✔
1255
}
1256

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

1260
  int32_t code = TSDB_CODE_SUCCESS;
203,870✔
1261
  STlv*   pTlv = NULL;
203,870✔
1262
  tlvForEach(pDecoder, pTlv, code) {
611,484!
1263
    switch (pTlv->type) {
407,683!
1264
      case LIMIT_CODE_LIMIT:
203,886✔
1265
        code = tlvDecodeI64(pTlv, &pNode->limit);
203,886✔
1266
        break;
203,839✔
1267
      case LIMIT_CODE_OFFSET:
203,797✔
1268
        code = tlvDecodeI64(pTlv, &pNode->offset);
203,797✔
1269
        break;
203,775✔
1270
      default:
×
1271
        break;
×
1272
    }
1273
  }
1274

1275
  return code;
203,831✔
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,269,862✔
1281
  const SName* pNode = (const SName*)pObj;
1,269,862✔
1282

1283
  int32_t code = tlvEncodeU8(pEncoder, NAME_CODE_TYPE, pNode->type);
1,269,862✔
1284
  if (TSDB_CODE_SUCCESS == code) {
1,269,944!
1285
    code = tlvEncodeI32(pEncoder, NAME_CODE_ACCT_ID, pNode->acctId);
1,269,991✔
1286
  }
1287
  if (TSDB_CODE_SUCCESS == code) {
1,270,235!
1288
    code = tlvEncodeCStr(pEncoder, NAME_CODE_DB_NAME, pNode->dbname);
1,270,375✔
1289
  }
1290
  if (TSDB_CODE_SUCCESS == code) {
1,270,094!
1291
    code = tlvEncodeCStr(pEncoder, NAME_CODE_TABLE_NAME, pNode->tname);
1,270,312✔
1292
  }
1293

1294
  return code;
1,269,556✔
1295
}
1296

1297
static int32_t msgToName(STlvDecoder* pDecoder, void* pObj) {
1,377,467✔
1298
  SName* pNode = (SName*)pObj;
1,377,467✔
1299

1300
  int32_t code = TSDB_CODE_SUCCESS;
1,377,467✔
1301
  STlv*   pTlv = NULL;
1,377,467✔
1302
  tlvForEach(pDecoder, pTlv, code) {
6,888,786!
1303
    switch (pTlv->type) {
5,511,439!
1304
      case NAME_CODE_TYPE:
1,377,938✔
1305
        code = tlvDecodeU8(pTlv, &pNode->type);
1,377,938✔
1306
        break;
1,377,811✔
1307
      case NAME_CODE_ACCT_ID:
1,377,798✔
1308
        code = tlvDecodeI32(pTlv, &pNode->acctId);
1,377,798✔
1309
        break;
1,377,765✔
1310
      case NAME_CODE_DB_NAME:
1,377,914✔
1311
        code = tlvDecodeCStr(pTlv, pNode->dbname, sizeof(pNode->dbname));
1,377,914✔
1312
        break;
1,377,832✔
1313
      case NAME_CODE_TABLE_NAME:
1,377,789✔
1314
        code = tlvDecodeCStr(pTlv, pNode->tname, sizeof(pNode->tname));
1,377,789✔
1315
        break;
1,377,911✔
1316
      default:
×
1317
        break;
×
1318
    }
1319
  }
1320

1321
  return code;
1,378,140✔
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) {
26,323✔
1327
  const STimeWindow* pNode = (const STimeWindow*)pObj;
26,323✔
1328

1329
  int32_t code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_START_KEY, pNode->skey);
26,323✔
1330
  if (TSDB_CODE_SUCCESS == code) {
26,325!
1331
    code = tlvEncodeI64(pEncoder, TIME_WINDOW_CODE_END_KEY, pNode->ekey);
26,326✔
1332
  }
1333

1334
  return code;
26,323✔
1335
}
1336

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

1340
  int32_t code = TSDB_CODE_SUCCESS;
26,720✔
1341
  STlv*   pTlv = NULL;
26,720✔
1342
  tlvForEach(pDecoder, pTlv, code) {
80,158!
1343
    switch (pTlv->type) {
53,438!
1344
      case TIME_WINDOW_CODE_START_KEY:
26,718✔
1345
        code = tlvDecodeI64(pTlv, &pNode->skey);
26,718✔
1346
        break;
26,719✔
1347
      case TIME_WINDOW_CODE_END_KEY:
26,720✔
1348
        code = tlvDecodeI64(pTlv, &pNode->ekey);
26,720✔
1349
        break;
26,719✔
1350
      default:
×
1351
        break;
×
1352
    }
1353
  }
1354

1355
  return code;
26,719✔
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,174✔
1361
  const SNodeListNode* pNode = (const SNodeListNode*)pObj;
45,174✔
1362

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

1368
  return code;
45,158✔
1369
}
1370

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

1374
  int32_t code = TSDB_CODE_SUCCESS;
46,526✔
1375
  STlv*   pTlv = NULL;
46,526✔
1376
  tlvForEach(pDecoder, pTlv, code) {
139,563!
1377
    switch (pTlv->type) {
93,021!
1378
      case NODE_LIST_CODE_DATA_TYPE:
46,526✔
1379
        code = tlvDecodeObjFromTlv(pTlv, msgToDataTypeInline, &pNode->node.resType);
46,526✔
1380
        break;
46,497✔
1381
      case NODE_LIST_CODE_NODE_LIST:
46,495✔
1382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNodeList);
46,495✔
1383
        break;
46,540✔
1384
      default:
×
1385
        break;
×
1386
    }
1387
  }
1388

1389
  return code;
46,529✔
1390
}
1391

1392
enum { TARGET_CODE_INLINE_ATTRS = 1, TARGET_CODE_EXPR };
1393

1394
static int32_t targetNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,498,379✔
1395
  const STargetNode* pNode = (const STargetNode*)pObj;
11,498,379✔
1396

1397
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
11,498,379✔
1398
  if (TSDB_CODE_SUCCESS == code) {
11,424,200!
1399
    code = tlvEncodeValueI16(pEncoder, pNode->slotId);
11,425,983✔
1400
  }
1401

1402
  return code;
11,182,841✔
1403
}
1404

1405
static int32_t targetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
11,256,890✔
1406
  const STargetNode* pNode = (const STargetNode*)pObj;
11,256,890✔
1407

1408
  int32_t code = tlvEncodeObj(pEncoder, TARGET_CODE_INLINE_ATTRS, targetNodeInlineToMsg, pNode);
11,256,890✔
1409
  if (TSDB_CODE_SUCCESS == code) {
11,207,029!
1410
    code = tlvEncodeObj(pEncoder, TARGET_CODE_EXPR, nodeToMsg, pNode->pExpr);
11,209,197✔
1411
  }
1412

1413
  return code;
11,189,841✔
1414
}
1415

1416
static int32_t msgToTargetNodeInline(STlvDecoder* pDecoder, void* pObj) {
13,272,106✔
1417
  STargetNode* pNode = (STargetNode*)pObj;
13,272,106✔
1418

1419
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
13,272,106✔
1420
  if (TSDB_CODE_SUCCESS == code) {
13,339,513!
1421
    code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
13,340,345✔
1422
  }
1423

1424
  return code;
13,331,420✔
1425
}
1426

1427
static int32_t msgToTargetNode(STlvDecoder* pDecoder, void* pObj) {
13,299,388✔
1428
  STargetNode* pNode = (STargetNode*)pObj;
13,299,388✔
1429

1430
  int32_t code = TSDB_CODE_SUCCESS;
13,299,388✔
1431
  STlv*   pTlv = NULL;
13,299,388✔
1432
  tlvForEach(pDecoder, pTlv, code) {
39,917,059!
1433
    switch (pTlv->type) {
26,586,977!
1434
      case TARGET_CODE_INLINE_ATTRS:
13,284,620✔
1435
        code = tlvDecodeObjFromTlv(pTlv, msgToTargetNodeInline, pNode);
13,284,620✔
1436
        break;
13,331,136✔
1437
      case TARGET_CODE_EXPR:
13,302,357✔
1438
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pExpr);
13,302,357✔
1439
        break;
13,286,535✔
1440
      default:
×
1441
        break;
×
1442
    }
1443
  }
1444

1445
  return code;
13,243,963✔
1446
}
1447

1448
enum { DATA_BLOCK_DESC_CODE_INLINE_ATTRS = 1, DATA_BLOCK_DESC_CODE_SLOTS };
1449

1450
static int32_t dataBlockDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,315,072✔
1451
  const SDataBlockDescNode* pNode = (const SDataBlockDescNode*)pObj;
5,315,072✔
1452

1453
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->dataBlockId);
5,315,072✔
1454
  if (TSDB_CODE_SUCCESS == code) {
5,312,652!
1455
    code = tlvEncodeValueI32(pEncoder, pNode->totalRowSize);
5,312,759✔
1456
  }
1457
  if (TSDB_CODE_SUCCESS == code) {
5,311,099!
1458
    code = tlvEncodeValueI32(pEncoder, pNode->outputRowSize);
5,311,356✔
1459
  }
1460
  if (TSDB_CODE_SUCCESS == code) {
5,309,545!
1461
    code = tlvEncodeValueU8(pEncoder, pNode->precision);
5,309,936✔
1462
  }
1463

1464
  return code;
5,310,024✔
1465
}
1466

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

1470
  int32_t code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_INLINE_ATTRS, dataBlockDescNodeInlineToMsg, pNode);
5,316,235✔
1471
  if (TSDB_CODE_SUCCESS == code) {
5,310,663!
1472
    code = tlvEncodeObj(pEncoder, DATA_BLOCK_DESC_CODE_SLOTS, nodeListToMsg, pNode->pSlots);
5,310,773✔
1473
  }
1474

1475
  return code;
5,304,750✔
1476
}
1477

1478
static int32_t msgToDataBlockDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
5,718,868✔
1479
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
5,718,868✔
1480

1481
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->dataBlockId);
5,718,868✔
1482
  if (TSDB_CODE_SUCCESS == code) {
5,723,440!
1483
    code = tlvDecodeValueI32(pDecoder, &pNode->totalRowSize);
5,723,704✔
1484
  }
1485
  if (TSDB_CODE_SUCCESS == code) {
5,719,266!
1486
    code = tlvDecodeValueI32(pDecoder, &pNode->outputRowSize);
5,719,601✔
1487
  }
1488
  if (TSDB_CODE_SUCCESS == code) {
5,716,324!
1489
    code = tlvDecodeValueU8(pDecoder, &pNode->precision);
5,716,761✔
1490
  }
1491

1492
  return code;
5,715,307✔
1493
}
1494

1495
static int32_t msgToDataBlockDescNode(STlvDecoder* pDecoder, void* pObj) {
5,720,153✔
1496
  SDataBlockDescNode* pNode = (SDataBlockDescNode*)pObj;
5,720,153✔
1497

1498
  int32_t code = TSDB_CODE_SUCCESS;
5,720,153✔
1499
  STlv*   pTlv = NULL;
5,720,153✔
1500
  tlvForEach(pDecoder, pTlv, code) {
17,156,747!
1501
    switch (pTlv->type) {
11,435,699!
1502
      case DATA_BLOCK_DESC_CODE_INLINE_ATTRS:
5,720,048✔
1503
        code = tlvDecodeObjFromTlv(pTlv, msgToDataBlockDescNodeInline, pNode);
5,720,048✔
1504
        break;
5,715,360✔
1505
      case DATA_BLOCK_DESC_CODE_SLOTS:
5,715,651✔
1506
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSlots);
5,715,651✔
1507
        break;
5,721,234✔
1508
      default:
×
1509
        break;
×
1510
    }
1511
  }
1512

1513
  return code;
5,717,515✔
1514
}
1515

1516
enum { SLOT_DESC_CODE_INLINE_ATTRS = 1 };
1517

1518
static int32_t slotDescNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
20,932,010✔
1519
  const SSlotDescNode* pNode = (const SSlotDescNode*)pObj;
20,932,010✔
1520

1521
  int32_t code = tlvEncodeValueI16(pEncoder, pNode->slotId);
20,932,010✔
1522
  if (TSDB_CODE_SUCCESS == code) {
20,863,277!
1523
    code = dataTypeInlineToMsg(&pNode->dataType, pEncoder);
20,865,913✔
1524
  }
1525
  if (TSDB_CODE_SUCCESS == code) {
20,492,947!
1526
    code = tlvEncodeValueBool(pEncoder, pNode->reserve);
20,496,202✔
1527
  }
1528
  if (TSDB_CODE_SUCCESS == code) {
20,404,819!
1529
    code = tlvEncodeValueBool(pEncoder, pNode->output);
20,410,133✔
1530
  }
1531
  if (TSDB_CODE_SUCCESS == code) {
20,307,943!
1532
    code = tlvEncodeValueBool(pEncoder, pNode->tag);
20,316,977✔
1533
  }
1534

1535
  return code;
20,284,708✔
1536
}
1537

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

1542
static int32_t msgToSlotDescNodeInline(STlvDecoder* pDecoder, void* pObj) {
24,020,219✔
1543
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
24,020,219✔
1544

1545
  int32_t code = tlvDecodeValueI16(pDecoder, &pNode->slotId);
24,020,219✔
1546
  if (TSDB_CODE_SUCCESS == code) {
24,182,984!
1547
    code = msgToDataTypeInline(pDecoder, &pNode->dataType);
24,185,314✔
1548
  }
1549
  if (TSDB_CODE_SUCCESS == code) {
23,580,088!
1550
    code = tlvDecodeValueBool(pDecoder, &pNode->reserve);
23,582,539✔
1551
  }
1552
  if (TSDB_CODE_SUCCESS == code) {
23,589,377!
1553
    code = tlvDecodeValueBool(pDecoder, &pNode->output);
23,592,612✔
1554
  }
1555
  if (TSDB_CODE_SUCCESS == code) {
23,589,911!
1556
    code = tlvDecodeValueBool(pDecoder, &pNode->tag);
23,594,399✔
1557
  }
1558

1559
  return code;
23,585,902✔
1560
}
1561

1562
static int32_t msgToSlotDescNode(STlvDecoder* pDecoder, void* pObj) {
24,068,889✔
1563
  SSlotDescNode* pNode = (SSlotDescNode*)pObj;
24,068,889✔
1564

1565
  int32_t code = TSDB_CODE_SUCCESS;
24,068,889✔
1566
  STlv*   pTlv = NULL;
24,068,889✔
1567
  tlvForEach(pDecoder, pTlv, code) {
47,657,573!
1568
    switch (pTlv->type) {
24,045,581!
1569
      case SLOT_DESC_CODE_INLINE_ATTRS:
24,045,581✔
1570
        code = tlvDecodeObjFromTlv(pTlv, msgToSlotDescNodeInline, pNode);
24,045,581✔
1571
        break;
23,588,684✔
1572
      default:
×
1573
        break;
×
1574
    }
1575
  }
1576

1577
  return code;
23,578,729✔
1578
}
1579

1580
enum { EP_CODE_FQDN = 1, EP_CODE_port };
1581

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

1585
  int32_t code = tlvEncodeValueCStr(pEncoder, pNode->fqdn);
2,260,174✔
1586
  if (TSDB_CODE_SUCCESS == code) {
2,260,166!
1587
    code = tlvEncodeValueU16(pEncoder, pNode->port);
2,260,216✔
1588
  }
1589

1590
  return code;
2,260,307✔
1591
}
1592

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

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

1601
  return code;
36,723✔
1602
}
1603

1604
static int32_t msgToEpInline(STlvDecoder* pDecoder, void* pObj) {
2,423,955✔
1605
  SEp* pNode = (SEp*)pObj;
2,423,955✔
1606

1607
  int32_t code = tlvDecodeValueCStr(pDecoder, pNode->fqdn);
2,423,955✔
1608
  if (TSDB_CODE_SUCCESS == code) {
2,425,497!
1609
    code = tlvDecodeValueU16(pDecoder, &pNode->port);
2,425,537✔
1610
  }
1611

1612
  return code;
2,426,024✔
1613
}
1614

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

1618
  int32_t code = TSDB_CODE_SUCCESS;
36,892✔
1619
  STlv*   pTlv = NULL;
36,892✔
1620
  tlvForEach(pDecoder, pTlv, code) {
110,695!
1621
    switch (pTlv->type) {
73,792!
1622
      case EP_CODE_FQDN:
36,896✔
1623
        code = tlvDecodeCStr(pTlv, pNode->fqdn, sizeof(pNode->fqdn));
36,896✔
1624
        break;
36,895✔
1625
      case EP_CODE_port:
36,896✔
1626
        code = tlvDecodeU16(pTlv, &pNode->port);
36,896✔
1627
        break;
36,908✔
1628
      default:
×
1629
        break;
×
1630
    }
1631
  }
1632

1633
  return code;
36,898✔
1634
}
1635

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

1638
static int32_t epSetInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,697,376✔
1639
  const SEpSet* pNode = (const SEpSet*)pObj;
2,697,376✔
1640

1641
  int32_t code = tlvEncodeValueI8(pEncoder, pNode->inUse);
2,697,376✔
1642
  if (TSDB_CODE_SUCCESS == code) {
2,697,473!
1643
    code = tlvEncodeValueArray(pEncoder, epInlineToMsg, pNode->eps, sizeof(SEp), pNode->numOfEps);
2,697,545✔
1644
  }
1645

1646
  return code;
2,697,523✔
1647
}
1648

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

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

1660
  return code;
35,591✔
1661
}
1662

1663
static int32_t msgToEpSetInline(STlvDecoder* pDecoder, void* pObj) {
2,882,343✔
1664
  SEpSet* pNode = (SEpSet*)pObj;
2,882,343✔
1665

1666
  int32_t code = tlvDecodeValueI8(pDecoder, &pNode->inUse);
2,882,343✔
1667
  if (TSDB_CODE_SUCCESS == code) {
2,882,798✔
1668
    int32_t numOfEps = 0;
2,882,737✔
1669
    code = tlvDecodeValueArray(pDecoder, msgToEpInline, pNode->eps, sizeof(SEp), &numOfEps);
2,882,737✔
1670
    pNode->numOfEps = numOfEps;
2,884,196✔
1671
  }
1672

1673
  return code;
2,884,257✔
1674
}
1675

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

1679
  int32_t code = TSDB_CODE_SUCCESS;
35,761✔
1680
  STlv*   pTlv = NULL;
35,761✔
1681
  tlvForEach(pDecoder, pTlv, code) {
143,066!
1682
    switch (pTlv->type) {
107,298!
1683
      case EP_SET_CODE_IN_USE:
35,765✔
1684
        code = tlvDecodeI8(pTlv, &pNode->inUse);
35,765✔
1685
        break;
35,768✔
1686
      case EP_SET_CODE_NUM_OF_EPS:
35,767✔
1687
        code = tlvDecodeI8(pTlv, &pNode->numOfEps);
35,767✔
1688
        break;
35,765✔
1689
      case EP_SET_CODE_EPS:
35,766✔
1690
        code = tlvDecodeObjArrayFromTlv(pTlv, msgToEp, pNode->eps, sizeof(SEp));
35,766✔
1691
        break;
35,772✔
1692
      default:
×
1693
        break;
×
1694
    }
1695
  }
1696

1697
  return code;
35,767✔
1698
}
1699

1700
enum { QUERY_NODE_ADDR_CODE_NODE_ID = 1, QUERY_NODE_ADDR_CODE_EP_SET };
1701

1702
static int32_t queryNodeAddrInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,696,807✔
1703
  const SQueryNodeAddr* pNode = (const SQueryNodeAddr*)pObj;
2,696,807✔
1704

1705
  int32_t code = tlvEncodeValueI32(pEncoder, pNode->nodeId);
2,696,807✔
1706
  if (TSDB_CODE_SUCCESS == code) {
2,697,470!
1707
    code = epSetInlineToMsg(&pNode->epSet, pEncoder);
2,697,522✔
1708
  }
1709

1710
  return code;
2,697,557✔
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) {
2,882,264✔
1725
  SQueryNodeAddr* pNode = (SQueryNodeAddr*)pObj;
2,882,264✔
1726

1727
  int32_t code = tlvDecodeValueI32(pDecoder, &pNode->nodeId);
2,882,264✔
1728
  if (TSDB_CODE_SUCCESS == code) {
2,882,808!
1729
    code = msgToEpSetInline(pDecoder, &pNode->epSet);
2,882,897✔
1730
  }
1731

1732
  return code;
2,884,224✔
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) {
974,909✔
1757
  const SDownstreamSourceNode* pNode = (const SDownstreamSourceNode*)pObj;
974,909✔
1758

1759
  int32_t code = queryNodeAddrInlineToMsg(&pNode->addr, pEncoder);
974,909✔
1760
  if (TSDB_CODE_SUCCESS == code) {
974,896!
1761
    code = tlvEncodeValueU64(pEncoder, pNode->taskId);
974,896✔
1762
  }
1763
  if (TSDB_CODE_SUCCESS == code) {
974,888!
1764
    code = tlvEncodeValueU64(pEncoder, pNode->schedId);
974,891✔
1765
  }
1766
  if (TSDB_CODE_SUCCESS == code) {
974,867!
1767
    code = tlvEncodeValueI32(pEncoder, pNode->execId);
974,871✔
1768
  }
1769
  if (TSDB_CODE_SUCCESS == code) {
974,873!
1770
    code = tlvEncodeValueI32(pEncoder, pNode->fetchMsgType);
974,878✔
1771
  }
1772
  if (TSDB_CODE_SUCCESS == code) {
974,873!
1773
    code = tlvEncodeValueU64(pEncoder, pNode->clientId);
974,880✔
1774
  }
1775

1776
  return code;
974,879✔
1777
}
1778

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

1783
static int32_t msgToDownstreamSourceNodeInlineToMsg(STlvDecoder* pDecoder, void* pObj) {
1,031,776✔
1784
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
1,031,776✔
1785

1786
  int32_t code = msgToQueryNodeAddrInline(pDecoder, &pNode->addr);
1,031,776✔
1787
  if (TSDB_CODE_SUCCESS == code) {
1,031,953!
1788
    code = tlvDecodeValueU64(pDecoder, &pNode->taskId);
1,031,953✔
1789
  }
1790
  if (TSDB_CODE_SUCCESS == code) {
1,031,941✔
1791
    code = tlvDecodeValueU64(pDecoder, &pNode->schedId);
1,031,928✔
1792
  }
1793
  if (TSDB_CODE_SUCCESS == code) {
1,031,887✔
1794
    code = tlvDecodeValueI32(pDecoder, &pNode->execId);
1,031,880✔
1795
  }
1796
  if (TSDB_CODE_SUCCESS == code) {
1,031,844✔
1797
    code = tlvDecodeValueI32(pDecoder, &pNode->fetchMsgType);
1,031,841✔
1798
  }
1799
  if (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
1,031,784!
1800
    code = tlvDecodeValueU64(pDecoder, &pNode->clientId);
1,031,798✔
1801
  }
1802

1803
  return code;
1,031,804✔
1804
}
1805

1806
static int32_t msgToDownstreamSourceNode(STlvDecoder* pDecoder, void* pObj) {
1,031,783✔
1807
  SDownstreamSourceNode* pNode = (SDownstreamSourceNode*)pObj;
1,031,783✔
1808

1809
  int32_t code = TSDB_CODE_SUCCESS;
1,031,783✔
1810
  STlv*   pTlv = NULL;
1,031,783✔
1811
  tlvForEach(pDecoder, pTlv, code) {
2,063,585!
1812
    switch (pTlv->type) {
1,031,797!
1813
      case DOWNSTREAM_SOURCE_CODE_INLINE_ATTRS:
1,031,797✔
1814
        code = tlvDecodeObjFromTlv(pTlv, msgToDownstreamSourceNodeInlineToMsg, pNode);
1,031,797✔
1815
        break;
1,031,802✔
1816
      default:
×
1817
        break;
×
1818
    }
1819
  }
1820

1821
  return code;
1,031,774✔
1822
}
1823

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

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

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

1837
  return code;
7,556✔
1838
}
1839

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

1843
  int32_t code = TSDB_CODE_SUCCESS;
8,281✔
1844
  STlv*   pTlv = NULL;
8,281✔
1845
  tlvForEach(pDecoder, pTlv, code) {
33,124!
1846
    switch (pTlv->type) {
24,843!
1847
      case WHEN_THEN_CODE_EXPR_BASE:
8,281✔
1848
        code = tlvDecodeObjFromTlv(pTlv, msgToExprNode, &pNode->node);
8,281✔
1849
        break;
8,281✔
1850
      case WHEN_THEN_CODE_WHEN:
8,281✔
1851
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWhen);
8,281✔
1852
        break;
8,281✔
1853
      case WHEN_THEN_CODE_THEN:
8,281✔
1854
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pThen);
8,281✔
1855
        break;
8,281✔
1856
      default:
×
1857
        break;
×
1858
    }
1859
  }
1860

1861
  return code;
8,280✔
1862
}
1863

1864
enum { CASE_WHEN_CODE_EXPR_BASE = 1, CASE_WHEN_CODE_CASE, CASE_WHEN_CODE_ELSE, CASE_WHEN_CODE_WHEN_THEN_LIST };
1865

1866
static int32_t caseWhenNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,284✔
1867
  const SCaseWhenNode* pNode = (const SCaseWhenNode*)pObj;
5,284✔
1868

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

1880
  return code;
5,283✔
1881
}
1882

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

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

1907
  return code;
5,696✔
1908
}
1909

1910
enum { WINDOW_OFFSET_CODE_START_OFFSET = 1, WINDOW_OFFSET_CODE_END_OFFSET };
1911

1912
static int32_t windowOffsetNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
828✔
1913
  const SWindowOffsetNode* pNode = (const SWindowOffsetNode*)pObj;
828✔
1914

1915
  int32_t code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_START_OFFSET, nodeToMsg, pNode->pStartOffset);
828✔
1916
  if (TSDB_CODE_SUCCESS == code) {
828!
1917
    code = tlvEncodeObj(pEncoder, WINDOW_OFFSET_CODE_END_OFFSET, nodeToMsg, pNode->pEndOffset);
828✔
1918
  }
1919

1920
  return code;
828✔
1921
}
1922

1923
static int32_t msgToWindowOffsetNode(STlvDecoder* pDecoder, void* pObj) {
668✔
1924
  SWindowOffsetNode* pNode = (SWindowOffsetNode*)pObj;
668✔
1925

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

1941
  return code;
668✔
1942
}
1943

1944

1945
enum {
1946
  PHY_NODE_CODE_OUTPUT_DESC = 1,
1947
  PHY_NODE_CODE_CONDITIONS,
1948
  PHY_NODE_CODE_CHILDREN,
1949
  PHY_NODE_CODE_LIMIT,
1950
  PHY_NODE_CODE_SLIMIT,
1951
  PHY_NODE_CODE_INPUT_TS_ORDER,
1952
  PHY_NODE_CODE_OUTPUT_TS_ORDER,
1953
  PHY_NODE_CODE_DYNAMIC_OP,
1954
  PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR
1955
};
1956

1957
static int32_t physiNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,599,032✔
1958
  const SPhysiNode* pNode = (const SPhysiNode*)pObj;
3,599,032✔
1959

1960
  int32_t code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_OUTPUT_DESC, nodeToMsg, pNode->pOutputDataBlockDesc);
3,599,032✔
1961
  if (TSDB_CODE_SUCCESS == code) {
3,595,090!
1962
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CONDITIONS, nodeToMsg, pNode->pConditions);
3,595,156✔
1963
  }
1964
  if (TSDB_CODE_SUCCESS == code) {
3,595,890!
1965
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_CHILDREN, nodeListToMsg, pNode->pChildren);
3,595,994✔
1966
  }
1967
  if (TSDB_CODE_SUCCESS == code) {
3,596,744!
1968
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_LIMIT, nodeToMsg, pNode->pLimit);
3,596,913✔
1969
  }
1970
  if (TSDB_CODE_SUCCESS == code) {
3,597,844!
1971
    code = tlvEncodeObj(pEncoder, PHY_NODE_CODE_SLIMIT, nodeToMsg, pNode->pSlimit);
3,598,288✔
1972
  }
1973
  if (TSDB_CODE_SUCCESS == code) {
3,597,535!
1974
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_INPUT_TS_ORDER, pNode->inputTsOrder);
3,598,184✔
1975
  }
1976
  if (TSDB_CODE_SUCCESS == code) {
3,597,779!
1977
    code = tlvEncodeEnum(pEncoder, PHY_NODE_CODE_OUTPUT_TS_ORDER, pNode->outputTsOrder);
3,598,552✔
1978
  }
1979
  if (TSDB_CODE_SUCCESS == code) {
3,596,683!
1980
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_DYNAMIC_OP, pNode->dynamicOp);
3,597,529✔
1981
  }
1982
  if (TSDB_CODE_SUCCESS == code) { 
3,596,775!
1983
    code = tlvEncodeBool(pEncoder, PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR, pNode->forceCreateNonBlockingOptr);
3,597,595✔
1984
  }
1985

1986
  return code;
3,596,389✔
1987
}
1988

1989
static int32_t msgToPhysiNode(STlvDecoder* pDecoder, void* pObj) {
3,867,859✔
1990
  SPhysiNode* pNode = (SPhysiNode*)pObj;
3,867,859✔
1991

1992
  int32_t code = TSDB_CODE_SUCCESS;
3,867,859✔
1993
  STlv*   pTlv = NULL;
3,867,859✔
1994
  tlvForEach(pDecoder, pTlv, code) {
25,603,294!
1995
    switch (pTlv->type) {
21,735,996!
1996
      case PHY_NODE_CODE_OUTPUT_DESC:
3,868,399✔
1997
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pOutputDataBlockDesc);
3,868,399✔
1998
        break;
3,868,838✔
1999
      case PHY_NODE_CODE_CONDITIONS:
406,894✔
2000
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pConditions);
406,894✔
2001
        break;
406,699✔
2002
      case PHY_NODE_CODE_CHILDREN:
1,784,357✔
2003
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pChildren);
1,784,357✔
2004
        break;
1,784,825✔
2005
      case PHY_NODE_CODE_LIMIT:
192,891✔
2006
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pLimit);
192,891✔
2007
        break;
192,779✔
2008
      case PHY_NODE_CODE_SLIMIT:
10,806✔
2009
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSlimit);
10,806✔
2010
        break;
10,804✔
2011
      case PHY_NODE_CODE_INPUT_TS_ORDER:
3,869,026✔
2012
        code = tlvDecodeEnum(pTlv, &pNode->inputTsOrder, sizeof(pNode->inputTsOrder));
3,869,026✔
2013
        break;
3,868,490✔
2014
      case PHY_NODE_CODE_OUTPUT_TS_ORDER:
3,868,457✔
2015
        code = tlvDecodeEnum(pTlv, &pNode->outputTsOrder, sizeof(pNode->outputTsOrder));
3,868,457✔
2016
        break;
3,868,166✔
2017
      case PHY_NODE_CODE_DYNAMIC_OP:
3,868,033✔
2018
        code = tlvDecodeBool(pTlv, &pNode->dynamicOp);
3,868,033✔
2019
        break;
3,867,425✔
2020
      case PHY_NODE_CODE_FORCE_NONBLOCKING_OPTR:
3,867,133✔
2021
        code = tlvDecodeBool(pTlv, &pNode->forceCreateNonBlockingOptr);
3,867,133✔
2022
        break;
3,867,409✔
2023
      default:
×
2024
        break;
×
2025
    }
2026
  }
2027

2028
  return code;
3,862,792✔
2029
}
2030

2031
enum {
2032
  PHY_SCAN_CODE_BASE_NODE = 1,
2033
  PHY_SCAN_CODE_SCAN_COLS,
2034
  PHY_SCAN_CODE_SCAN_PSEUDO_COLS,
2035
  PHY_SCAN_CODE_BASE_UID,
2036
  PHY_SCAN_CODE_BASE_SUID,
2037
  PHY_SCAN_CODE_BASE_TABLE_TYPE,
2038
  PHY_SCAN_CODE_BASE_TABLE_NAME,
2039
  PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN
2040
};
2041

2042
static int32_t physiScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,269,616✔
2043
  const SScanPhysiNode* pNode = (const SScanPhysiNode*)pObj;
1,269,616✔
2044

2045
  int32_t code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
1,269,616✔
2046
  if (TSDB_CODE_SUCCESS == code) {
1,269,939!
2047
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_COLS, nodeListToMsg, pNode->pScanCols);
1,269,997✔
2048
  }
2049
  if (TSDB_CODE_SUCCESS == code) {
1,268,668!
2050
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_SCAN_PSEUDO_COLS, nodeListToMsg, pNode->pScanPseudoCols);
1,268,774✔
2051
  }
2052
  if (TSDB_CODE_SUCCESS == code) {
1,268,464!
2053
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_UID, pNode->uid);
1,268,626✔
2054
  }
2055
  if (TSDB_CODE_SUCCESS == code) {
1,269,753!
2056
    code = tlvEncodeU64(pEncoder, PHY_SCAN_CODE_BASE_SUID, pNode->suid);
1,269,900✔
2057
  }
2058
  if (TSDB_CODE_SUCCESS == code) {
1,269,485!
2059
    code = tlvEncodeI8(pEncoder, PHY_SCAN_CODE_BASE_TABLE_TYPE, pNode->tableType);
1,269,896✔
2060
  }
2061
  if (TSDB_CODE_SUCCESS == code) {
1,269,683!
2062
    code = tlvEncodeObj(pEncoder, PHY_SCAN_CODE_BASE_TABLE_NAME, nameToMsg, &pNode->tableName);
1,270,127✔
2063
  }
2064
  if (TSDB_CODE_SUCCESS == code) {
1,269,261!
2065
    code = tlvEncodeBool(pEncoder, PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN, pNode->groupOrderScan);
1,269,903✔
2066
  }
2067

2068
  return code;
1,269,893✔
2069
}
2070

2071
static int32_t msgToPhysiScanNode(STlvDecoder* pDecoder, void* pObj) {
1,378,224✔
2072
  SScanPhysiNode* pNode = (SScanPhysiNode*)pObj;
1,378,224✔
2073

2074
  int32_t code = TSDB_CODE_SUCCESS;
1,378,224✔
2075
  STlv*   pTlv = NULL;
1,378,224✔
2076
  tlvForEach(pDecoder, pTlv, code) {
11,514,796!
2077
    switch (pTlv->type) {
10,136,122!
2078
      case PHY_SCAN_CODE_BASE_NODE:
1,378,234✔
2079
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
1,378,234✔
2080
        break;
1,377,767✔
2081
      case PHY_SCAN_CODE_SCAN_COLS:
1,335,079✔
2082
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanCols);
1,335,079✔
2083
        break;
1,336,421✔
2084
      case PHY_SCAN_CODE_SCAN_PSEUDO_COLS:
531,895✔
2085
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pScanPseudoCols);
531,895✔
2086
        break;
532,152✔
2087
      case PHY_SCAN_CODE_BASE_UID:
1,379,128✔
2088
        code = tlvDecodeU64(pTlv, &pNode->uid);
1,379,128✔
2089
        break;
1,378,566✔
2090
      case PHY_SCAN_CODE_BASE_SUID:
1,378,277✔
2091
        code = tlvDecodeU64(pTlv, &pNode->suid);
1,378,277✔
2092
        break;
1,378,003✔
2093
      case PHY_SCAN_CODE_BASE_TABLE_TYPE:
1,378,020✔
2094
        code = tlvDecodeI8(pTlv, &pNode->tableType);
1,378,020✔
2095
        break;
1,377,869✔
2096
      case PHY_SCAN_CODE_BASE_TABLE_NAME:
1,377,678✔
2097
        code = tlvDecodeObjFromTlv(pTlv, msgToName, &pNode->tableName);
1,377,678✔
2098
        break;
1,377,850✔
2099
      case PHY_SCAN_CODE_BASE_GROUP_ORDER_SCAN:
1,377,811✔
2100
        code = tlvDecodeBool(pTlv, &pNode->groupOrderScan);
1,377,811✔
2101
        break;
1,377,944✔
2102
      default:
×
2103
        break;
×
2104
    }
2105
  }
2106

2107
  return code;
1,374,762✔
2108
}
2109

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

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

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

2120
  if (TSDB_CODE_SUCCESS == code) {
43,192!
2121
    code = tlvEncodeBool(pEncoder, PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX, pNode->onlyMetaCtbIdx);
43,205✔
2122
  }
2123
  return code;
43,158✔
2124
}
2125

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

2129
  int32_t code = TSDB_CODE_SUCCESS;
43,499✔
2130
  STlv*   pTlv = NULL;
43,499✔
2131
  tlvForEach(pDecoder, pTlv, code) {
130,314!
2132
    switch (pTlv->type) {
86,899!
2133
      case PHY_TAG_SCAN_CODE_SCAN:
43,487✔
2134
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
43,487✔
2135
        break;
43,402✔
2136
      case PHY_TAG_SCAN_CODE_ONLY_META_CTB_IDX:
43,412✔
2137
        code = tlvDecodeBool(pTlv, &pNode->onlyMetaCtbIdx);
43,412✔
2138
        break;
43,413✔
2139
      default:
×
2140
        break;
×
2141
    }
2142
  }
2143

2144
  return code;
43,355✔
2145
}
2146

2147
enum {
2148
  PHY_LAST_ROW_SCAN_CODE_SCAN = 1,
2149
  PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS,
2150
  PHY_LAST_ROW_SCAN_CODE_GROUP_SORT,
2151
  PHY_LAST_ROW_SCAN_CODE_IGNULL,
2152
  PHY_LAST_ROW_SCAN_CODE_TARGETS,
2153
  PHY_LAST_ROW_SCAN_CODE_FUNCTYPES
2154
};
2155

2156
static int32_t physiLastRowScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,722✔
2157
  const SLastRowScanPhysiNode* pNode = (const SLastRowScanPhysiNode*)pObj;
9,722✔
2158

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

2176
  return code;
9,701✔
2177
}
2178

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

2182
  int32_t code = TSDB_CODE_SUCCESS;
11,750✔
2183
  STlv*   pTlv = NULL;
11,750✔
2184
  tlvForEach(pDecoder, pTlv, code) {
60,199!
2185
    switch (pTlv->type) {
48,450!
2186
      case PHY_LAST_ROW_SCAN_CODE_SCAN:
11,755✔
2187
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
11,755✔
2188
        break;
11,750✔
2189
      case PHY_LAST_ROW_SCAN_CODE_GROUP_TAGS:
1,345✔
2190
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
1,345✔
2191
        break;
1,345✔
2192
      case PHY_LAST_ROW_SCAN_CODE_GROUP_SORT:
11,755✔
2193
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
11,755✔
2194
        break;
11,757✔
2195
      case PHY_LAST_ROW_SCAN_CODE_IGNULL:
11,757✔
2196
        code = tlvDecodeBool(pTlv, &pNode->ignoreNull);
11,757✔
2197
        break;
11,758✔
2198
      case PHY_LAST_ROW_SCAN_CODE_TARGETS:
11,679✔
2199
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
11,679✔
2200
        break;
11,680✔
2201
      case PHY_LAST_ROW_SCAN_CODE_FUNCTYPES:
159✔
2202
        code = msgToSArray(pTlv, (void**)&pNode->pFuncTypes);
159✔
2203
        break;
159✔
2204

2205
      default:
×
2206
        break;
×
2207
    }
2208
  }
2209

2210
  return code;
11,748✔
2211
}
2212

2213
enum {
2214
  PHY_TABLE_SCAN_CODE_SCAN = 1,
2215
  PHY_TABLE_SCAN_CODE_INLINE_ATTRS,
2216
  PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS,
2217
  PHY_TABLE_SCAN_CODE_GROUP_TAGS,
2218
  PHY_TABLE_SCAN_CODE_TAGS,
2219
  PHY_TABLE_SCAN_CODE_SUBTABLE
2220
};
2221

2222
static int32_t physiTableScanNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,181,735✔
2223
  const STableScanPhysiNode* pNode = (const STableScanPhysiNode*)pObj;
1,181,735✔
2224

2225
  int32_t code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[0]);
1,181,735✔
2226
  if (TSDB_CODE_SUCCESS == code) {
1,181,582!
2227
    code = tlvEncodeValueU8(pEncoder, pNode->scanSeq[1]);
1,181,650✔
2228
  }
2229
  if (TSDB_CODE_SUCCESS == code) {
1,180,929!
2230
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.skey);
1,181,048✔
2231
  }
2232
  if (TSDB_CODE_SUCCESS == code) {
1,180,710!
2233
    code = tlvEncodeValueI64(pEncoder, pNode->scanRange.ekey);
1,180,877✔
2234
  }
2235
  if (TSDB_CODE_SUCCESS == code) {
1,180,469!
2236
    code = tlvEncodeValueDouble(pEncoder, pNode->ratio);
1,180,719✔
2237
  }
2238
  if (TSDB_CODE_SUCCESS == code) {
1,180,691!
2239
    code = tlvEncodeValueI32(pEncoder, pNode->dataRequired);
1,181,013✔
2240
  }
2241
  if (TSDB_CODE_SUCCESS == code) {
1,180,641!
2242
    code = tlvEncodeValueBool(pEncoder, pNode->groupSort);
1,180,827✔
2243
  }
2244
  if (TSDB_CODE_SUCCESS == code) {
1,180,564!
2245
    code = tlvEncodeValueI64(pEncoder, pNode->interval);
1,180,779✔
2246
  }
2247
  if (TSDB_CODE_SUCCESS == code) {
1,180,518!
2248
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
1,180,743✔
2249
  }
2250
  if (TSDB_CODE_SUCCESS == code) {
1,180,672!
2251
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
1,180,949✔
2252
  }
2253
  if (TSDB_CODE_SUCCESS == code) {
1,180,586!
2254
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
1,180,968✔
2255
  }
2256
  if (TSDB_CODE_SUCCESS == code) {
1,180,638!
2257
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
1,181,038✔
2258
  }
2259
  if (TSDB_CODE_SUCCESS == code) {
1,180,230!
2260
    code = tlvEncodeValueI8(pEncoder, pNode->triggerType);
1,180,809✔
2261
  }
2262
  if (TSDB_CODE_SUCCESS == code) {
1,180,176!
2263
    code = tlvEncodeValueI64(pEncoder, pNode->watermark);
1,180,894✔
2264
  }
2265
  if (TSDB_CODE_SUCCESS == code) {
1,180,601!
2266
    code = tlvEncodeValueI8(pEncoder, pNode->igExpired);
1,181,188✔
2267
  }
2268
  if (TSDB_CODE_SUCCESS == code) {
1,180,583!
2269
    code = tlvEncodeValueBool(pEncoder, pNode->assignBlockUid);
1,181,221✔
2270
  }
2271
  if (TSDB_CODE_SUCCESS == code) {
1,180,631!
2272
    code = tlvEncodeValueI8(pEncoder, pNode->igCheckUpdate);
1,181,331✔
2273
  }
2274
  if (TSDB_CODE_SUCCESS == code) {
1,180,151!
2275
    code = tlvEncodeValueBool(pEncoder, pNode->filesetDelimited);
1,180,949✔
2276
  }
2277
  if (TSDB_CODE_SUCCESS == code) {
1,180,067!
2278
    code = tlvEncodeValueBool(pEncoder, pNode->needCountEmptyTable);
1,180,961✔
2279
  }
2280
  if (TSDB_CODE_SUCCESS == code) {
1,179,672!
2281
    code = tlvEncodeValueBool(pEncoder, pNode->paraTablesSort);
1,180,802✔
2282
  }
2283
  if (TSDB_CODE_SUCCESS == code) {
1,179,388!
2284
    code = tlvEncodeValueBool(pEncoder, pNode->smallDataTsSort);
1,180,699✔
2285
  }
2286
  return code;
1,180,757✔
2287
}
2288

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

2292
  int32_t code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SCAN, physiScanNodeToMsg, &pNode->scan);
1,182,642✔
2293
  if (TSDB_CODE_SUCCESS == code) {
1,181,869!
2294
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_INLINE_ATTRS, physiTableScanNodeInlineToMsg, pNode);
1,181,909✔
2295
  }
2296
  if (TSDB_CODE_SUCCESS == code) {
1,181,364!
2297
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS, nodeListToMsg, pNode->pDynamicScanFuncs);
1,181,415✔
2298
  }
2299
  if (TSDB_CODE_SUCCESS == code) {
1,181,505!
2300
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_GROUP_TAGS, nodeListToMsg, pNode->pGroupTags);
1,181,598✔
2301
  }
2302
  if (TSDB_CODE_SUCCESS == code) {
1,181,519!
2303
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_TAGS, nodeListToMsg, pNode->pTags);
1,181,638✔
2304
  }
2305
  if (TSDB_CODE_SUCCESS == code) {
1,181,363!
2306
    code = tlvEncodeObj(pEncoder, PHY_TABLE_SCAN_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
1,181,652✔
2307
  }
2308

2309
  return code;
1,181,517✔
2310
}
2311

2312
static int32_t msgToPhysiTableScanNodeInline(STlvDecoder* pDecoder, void* pObj) {
1,286,622✔
2313
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,286,622✔
2314

2315
  int32_t code = tlvDecodeValueU8(pDecoder, pNode->scanSeq);
1,286,622✔
2316
  if (TSDB_CODE_SUCCESS == code) {
1,287,142!
2317
    code = tlvDecodeValueU8(pDecoder, pNode->scanSeq + 1);
1,287,255✔
2318
  }
2319
  if (TSDB_CODE_SUCCESS == code) {
1,286,778!
2320
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.skey);
1,286,967✔
2321
  }
2322
  if (TSDB_CODE_SUCCESS == code) {
1,286,647!
2323
    code = tlvDecodeValueI64(pDecoder, &pNode->scanRange.ekey);
1,286,998✔
2324
  }
2325
  if (TSDB_CODE_SUCCESS == code) {
1,286,641✔
2326
    code = tlvDecodeValueDouble(pDecoder, &pNode->ratio);
1,286,459✔
2327
  }
2328
  if (TSDB_CODE_SUCCESS == code) {
1,287,222✔
2329
    code = tlvDecodeValueI32(pDecoder, &pNode->dataRequired);
1,287,164✔
2330
  }
2331
  if (TSDB_CODE_SUCCESS == code) {
1,287,206✔
2332
    code = tlvDecodeValueBool(pDecoder, &pNode->groupSort);
1,287,161✔
2333
  }
2334
  if (TSDB_CODE_SUCCESS == code) {
1,287,629✔
2335
    code = tlvDecodeValueI64(pDecoder, &pNode->interval);
1,287,587✔
2336
  }
2337
  if (TSDB_CODE_SUCCESS == code) {
1,287,553✔
2338
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
1,287,077✔
2339
  }
2340
  if (TSDB_CODE_SUCCESS == code) {
1,287,534✔
2341
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
1,287,093✔
2342
  }
2343
  if (TSDB_CODE_SUCCESS == code) {
1,287,335✔
2344
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
1,286,946✔
2345
  }
2346
  if (TSDB_CODE_SUCCESS == code) {
1,287,775✔
2347
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
1,287,411✔
2348
  }
2349
  if (TSDB_CODE_SUCCESS == code) {
1,287,751✔
2350
    code = tlvDecodeValueI8(pDecoder, &pNode->triggerType);
1,287,060✔
2351
  }
2352
  if (TSDB_CODE_SUCCESS == code) {
1,288,194✔
2353
    code = tlvDecodeValueI64(pDecoder, &pNode->watermark);
1,287,554✔
2354
  }
2355
  if (TSDB_CODE_SUCCESS == code) {
1,288,089✔
2356
    code = tlvDecodeValueI8(pDecoder, &pNode->igExpired);
1,287,482✔
2357
  }
2358
  if (TSDB_CODE_SUCCESS == code) {
1,288,233✔
2359
    code = tlvDecodeValueBool(pDecoder, &pNode->assignBlockUid);
1,287,640✔
2360
  }
2361
  if (TSDB_CODE_SUCCESS == code) {
1,288,556✔
2362
    code = tlvDecodeValueI8(pDecoder, &pNode->igCheckUpdate);
1,287,688✔
2363
  }
2364
  if (TSDB_CODE_SUCCESS == code) {
1,288,746✔
2365
    code = tlvDecodeValueBool(pDecoder, &pNode->filesetDelimited);
1,287,927✔
2366
  }
2367
  if (TSDB_CODE_SUCCESS == code) {
1,288,945✔
2368
    code = tlvDecodeValueBool(pDecoder, &pNode->needCountEmptyTable);
1,288,135✔
2369
  }
2370
  if (TSDB_CODE_SUCCESS == code) {
1,288,731✔
2371
    code = tlvDecodeValueBool(pDecoder, &pNode->paraTablesSort);
1,287,930✔
2372
  }
2373
  if (TSDB_CODE_SUCCESS == code) {
1,288,709✔
2374
    code = tlvDecodeValueBool(pDecoder, &pNode->smallDataTsSort);
1,287,597✔
2375
  }
2376
  return code;
1,287,841✔
2377
}
2378

2379
static int32_t msgToPhysiTableScanNode(STlvDecoder* pDecoder, void* pObj) {
1,287,902✔
2380
  STableScanPhysiNode* pNode = (STableScanPhysiNode*)pObj;
1,287,902✔
2381

2382
  int32_t code = TSDB_CODE_SUCCESS;
1,287,902✔
2383
  STlv*   pTlv = NULL;
1,287,902✔
2384
  tlvForEach(pDecoder, pTlv, code) {
4,161,725!
2385
    switch (pTlv->type) {
2,874,559!
2386
      case PHY_TABLE_SCAN_CODE_SCAN:
1,288,187✔
2387
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
1,288,187✔
2388
        break;
1,286,569✔
2389
      case PHY_TABLE_SCAN_CODE_INLINE_ATTRS:
1,287,184✔
2390
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiTableScanNodeInline, pNode);
1,287,184✔
2391
        break;
1,287,802✔
2392
      case PHY_TABLE_SCAN_CODE_DYN_SCAN_FUNCS:
×
2393
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pDynamicScanFuncs);
×
2394
        break;
×
2395
      case PHY_TABLE_SCAN_CODE_GROUP_TAGS:
299,188✔
2396
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupTags);
299,188✔
2397
        break;
299,452✔
2398
      case PHY_TABLE_SCAN_CODE_TAGS:
×
2399
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTags);
×
2400
        break;
×
2401
      case PHY_TABLE_SCAN_CODE_SUBTABLE:
×
2402
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pSubtable);
×
2403
        break;
×
2404
      default:
×
2405
        break;
×
2406
    }
2407
  }
2408

2409
  return code;
1,287,364✔
2410
}
2411

2412
enum {
2413
  PHY_SYSTABLE_SCAN_CODE_SCAN = 1,
2414
  PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET,
2415
  PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE,
2416
  PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID,
2417
  PHY_SYSTABLE_SCAN_CODE_SYS_INFO
2418
};
2419

2420
static int32_t physiSysTableScanNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
35,442✔
2421
  const SSystemTableScanPhysiNode* pNode = (const SSystemTableScanPhysiNode*)pObj;
35,442✔
2422

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

2437
  return code;
35,441✔
2438
}
2439

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

2443
  int32_t code = TSDB_CODE_SUCCESS;
35,597✔
2444
  STlv*   pTlv = NULL;
35,597✔
2445
  tlvForEach(pDecoder, pTlv, code) {
213,597!
2446
    switch (pTlv->type) {
178,001!
2447
      case PHY_SYSTABLE_SCAN_CODE_SCAN:
35,601✔
2448
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiScanNode, &pNode->scan);
35,601✔
2449
        break;
35,597✔
2450
      case PHY_SYSTABLE_SCAN_CODE_MGMT_EP_SET:
35,599✔
2451
        code = tlvDecodeObjFromTlv(pTlv, msgToEpSet, &pNode->mgmtEpSet);
35,599✔
2452
        break;
35,603✔
2453
      case PHY_SYSTABLE_SCAN_CODE_SHOW_REWRITE:
35,602✔
2454
        code = tlvDecodeBool(pTlv, &pNode->showRewrite);
35,602✔
2455
        break;
35,601✔
2456
      case PHY_SYSTABLE_SCAN_CODE_ACCOUNT_ID:
35,599✔
2457
        code = tlvDecodeI32(pTlv, &pNode->accountId);
35,599✔
2458
        break;
35,600✔
2459
      case PHY_SYSTABLE_SCAN_CODE_SYS_INFO:
35,600✔
2460
        code = tlvDecodeBool(pTlv, &pNode->sysInfo);
35,600✔
2461
        break;
35,599✔
2462
      default:
×
2463
        break;
×
2464
    }
2465
  }
2466

2467
  return code;
35,600✔
2468
}
2469

2470
enum {
2471
  PHY_PROJECT_CODE_BASE_NODE = 1,
2472
  PHY_PROJECT_CODE_PROJECTIONS,
2473
  PHY_PROJECT_CODE_MERGE_DATA_BLOCK,
2474
  PHY_PROJECT_CODE_IGNORE_GROUP_ID,
2475
  PHY_PROJECT_CODE_INPUT_IGNORE_GROUP
2476
};
2477

2478
static int32_t physiProjectNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
521,168✔
2479
  const SProjectPhysiNode* pNode = (const SProjectPhysiNode*)pObj;
521,168✔
2480

2481
  int32_t code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
521,168✔
2482
  if (TSDB_CODE_SUCCESS == code) {
521,003!
2483
    code = tlvEncodeObj(pEncoder, PHY_PROJECT_CODE_PROJECTIONS, nodeListToMsg, pNode->pProjections);
521,009✔
2484
  }
2485
  if (TSDB_CODE_SUCCESS == code) {
520,834!
2486
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
520,846✔
2487
  }
2488
  if (TSDB_CODE_SUCCESS == code) {
520,872!
2489
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_IGNORE_GROUP_ID, pNode->ignoreGroupId);
520,889✔
2490
  }
2491
  if (TSDB_CODE_SUCCESS == code) {
520,863!
2492
    code = tlvEncodeBool(pEncoder, PHY_PROJECT_CODE_INPUT_IGNORE_GROUP, pNode->inputIgnoreGroup);
520,868✔
2493
  }
2494

2495
  return code;
520,844✔
2496
}
2497

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

2501
  int32_t code = TSDB_CODE_SUCCESS;
569,463✔
2502
  STlv*   pTlv = NULL;
569,463✔
2503
  tlvForEach(pDecoder, pTlv, code) {
3,417,293!
2504
    switch (pTlv->type) {
2,847,842!
2505
      case PHY_PROJECT_CODE_BASE_NODE:
569,652✔
2506
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
569,652✔
2507
        break;
569,398✔
2508
      case PHY_PROJECT_CODE_PROJECTIONS:
569,438✔
2509
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pProjections);
569,438✔
2510
        break;
569,795✔
2511
      case PHY_PROJECT_CODE_MERGE_DATA_BLOCK:
569,696✔
2512
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
569,696✔
2513
        break;
569,584✔
2514
      case PHY_PROJECT_CODE_IGNORE_GROUP_ID:
569,542✔
2515
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
569,542✔
2516
        break;
569,529✔
2517
      case PHY_PROJECT_CODE_INPUT_IGNORE_GROUP:
569,514✔
2518
        code = tlvDecodeBool(pTlv, &pNode->inputIgnoreGroup);
569,514✔
2519
        break;
569,524✔
2520
      default:
×
2521
        break;
×
2522
    }
2523
  }
2524

2525
  return code;
569,252✔
2526
}
2527

2528
enum {
2529
  PHY_SORT_MERGE_JOIN_CODE_BASE_NODE = 1,
2530
  PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE,
2531
  PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE,
2532
  PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET,
2533
  PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT,
2534
  PHY_SORT_MERGE_JOIN_CODE_ASOF_OP,
2535
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR,  
2536
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR,  
2537
  PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID,  
2538
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID,
2539
  PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS,  
2540
  PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS,
2541
  PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS,
2542
  PHY_SORT_MERGE_JOIN_CODE_TARGETS,
2543
  PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS,
2544
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0,
2545
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0,
2546
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1,
2547
  PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1,
2548
  PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP,
2549
  PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN
2550
};
2551

2552
static int32_t physiMergeJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
81,722✔
2553
  const SSortMergeJoinPhysiNode* pNode = (const SSortMergeJoinPhysiNode*)pObj;
81,722✔
2554

2555
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
81,722✔
2556
  if (TSDB_CODE_SUCCESS == code) {
81,702!
2557
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE, pNode->joinType);
81,702✔
2558
  }
2559
  if (TSDB_CODE_SUCCESS == code) {
81,702✔
2560
    code = tlvEncodeEnum(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE, pNode->subType);
81,701✔
2561
  }
2562
  if (TSDB_CODE_SUCCESS == code) {
81,702✔
2563
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET, nodeToMsg, pNode->pWindowOffset);
81,701✔
2564
  }
2565
  if (TSDB_CODE_SUCCESS == code) {
81,702✔
2566
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT, nodeToMsg, pNode->pJLimit);
81,701✔
2567
  }
2568
  if (TSDB_CODE_SUCCESS == code) {
81,701✔
2569
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_ASOF_OP, pNode->asofOpType);
81,699✔
2570
  }  
2571
  if (TSDB_CODE_SUCCESS == code) {
81,703✔
2572
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR, nodeToMsg, pNode->leftPrimExpr);
81,700✔
2573
  }
2574
  if (TSDB_CODE_SUCCESS == code) {
81,704✔
2575
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR, nodeToMsg, pNode->rightPrimExpr);
81,701✔
2576
  }  
2577
  if (TSDB_CODE_SUCCESS == code) {
81,703✔
2578
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID, pNode->leftPrimSlotId);
81,700✔
2579
  }  
2580
  if (TSDB_CODE_SUCCESS == code) {
81,702✔
2581
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID, pNode->rightPrimSlotId);
81,699✔
2582
  }  
2583
  if (TSDB_CODE_SUCCESS == code) {
81,715✔
2584
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS, nodeListToMsg, pNode->pEqLeft);
81,712✔
2585
  }
2586
  if (TSDB_CODE_SUCCESS == code) {
81,716✔
2587
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS, nodeListToMsg, pNode->pEqRight);
81,713✔
2588
  }
2589
  if (TSDB_CODE_SUCCESS == code) {
81,715✔
2590
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS, nodeToMsg, pNode->pColOnCond);
81,712✔
2591
  }
2592
  if (TSDB_CODE_SUCCESS == code) {
81,713✔
2593
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS, nodeToMsg, pNode->pFullOnCond);
81,710✔
2594
  }
2595
  if (TSDB_CODE_SUCCESS == code) {
81,713✔
2596
    code = tlvEncodeObj(pEncoder, PHY_SORT_MERGE_JOIN_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
81,709✔
2597
  }
2598
  if (TSDB_CODE_SUCCESS == code) {
81,718✔
2599
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0, pNode->inputStat[0].inputRowNum);
81,714✔
2600
  }
2601
  if (TSDB_CODE_SUCCESS == code) {
81,715✔
2602
    code = tlvEncodeI64(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1, pNode->inputStat[1].inputRowNum);
81,711✔
2603
  }
2604
  if (TSDB_CODE_SUCCESS == code) {
81,714✔
2605
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0, pNode->inputStat[0].inputRowSize);
81,710✔
2606
  }
2607
  if (TSDB_CODE_SUCCESS == code) {
81,715✔
2608
    code = tlvEncodeI32(pEncoder, PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1, pNode->inputStat[1].inputRowSize);
81,711✔
2609
  }
2610
  if (TSDB_CODE_SUCCESS == code) {
81,717✔
2611
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP, pNode->seqWinGroup);
81,713✔
2612
  }
2613
  if (TSDB_CODE_SUCCESS == code) {
81,719✔
2614
    code = tlvEncodeBool(pEncoder, PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN, pNode->grpJoin);
81,715✔
2615
  }
2616
  
2617
  return code;
81,711✔
2618
}
2619

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

2623
  int32_t code = TSDB_CODE_SUCCESS;
89,035✔
2624
  STlv*   pTlv = NULL;
89,035✔
2625
  tlvForEach(pDecoder, pTlv, code) {
1,306,236!
2626
    switch (pTlv->type) {
1,217,199!
2627
      case PHY_SORT_MERGE_JOIN_CODE_BASE_NODE:
89,038✔
2628
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
89,038✔
2629
        break;
89,030✔
2630
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_TYPE:
89,032✔
2631
        code = tlvDecodeEnum(pTlv, &pNode->joinType, sizeof(pNode->joinType));
89,032✔
2632
        break;
89,030✔
2633
      case PHY_SORT_MERGE_JOIN_CODE_SUB_TYPE:
89,028✔
2634
        code = tlvDecodeEnum(pTlv, &pNode->subType, sizeof(pNode->subType));
89,028✔
2635
        break;
89,030✔
2636
      case PHY_SORT_MERGE_JOIN_CODE_WINDOW_OFFSET:
668✔
2637
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWindowOffset);
668✔
2638
        break;
668✔
2639
      case PHY_SORT_MERGE_JOIN_CODE_JOIN_LIMIT:
174✔
2640
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pJLimit);
174✔
2641
        break;
174✔
2642
      case PHY_SORT_MERGE_JOIN_CODE_ASOF_OP:
89,031✔
2643
        code = tlvDecodeI32(pTlv, &pNode->asofOpType);
89,031✔
2644
        break;
89,027✔
2645
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_EXPR:
249✔
2646
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->leftPrimExpr);
249✔
2647
        break;
249✔
2648
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_EXPR:
159✔
2649
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->rightPrimExpr);
159✔
2650
        break;
159✔
2651
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_PRIM_SLOT_ID:
89,024✔
2652
        code = tlvDecodeI32(pTlv, &pNode->leftPrimSlotId);
89,024✔
2653
        break;
89,024✔
2654
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_PRIM_SLOT_ID:
89,024✔
2655
        code = tlvDecodeI32(pTlv, &pNode->rightPrimSlotId);
89,024✔
2656
        break;
89,021✔
2657
      case PHY_SORT_MERGE_JOIN_CODE_LEFT_EQ_COLS:
225✔
2658
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqLeft);
225✔
2659
        break;
225✔
2660
      case PHY_SORT_MERGE_JOIN_CODE_RIGHT_EQ_COLS:
225✔
2661
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pEqRight);
225✔
2662
        break;
225✔
2663
      case PHY_SORT_MERGE_JOIN_CODE_COL_ON_CONDITIONS:
29,008✔
2664
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pColOnCond);
29,008✔
2665
        break;
29,008✔
2666
      case PHY_SORT_MERGE_JOIN_CODE_FULL_ON_CONDITIONS:
29,137✔
2667
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFullOnCond);
29,137✔
2668
        break;
29,137✔
2669
      case PHY_SORT_MERGE_JOIN_CODE_TARGETS:
89,020✔
2670
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
89,020✔
2671
        break;
89,047✔
2672
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM0:
89,038✔
2673
        code = tlvDecodeI64(pTlv, &pNode->inputStat[0].inputRowNum);
89,038✔
2674
        break;
89,032✔
2675
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_NUM1:
89,030✔
2676
        code = tlvDecodeI64(pTlv, &pNode->inputStat[1].inputRowNum);
89,030✔
2677
        break;
89,026✔
2678
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE0:
89,025✔
2679
        code = tlvDecodeI32(pTlv, &pNode->inputStat[0].inputRowSize);
89,025✔
2680
        break;
89,023✔
2681
      case PHY_SORT_MERGE_JOIN_CODE_INPUT_ROW_SIZE1:
89,023✔
2682
        code = tlvDecodeI32(pTlv, &pNode->inputStat[1].inputRowSize);
89,023✔
2683
        break;
89,023✔
2684
      case PHY_SORT_MERGE_JOIN_CODE_SEQ_WIN_GROUP:
89,023✔
2685
        code = tlvDecodeBool(pTlv, &pNode->seqWinGroup);
89,023✔
2686
        break;
89,020✔
2687
      case PHY_SORT_MERGE_JOIN_CODE_GROUP_JOIN:
89,018✔
2688
        code = tlvDecodeBool(pTlv, &pNode->grpJoin);
89,018✔
2689
        break;
89,023✔
2690
      default:
×
2691
        break;
×
2692
    }
2693
  }
2694

2695
  return code;
88,994✔
2696
}
2697

2698
enum {
2699
  PHY_HASH_JOIN_CODE_BASE_NODE = 1,
2700
  PHY_HASH_JOIN_CODE_JOIN_TYPE,
2701
  PHY_HASH_JOIN_CODE_JOIN_STYPE,
2702
  PHY_HASH_JOIN_CODE_ON_LEFT_COLUMN,
2703
  PHY_HASH_JOIN_CODE_ON_RIGHT_COLUMN,
2704
  PHY_HASH_JOIN_CODE_LEFT_PRIM_EXPR,
2705
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_EXPR,
2706
  PHY_HASH_JOIN_CODE_LEFT_PRIM_SLOTID,
2707
  PHY_HASH_JOIN_CODE_RIGHT_PRIM_SLOTID,
2708
  PHY_HASH_JOIN_CODE_TIME_RANGE_TARGET,
2709
  PHY_HASH_JOIN_CODE_ON_CONDITIONS,
2710
  PHY_HASH_JOIN_CODE_TARGETS,
2711
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM0,
2712
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE0,
2713
  PHY_HASH_JOIN_CODE_INPUT_ROW_NUM1,
2714
  PHY_HASH_JOIN_CODE_INPUT_ROW_SIZE1,
2715
  PHY_HASH_JOIN_CODE_LEFT_ON_COND,
2716
  PHY_HASH_JOIN_CODE_RIGHT_ON_COND,
2717
  PHY_HASH_JOIN_CODE_TIME_RANGE_SKEY,
2718
  PHY_HASH_JOIN_CODE_TIME_RANGE_EKEY,
2719

2720
};
2721

2722
static int32_t physiHashJoinNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,880✔
2723
  const SHashJoinPhysiNode* pNode = (const SHashJoinPhysiNode*)pObj;
8,880✔
2724

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

2784
  return code;
8,880✔
2785
}
2786

2787

2788
static int32_t msgToPhysiHashJoinNode(STlvDecoder* pDecoder, void* pObj) {
8,879✔
2789
  SHashJoinPhysiNode* pNode = (SHashJoinPhysiNode*)pObj;
8,879✔
2790

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

2860
  return code;
8,879✔
2861
}
2862

2863

2864
enum {
2865
  PHY_AGG_CODE_BASE_NODE = 1,
2866
  PHY_AGG_CODE_EXPR,
2867
  PHY_AGG_CODE_GROUP_KEYS,
2868
  PHY_AGG_CODE_AGG_FUNCS,
2869
  PHY_AGG_CODE_MERGE_DATA_BLOCK,
2870
  PHY_AGG_CODE_GROUP_KEY_OPTIMIZE,
2871
  PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS,
2872
};
2873

2874
static int32_t physiAggNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
643,573✔
2875
  const SAggPhysiNode* pNode = (const SAggPhysiNode*)pObj;
643,573✔
2876

2877
  int32_t code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
643,573✔
2878
  if (TSDB_CODE_SUCCESS == code) {
643,159!
2879
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_EXPR, nodeListToMsg, pNode->pExprs);
643,166✔
2880
  }
2881
  if (TSDB_CODE_SUCCESS == code) {
642,957✔
2882
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_GROUP_KEYS, nodeListToMsg, pNode->pGroupKeys);
642,948✔
2883
  }
2884
  if (TSDB_CODE_SUCCESS == code) {
642,906✔
2885
    code = tlvEncodeObj(pEncoder, PHY_AGG_CODE_AGG_FUNCS, nodeListToMsg, pNode->pAggFuncs);
642,899✔
2886
  }
2887
  if (TSDB_CODE_SUCCESS == code) {
642,624!
2888
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
642,625✔
2889
  }
2890
  if (TSDB_CODE_SUCCESS == code) {
642,746!
2891
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_GROUP_KEY_OPTIMIZE, pNode->groupKeyOptimized);
642,750✔
2892
  }
2893
  if (TSDB_CODE_SUCCESS == code) {
642,611!
2894
    code = tlvEncodeBool(pEncoder, PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS, pNode->hasCountLikeFunc);
642,611✔
2895
  }
2896

2897
  return code;
642,551✔
2898
}
2899

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

2903
  int32_t code = TSDB_CODE_SUCCESS;
704,531✔
2904
  STlv*   pTlv = NULL;
704,531✔
2905
  tlvForEach(pDecoder, pTlv, code) {
4,496,339!
2906
    switch (pTlv->type) {
3,792,036!
2907
      case PHY_AGG_CODE_BASE_NODE:
704,782✔
2908
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
704,782✔
2909
        break;
704,341✔
2910
      case PHY_AGG_CODE_EXPR:
249,697✔
2911
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
249,697✔
2912
        break;
249,884✔
2913
      case PHY_AGG_CODE_GROUP_KEYS:
219,841✔
2914
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupKeys);
219,841✔
2915
        break;
219,865✔
2916
      case PHY_AGG_CODE_AGG_FUNCS:
504,035✔
2917
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pAggFuncs);
504,035✔
2918
        break;
504,354✔
2919
      case PHY_AGG_CODE_MERGE_DATA_BLOCK:
704,786✔
2920
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
704,786✔
2921
        break;
704,594✔
2922
      case PHY_AGG_CODE_GROUP_KEY_OPTIMIZE:
704,524✔
2923
        code = tlvDecodeBool(pTlv, &pNode->groupKeyOptimized);
704,524✔
2924
        break;
704,395✔
2925
      case PHY_AGG_CODE_HAS_COUNT_LIKE_FUNCS:
704,371✔
2926
        code = tlvDecodeBool(pTlv, &pNode->hasCountLikeFunc);
704,371✔
2927
        break;
704,375✔
2928
      default:
×
2929
        break;
×
2930
    }
2931
  }
2932

2933
  return code;
703,892✔
2934
}
2935

2936
enum {
2937
  PHY_EXCHANGE_CODE_BASE_NODE = 1,
2938
  PHY_EXCHANGE_CODE_SRC_START_GROUP_ID,
2939
  PHY_EXCHANGE_CODE_SRC_END_GROUP_ID,
2940
  PHY_EXCHANGE_CODE_SINGLE_CHANNEL,
2941
  PHY_EXCHANGE_CODE_SRC_ENDPOINTS,
2942
  PHY_EXCHANGE_CODE_SEQ_RECV_DATA
2943
};
2944

2945
static int32_t physiExchangeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
672,443✔
2946
  const SExchangePhysiNode* pNode = (const SExchangePhysiNode*)pObj;
672,443✔
2947

2948
  int32_t code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
672,443✔
2949
  if (TSDB_CODE_SUCCESS == code) {
672,427!
2950
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_START_GROUP_ID, pNode->srcStartGroupId);
672,427✔
2951
  }
2952
  if (TSDB_CODE_SUCCESS == code) {
672,422✔
2953
    code = tlvEncodeI32(pEncoder, PHY_EXCHANGE_CODE_SRC_END_GROUP_ID, pNode->srcEndGroupId);
672,421✔
2954
  }
2955
  if (TSDB_CODE_SUCCESS == code) {
672,428✔
2956
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SINGLE_CHANNEL, pNode->singleChannel);
672,427✔
2957
  }
2958
  if (TSDB_CODE_SUCCESS == code) {
672,431✔
2959
    code = tlvEncodeObj(pEncoder, PHY_EXCHANGE_CODE_SRC_ENDPOINTS, nodeListToMsg, pNode->pSrcEndPoints);
672,429✔
2960
  }
2961
  if (TSDB_CODE_SUCCESS == code) {
672,416✔
2962
    code = tlvEncodeBool(pEncoder, PHY_EXCHANGE_CODE_SEQ_RECV_DATA, pNode->seqRecvData);
672,414✔
2963
  }
2964

2965
  return code;
672,416✔
2966
}
2967

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

2971
  int32_t code = TSDB_CODE_SUCCESS;
704,955✔
2972
  STlv*   pTlv = NULL;
704,955✔
2973
  tlvForEach(pDecoder, pTlv, code) {
4,934,417!
2974
    switch (pTlv->type) {
4,229,489!
2975
      case PHY_EXCHANGE_CODE_BASE_NODE:
704,983✔
2976
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
704,983✔
2977
        break;
704,866✔
2978
      case PHY_EXCHANGE_CODE_SRC_START_GROUP_ID:
704,884✔
2979
        code = tlvDecodeI32(pTlv, &pNode->srcStartGroupId);
704,884✔
2980
        break;
704,870✔
2981
      case PHY_EXCHANGE_CODE_SRC_END_GROUP_ID:
704,867✔
2982
        code = tlvDecodeI32(pTlv, &pNode->srcEndGroupId);
704,867✔
2983
        break;
704,866✔
2984
      case PHY_EXCHANGE_CODE_SINGLE_CHANNEL:
704,873✔
2985
        code = tlvDecodeBool(pTlv, &pNode->singleChannel);
704,873✔
2986
        break;
704,887✔
2987
      case PHY_EXCHANGE_CODE_SRC_ENDPOINTS:
704,889✔
2988
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSrcEndPoints);
704,889✔
2989
        break;
705,017✔
2990
      case PHY_EXCHANGE_CODE_SEQ_RECV_DATA:
704,993✔
2991
        code = tlvDecodeBool(pTlv, &pNode->seqRecvData);
704,993✔
2992
        break;
704,956✔
2993
      default:
×
2994
        break;
×
2995
    }
2996
  }
2997

2998
  return code;
704,831✔
2999
}
3000

3001
enum {
3002
  PHY_MERGE_CODE_BASE_NODE = 1,
3003
  PHY_MERGE_CODE_MERGE_KEYS,
3004
  PHY_MERGE_CODE_TARGETS,
3005
  PHY_MERGE_CODE_NUM_OF_CHANNELS,
3006
  PHY_MERGE_CODE_SRC_GROUP_ID,
3007
  PHY_MERGE_CODE_GROUP_SORT,
3008
  PHY_MERGE_CODE_IGNORE_GROUP_ID,
3009
  PHY_MERGE_CODE_INPUT_WITH_GROUP_ID,
3010
  PHY_MERGE_CODE_TYPE,
3011
};
3012

3013
static int32_t physiMergeNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
77,333✔
3014
  const SMergePhysiNode* pNode = (const SMergePhysiNode*)pObj;
77,333✔
3015

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

3042
  return code;
77,330✔
3043
}
3044

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

3048
  int32_t code = TSDB_CODE_SUCCESS;
77,644✔
3049
  STlv*   pTlv = NULL;
77,644✔
3050
  tlvForEach(pDecoder, pTlv, code) {
773,588✔
3051
    switch (pTlv->type) {
695,943!
3052
      case PHY_MERGE_CODE_BASE_NODE:
77,646✔
3053
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
77,646✔
3054
        break;
77,644✔
3055
      case PHY_MERGE_CODE_MERGE_KEYS:
74,797✔
3056
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pMergeKeys);
74,797✔
3057
        break;
74,800✔
3058
      case PHY_MERGE_CODE_TARGETS:
77,647✔
3059
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
77,647✔
3060
        break;
77,648✔
3061
      case PHY_MERGE_CODE_NUM_OF_CHANNELS:
77,644✔
3062
        code = tlvDecodeI32(pTlv, &pNode->numOfChannels);
77,644✔
3063
        break;
77,643✔
3064
      case PHY_MERGE_CODE_SRC_GROUP_ID:
77,643✔
3065
        code = tlvDecodeI32(pTlv, &pNode->srcGroupId);
77,643✔
3066
        break;
77,643✔
3067
      case PHY_MERGE_CODE_GROUP_SORT:
77,643✔
3068
        code = tlvDecodeBool(pTlv, &pNode->groupSort);
77,643✔
3069
        break;
77,642✔
3070
      case PHY_MERGE_CODE_IGNORE_GROUP_ID:
77,642✔
3071
        code = tlvDecodeBool(pTlv, &pNode->ignoreGroupId);
77,642✔
3072
        break;
77,641✔
3073
      case PHY_MERGE_CODE_INPUT_WITH_GROUP_ID:
77,640✔
3074
        code = tlvDecodeBool(pTlv, &pNode->inputWithGroupId);
77,640✔
3075
        break;
77,642✔
3076
      case PHY_MERGE_CODE_TYPE:
77,641✔
3077
        code = tlvDecodeI32(pTlv, (int32_t*)&pNode->type);
77,641✔
3078
        break;
77,641✔
3079
      default:
×
3080
        break;
×
3081
    }
3082
  }
3083

3084
  return code;
77,632✔
3085
}
3086

3087
enum {
3088
  PHY_SORT_CODE_BASE_NODE = 1,
3089
  PHY_SORT_CODE_EXPR,
3090
  PHY_SORT_CODE_SORT_KEYS,
3091
  PHY_SORT_CODE_TARGETS,
3092
  PHY_SORT_CODE_CALC_GROUPID,
3093
  PHY_SORT_CODE_EXCLUDE_PK_COL
3094
};
3095

3096
static int32_t physiSortNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
163,841✔
3097
  const SSortPhysiNode* pNode = (const SSortPhysiNode*)pObj;
163,841✔
3098

3099
  int32_t code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
163,841✔
3100
  if (TSDB_CODE_SUCCESS == code) {
163,810!
3101
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_EXPR, nodeListToMsg, pNode->pExprs);
163,811✔
3102
  }
3103
  if (TSDB_CODE_SUCCESS == code) {
163,813!
3104
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_SORT_KEYS, nodeListToMsg, pNode->pSortKeys);
163,814✔
3105
  }
3106
  if (TSDB_CODE_SUCCESS == code) {
163,819!
3107
    code = tlvEncodeObj(pEncoder, PHY_SORT_CODE_TARGETS, nodeListToMsg, pNode->pTargets);
163,821✔
3108
  }
3109
  if (TSDB_CODE_SUCCESS == code) {
163,779!
3110
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_CALC_GROUPID, pNode->calcGroupId);
163,781✔
3111
  }
3112
  if (TSDB_CODE_SUCCESS == code) {
163,791!
3113
    code = tlvEncodeBool(pEncoder, PHY_SORT_CODE_EXCLUDE_PK_COL, pNode->excludePkCol);
163,793✔
3114
  }
3115

3116
  return code;
163,797✔
3117
}
3118

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

3122
  int32_t code = TSDB_CODE_SUCCESS;
168,374✔
3123
  STlv*   pTlv = NULL;
168,374✔
3124
  tlvForEach(pDecoder, pTlv, code) {
1,010,411!
3125
    switch (pTlv->type) {
841,774!
3126
      case PHY_SORT_CODE_BASE_NODE:
168,388✔
3127
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
168,388✔
3128
        break;
168,348✔
3129
      case PHY_SORT_CODE_EXPR:
127✔
3130
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
127✔
3131
        break;
127✔
3132
      case PHY_SORT_CODE_SORT_KEYS:
168,342✔
3133
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSortKeys);
168,342✔
3134
        break;
168,417✔
3135
      case PHY_SORT_CODE_TARGETS:
168,403✔
3136
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
168,403✔
3137
        break;
168,414✔
3138
      case PHY_SORT_CODE_CALC_GROUPID:
168,393✔
3139
        code = tlvDecodeBool(pTlv, &pNode->calcGroupId);
168,393✔
3140
        break;
168,371✔
3141
      case PHY_SORT_CODE_EXCLUDE_PK_COL:
168,364✔
3142
        code = tlvDecodeBool(pTlv, &pNode->excludePkCol);
168,364✔
3143
      default:
168,360✔
3144
        break;
168,360✔
3145
    }
3146
  }
3147

3148
  return code;
168,616✔
3149
}
3150

3151
enum {
3152
  PHY_WINDOW_CODE_BASE_NODE = 1,
3153
  PHY_WINDOW_CODE_EXPR,
3154
  PHY_WINDOW_CODE_FUNCS,
3155
  PHY_WINDOW_CODE_TS_PK,
3156
  PHY_WINDOW_CODE_TS_END,
3157
  PHY_WINDOW_CODE_TRIGGER_TYPE,
3158
  PHY_WINDOW_CODE_WATERMARK,
3159
  PHY_WINDOW_CODE_DELETE_MARK,
3160
  PHY_WINDOW_CODE_IG_EXPIRED,
3161
  PHY_WINDOW_CODE_INPUT_TS_ORDER,
3162
  PHY_WINDOW_CODE_OUTPUT_TS_ORDER,
3163
  PHY_WINDOW_CODE_MERGE_DATA_BLOCK,
3164
  PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY,
3165
};
3166

3167
static int32_t physiWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
90,348✔
3168
  const SWindowPhysiNode* pNode = (const SWindowPhysiNode*)pObj;
90,348✔
3169

3170
  int32_t code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
90,348✔
3171
  if (TSDB_CODE_SUCCESS == code) {
90,287!
3172
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_EXPR, nodeListToMsg, pNode->pExprs);
90,289✔
3173
  }
3174
  if (TSDB_CODE_SUCCESS == code) {
90,286✔
3175
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
90,279✔
3176
  }
3177
  if (TSDB_CODE_SUCCESS == code) {
90,241✔
3178
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_PK, nodeToMsg, pNode->pTspk);
90,236✔
3179
  }
3180
  if (TSDB_CODE_SUCCESS == code) {
90,198✔
3181
    code = tlvEncodeObj(pEncoder, PHY_WINDOW_CODE_TS_END, nodeToMsg, pNode->pTsEnd);
90,194✔
3182
  }
3183
  if (TSDB_CODE_SUCCESS == code) {
90,217✔
3184
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_TRIGGER_TYPE, pNode->triggerType);
90,214✔
3185
  }
3186
  if (TSDB_CODE_SUCCESS == code) {
90,270✔
3187
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_WATERMARK, pNode->watermark);
90,264✔
3188
  }
3189
  if (TSDB_CODE_SUCCESS == code) {
90,251✔
3190
    code = tlvEncodeI64(pEncoder, PHY_WINDOW_CODE_DELETE_MARK, pNode->deleteMark);
90,246✔
3191
  }
3192
  if (TSDB_CODE_SUCCESS == code) {
90,233!
3193
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_IG_EXPIRED, pNode->igExpired);
90,242✔
3194
  }
3195
  if (TSDB_CODE_SUCCESS == code) {
90,243!
3196
    code = tlvEncodeBool(pEncoder, PHY_WINDOW_CODE_MERGE_DATA_BLOCK, pNode->mergeDataBlock);
90,252✔
3197
  }
3198
  if (TSDB_CODE_SUCCESS == code) {
90,251!
3199
    code = tlvEncodeI8(pEncoder, PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY, pNode->destHasPrimaryKey);
90,254✔
3200
  }
3201

3202
  return code;
90,263✔
3203
}
3204

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

3208
  int32_t code = TSDB_CODE_SUCCESS;
93,827✔
3209
  STlv*   pTlv = NULL;
93,827✔
3210
  tlvForEach(pDecoder, pTlv, code) {
950,894!
3211
    switch (pTlv->type) {
857,070!
3212
      case PHY_WINDOW_CODE_BASE_NODE:
93,827✔
3213
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
93,827✔
3214
        break;
93,804✔
3215
      case PHY_WINDOW_CODE_EXPR:
8,802✔
3216
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
8,802✔
3217
        break;
8,809✔
3218
      case PHY_WINDOW_CODE_FUNCS:
93,811✔
3219
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
93,811✔
3220
        break;
93,834✔
3221
      case PHY_WINDOW_CODE_TS_PK:
93,827✔
3222
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTspk);
93,827✔
3223
        break;
93,846✔
3224
      case PHY_WINDOW_CODE_TS_END:
3,880✔
3225
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTsEnd);
3,880✔
3226
        break;
3,879✔
3227
      case PHY_WINDOW_CODE_TRIGGER_TYPE:
93,843✔
3228
        code = tlvDecodeI8(pTlv, &pNode->triggerType);
93,843✔
3229
        break;
93,834✔
3230
      case PHY_WINDOW_CODE_WATERMARK:
93,828✔
3231
        code = tlvDecodeI64(pTlv, &pNode->watermark);
93,828✔
3232
        break;
93,817✔
3233
      case PHY_WINDOW_CODE_DELETE_MARK:
93,821✔
3234
        code = tlvDecodeI64(pTlv, &pNode->deleteMark);
93,821✔
3235
        break;
93,813✔
3236
      case PHY_WINDOW_CODE_IG_EXPIRED:
93,817✔
3237
        code = tlvDecodeI8(pTlv, &pNode->igExpired);
93,817✔
3238
        break;
93,812✔
3239
      case PHY_WINDOW_CODE_MERGE_DATA_BLOCK:
93,809✔
3240
        code = tlvDecodeBool(pTlv, &pNode->mergeDataBlock);
93,809✔
3241
        break;
93,811✔
3242
      case PHY_WINDOW_CODE_DEST_HAS_PRIMARY_KEY:
93,805✔
3243
        code = tlvDecodeI8(pTlv, &pNode->destHasPrimaryKey);
93,805✔
3244
        break;
93,808✔
3245
      default:
×
3246
        break;
×
3247
    }
3248
  }
3249

3250
  return code;
93,801✔
3251
}
3252

3253
enum { PHY_INTERVAL_CODE_WINDOW = 1, PHY_INTERVAL_CODE_INLINE_ATTRS };
3254

3255
static int32_t physiIntervalNodeInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
80,554✔
3256
  const SIntervalPhysiNode* pNode = (const SIntervalPhysiNode*)pObj;
80,554✔
3257

3258
  int32_t code = tlvEncodeValueI64(pEncoder, pNode->interval);
80,554✔
3259
  if (TSDB_CODE_SUCCESS == code) {
80,557!
3260
    code = tlvEncodeValueI64(pEncoder, pNode->offset);
80,558✔
3261
  }
3262
  if (TSDB_CODE_SUCCESS == code) {
80,506✔
3263
    code = tlvEncodeValueI64(pEncoder, pNode->sliding);
80,505✔
3264
  }
3265
  if (TSDB_CODE_SUCCESS == code) {
80,479!
3266
    code = tlvEncodeValueI8(pEncoder, pNode->intervalUnit);
80,485✔
3267
  }
3268
  if (TSDB_CODE_SUCCESS == code) {
80,484!
3269
    code = tlvEncodeValueI8(pEncoder, pNode->slidingUnit);
80,490✔
3270
  }
3271

3272
  return code;
80,479✔
3273
}
3274

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

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

3283
  return code;
80,490✔
3284
}
3285

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

3289
  int32_t code = tlvDecodeValueI64(pDecoder, &pNode->interval);
83,675✔
3290
  if (TSDB_CODE_SUCCESS == code) {
83,685!
3291
    code = tlvDecodeValueI64(pDecoder, &pNode->offset);
83,685✔
3292
  }
3293
  if (TSDB_CODE_SUCCESS == code) {
83,678!
3294
    code = tlvDecodeValueI64(pDecoder, &pNode->sliding);
83,678✔
3295
  }
3296
  if (TSDB_CODE_SUCCESS == code) {
83,674!
3297
    code = tlvDecodeValueI8(pDecoder, &pNode->intervalUnit);
83,676✔
3298
  }
3299
  if (TSDB_CODE_SUCCESS == code) {
83,683✔
3300
    code = tlvDecodeValueI8(pDecoder, &pNode->slidingUnit);
83,682✔
3301
  }
3302

3303
  return code;
83,683✔
3304
}
3305

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

3309
  int32_t code = TSDB_CODE_SUCCESS;
83,697✔
3310
  STlv*   pTlv = NULL;
83,697✔
3311
  tlvForEach(pDecoder, pTlv, code) {
251,060✔
3312
    switch (pTlv->type) {
167,385!
3313
      case PHY_INTERVAL_CODE_WINDOW:
83,709✔
3314
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
83,709✔
3315
        break;
83,679✔
3316
      case PHY_INTERVAL_CODE_INLINE_ATTRS:
83,676✔
3317
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiIntervalNodeInline, pNode);
83,676✔
3318
        break;
83,684✔
3319
      default:
×
3320
        break;
×
3321
    }
3322
  }
3323

3324
  return code;
83,667✔
3325
}
3326

3327
enum {
3328
  PHY_FILL_CODE_BASE_NODE = 1,
3329
  PHY_FILL_CODE_MODE,
3330
  PHY_FILL_CODE_FILL_EXPRS,
3331
  PHY_FILL_CODE_NOT_FILL_EXPRS,
3332
  PHY_FILL_CODE_WSTART,
3333
  PHY_FILL_CODE_VALUES,
3334
  PHY_FILL_CODE_TIME_RANGE,
3335
  PHY_FILL_CODE_INPUT_TS_ORDER,
3336
  PHY_FILL_CODE_FILL_NULL_EXPRS,
3337
};
3338

3339
static int32_t physiFillNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,741✔
3340
  const SFillPhysiNode* pNode = (const SFillPhysiNode*)pObj;
14,741✔
3341

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

3365
  return code;
14,739✔
3366
}
3367

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

3371
  int32_t code = TSDB_CODE_SUCCESS;
14,712✔
3372
  STlv*   pTlv = NULL;
14,712✔
3373
  tlvForEach(pDecoder, pTlv, code) {
103,144✔
3374
    switch (pTlv->type) {
88,431!
3375
      case PHY_FILL_CODE_BASE_NODE:
14,711✔
3376
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
14,711✔
3377
        break;
14,710✔
3378
      case PHY_FILL_CODE_MODE:
14,710✔
3379
        code = tlvDecodeEnum(pTlv, &pNode->mode, sizeof(pNode->mode));
14,710✔
3380
        break;
14,709✔
3381
      case PHY_FILL_CODE_FILL_EXPRS:
14,708✔
3382
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillExprs);
14,708✔
3383
        break;
14,712✔
3384
      case PHY_FILL_CODE_NOT_FILL_EXPRS:
14,484✔
3385
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pNotFillExprs);
14,484✔
3386
        break;
14,483✔
3387
      case PHY_FILL_CODE_WSTART:
14,710✔
3388
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pWStartTs);
14,710✔
3389
        break;
14,712✔
3390
      case PHY_FILL_CODE_VALUES:
355✔
3391
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pValues);
355✔
3392
        break;
355✔
3393
      case PHY_FILL_CODE_TIME_RANGE:
14,713✔
3394
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, (void**)&pNode->timeRange);
14,713✔
3395
        break;
14,711✔
3396
      case PHY_FILL_CODE_FILL_NULL_EXPRS:
40✔
3397
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFillNullExprs);
40✔
3398
        break;
40✔
3399
      default:
×
3400
        break;
×
3401
    }
3402
  }
3403

3404
  return code;
14,715✔
3405
}
3406

3407
enum { PHY_SESSION_CODE_WINDOW = 1, PHY_SESSION_CODE_GAP };
3408

3409
static int32_t physiSessionWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
3,879✔
3410
  const SSessionWinodwPhysiNode* pNode = (const SSessionWinodwPhysiNode*)pObj;
3,879✔
3411

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

3417
  return code;
3,879✔
3418
}
3419

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

3423
  int32_t code = TSDB_CODE_SUCCESS;
3,880✔
3424
  STlv*   pTlv = NULL;
3,880✔
3425
  tlvForEach(pDecoder, pTlv, code) {
11,638!
3426
    switch (pTlv->type) {
7,759!
3427
      case PHY_SESSION_CODE_WINDOW:
3,880✔
3428
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
3,880✔
3429
        break;
3,879✔
3430
      case PHY_SESSION_CODE_GAP:
3,879✔
3431
        code = tlvDecodeI64(pTlv, &pNode->gap);
3,879✔
3432
        break;
3,879✔
3433
      default:
×
3434
        break;
×
3435
    }
3436
  }
3437

3438
  return code;
3,879✔
3439
}
3440

3441
enum { PHY_STATE_CODE_WINDOW = 1, PHY_STATE_CODE_KEY };
3442

3443
static int32_t physiStateWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
5,712✔
3444
  const SStateWinodwPhysiNode* pNode = (const SStateWinodwPhysiNode*)pObj;
5,712✔
3445

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

3451
  return code;
5,712✔
3452
}
3453

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

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

3472
  return code;
6,136✔
3473
}
3474

3475
enum { PHY_EVENT_CODE_WINDOW = 1, PHY_EVENT_CODE_START_COND, PHY_EVENT_CODE_END_COND };
3476

3477
static int32_t physiEventWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
62✔
3478
  const SEventWinodwPhysiNode* pNode = (const SEventWinodwPhysiNode*)pObj;
62✔
3479

3480
  int32_t code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
62✔
3481
  if (TSDB_CODE_SUCCESS == code) {
62!
3482
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_START_COND, nodeToMsg, pNode->pStartCond);
62✔
3483
  }
3484
  if (TSDB_CODE_SUCCESS == code) {
62!
3485
    code = tlvEncodeObj(pEncoder, PHY_EVENT_CODE_END_COND, nodeToMsg, pNode->pEndCond);
62✔
3486
  }
3487

3488
  return code;
62✔
3489
}
3490

3491
static int32_t msgToPhysiEventWindowNode(STlvDecoder* pDecoder, void* pObj) {
70✔
3492
  SEventWinodwPhysiNode* pNode = (SEventWinodwPhysiNode*)pObj;
70✔
3493

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

3512
  return code;
70✔
3513
}
3514

3515
enum { PHY_COUNT_CODE_WINDOW = 1, PHY_COUNT_CODE_WINDOW_COUNT, PHY_COUNT_CODE_WINDOW_SLIDING };
3516

3517
static int32_t physiCountWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
45✔
3518
  const SCountWinodwPhysiNode* pNode = (const SCountWinodwPhysiNode*)pObj;
45✔
3519

3520
  int32_t code = tlvEncodeObj(pEncoder, PHY_COUNT_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
45✔
3521
  if (TSDB_CODE_SUCCESS == code) {
45!
3522
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_COUNT, pNode->windowCount);
45✔
3523
  }
3524
  if (TSDB_CODE_SUCCESS == code) {
45!
3525
    code = tlvEncodeI64(pEncoder, PHY_COUNT_CODE_WINDOW_SLIDING, pNode->windowSliding);
45✔
3526
  }
3527

3528
  return code;
45✔
3529
}
3530

3531
static int32_t msgToPhysiCountWindowNode(STlvDecoder* pDecoder, void* pObj) {
41✔
3532
  SCountWinodwPhysiNode* pNode = (SCountWinodwPhysiNode*)pObj;
41✔
3533

3534
  int32_t code = TSDB_CODE_SUCCESS;
41✔
3535
  STlv*   pTlv = NULL;
41✔
3536
  tlvForEach(pDecoder, pTlv, code) {
164!
3537
    switch (pTlv->type) {
123!
3538
      case PHY_COUNT_CODE_WINDOW:
41✔
3539
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiWindowNode, &pNode->window);
41✔
3540
        break;
41✔
3541
      case PHY_COUNT_CODE_WINDOW_COUNT:
41✔
3542
        code = tlvDecodeI64(pTlv, &pNode->windowCount);
41✔
3543
        break;
41✔
3544
      case PHY_COUNT_CODE_WINDOW_SLIDING:
41✔
3545
        code = tlvDecodeI64(pTlv, &pNode->windowSliding);
41✔
3546
        break;
41✔
3547
      default:
×
3548
        break;
×
3549
    }
3550
  }
3551

3552
  return code;
41✔
3553
}
3554

3555
enum { PHY_ANOMALY_CODE_WINDOW = 1, PHY_ANOMALY_CODE_KEY, PHY_ANOMALY_CODE_WINDOW_OPTION };
3556

3557
static int32_t physiAnomalyWindowNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3558
  const SAnomalyWindowPhysiNode* pNode = (const SAnomalyWindowPhysiNode*)pObj;
×
3559

3560
  int32_t code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_WINDOW, physiWindowNodeToMsg, &pNode->window);
×
3561
  if (TSDB_CODE_SUCCESS == code) {
×
3562
    code = tlvEncodeObj(pEncoder, PHY_ANOMALY_CODE_KEY, nodeToMsg, pNode->pAnomalyKey);
×
3563
  }
3564
  if (TSDB_CODE_SUCCESS == code) {
×
3565
    code = tlvEncodeCStr(pEncoder, PHY_ANOMALY_CODE_WINDOW_OPTION, pNode->anomalyOpt);
×
3566
  }
3567

3568
  return code;
×
3569
}
3570

3571
static int32_t msgToPhysiAnomalyWindowNode(STlvDecoder* pDecoder, void* pObj) {
×
3572
  SAnomalyWindowPhysiNode* pNode = (SAnomalyWindowPhysiNode*)pObj;
×
3573

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

3592
  return code;
×
3593
}
3594

3595
enum {
3596
  PHY_PARTITION_CODE_BASE_NODE = 1,
3597
  PHY_PARTITION_CODE_EXPR,
3598
  PHY_PARTITION_CODE_KEYS,
3599
  PHY_PARTITION_CODE_TARGETS,
3600
  PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER,
3601
  PHY_PARTITION_CODE_TS_SLOTID
3602
};
3603

3604
static int32_t physiPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,290✔
3605
  const SPartitionPhysiNode* pNode = (const SPartitionPhysiNode*)pObj;
14,290✔
3606

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

3624
  return code;
14,286✔
3625
}
3626

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

3630
  int32_t code = TSDB_CODE_SUCCESS;
13,882✔
3631
  STlv*   pTlv = NULL;
13,882✔
3632
  tlvForEach(pDecoder, pTlv, code) {
84,451✔
3633
    switch (pTlv->type) {
70,569!
3634
      case PHY_PARTITION_CODE_BASE_NODE:
13,882✔
3635
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
13,882✔
3636
        break;
13,875✔
3637
      case PHY_PARTITION_CODE_EXPR:
1,168✔
3638
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
1,168✔
3639
        break;
1,168✔
3640
      case PHY_PARTITION_CODE_KEYS:
13,874✔
3641
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pPartitionKeys);
13,874✔
3642
        break;
13,886✔
3643
      case PHY_PARTITION_CODE_TARGETS:
13,886✔
3644
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pTargets);
13,886✔
3645
        break;
13,883✔
3646
      case PHY_PARTITION_CODE_HAS_OUTPUT_TS_ORDER:
13,881✔
3647
        code = tlvDecodeBool(pTlv, &pNode->needBlockOutputTsOrder);
13,881✔
3648
        break;
13,879✔
3649
      case PHY_PARTITION_CODE_TS_SLOTID:
13,878✔
3650
        code = tlvDecodeI32(pTlv, &pNode->tsSlotId);
13,878✔
3651
        break;
13,878✔
3652
      default:
×
3653
        break;
×
3654
    }
3655
  }
3656

3657
  return code;
13,877✔
3658
}
3659

3660
enum { PHY_STREAM_PARTITION_CODE_BASE_NODE = 1, PHY_STREAM_PARTITION_CODE_TAGS, PHY_STREAM_PARTITION_CODE_SUBTABLE };
3661

3662
static int32_t physiStreamPartitionNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3663
  const SStreamPartitionPhysiNode* pNode = (const SStreamPartitionPhysiNode*)pObj;
×
3664

3665
  int32_t code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_BASE_NODE, physiPartitionNodeToMsg, &pNode->part);
×
3666
  if (TSDB_CODE_SUCCESS == code) {
×
3667
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_TAGS, nodeListToMsg, pNode->pTags);
×
3668
  }
3669
  if (TSDB_CODE_SUCCESS == code) {
×
3670
    code = tlvEncodeObj(pEncoder, PHY_STREAM_PARTITION_CODE_SUBTABLE, nodeToMsg, pNode->pSubtable);
×
3671
  }
3672

3673
  return code;
×
3674
}
3675

3676
static int32_t msgToPhysiStreamPartitionNode(STlvDecoder* pDecoder, void* pObj) {
×
3677
  SStreamPartitionPhysiNode* pNode = (SStreamPartitionPhysiNode*)pObj;
×
3678

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

3697
  return code;
×
3698
}
3699

3700
enum { PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE = 1, PHY_INDEF_ROWS_FUNC_CODE_EXPRS, PHY_INDEF_ROWS_FUNC_CODE_FUNCS };
3701

3702
static int32_t physiIndefRowsFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
21,964✔
3703
  const SIndefRowsFuncPhysiNode* pNode = (const SIndefRowsFuncPhysiNode*)pObj;
21,964✔
3704

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

3713
  return code;
21,960✔
3714
}
3715

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

3719
  int32_t code = TSDB_CODE_SUCCESS;
24,180✔
3720
  STlv*   pTlv = NULL;
24,180✔
3721
  tlvForEach(pDecoder, pTlv, code) {
72,659!
3722
    switch (pTlv->type) {
48,479!
3723
      case PHY_INDEF_ROWS_FUNC_CODE_BASE_NODE:
24,186✔
3724
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
24,186✔
3725
        break;
24,173✔
3726
      case PHY_INDEF_ROWS_FUNC_CODE_EXPRS:
120✔
3727
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
120✔
3728
        break;
120✔
3729
      case PHY_INDEF_ROWS_FUNC_CODE_FUNCS:
24,173✔
3730
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
24,173✔
3731
        break;
24,186✔
3732
      default:
×
3733
        break;
×
3734
    }
3735
  }
3736

3737
  return code;
24,181✔
3738
}
3739

3740
enum {
3741
  PHY_INERP_FUNC_CODE_BASE_NODE = 1,
3742
  PHY_INERP_FUNC_CODE_EXPR,
3743
  PHY_INERP_FUNC_CODE_FUNCS,
3744
  PHY_INERP_FUNC_CODE_TIME_RANGE,
3745
  PHY_INERP_FUNC_CODE_INTERVAL,
3746
  PHY_INERP_FUNC_CODE_INTERVAL_UNIT,
3747
  PHY_INERP_FUNC_CODE_FILL_MODE,
3748
  PHY_INERP_FUNC_CODE_FILL_VALUES,
3749
  PHY_INERP_FUNC_CODE_TIME_SERIES
3750
};
3751

3752
static int32_t physiInterpFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
2,362✔
3753
  const SInterpFuncPhysiNode* pNode = (const SInterpFuncPhysiNode*)pObj;
2,362✔
3754

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

3781
  return code;
2,362✔
3782
}
3783

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

3787
  int32_t code = TSDB_CODE_SUCCESS;
3,002✔
3788
  STlv*   pTlv = NULL;
3,002✔
3789
  tlvForEach(pDecoder, pTlv, code) {
25,472!
3790
    switch (pTlv->type) {
22,470!
3791
      case PHY_INERP_FUNC_CODE_BASE_NODE:
3,002✔
3792
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
3,002✔
3793
        break;
3,002✔
3794
      case PHY_INERP_FUNC_CODE_EXPR:
611✔
3795
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pExprs);
611✔
3796
        break;
611✔
3797
      case PHY_INERP_FUNC_CODE_FUNCS:
3,002✔
3798
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pFuncs);
3,002✔
3799
        break;
3,002✔
3800
      case PHY_INERP_FUNC_CODE_TIME_RANGE:
3,002✔
3801
        code = tlvDecodeObjFromTlv(pTlv, msgToTimeWindow, &pNode->timeRange);
3,002✔
3802
        break;
3,002✔
3803
      case PHY_INERP_FUNC_CODE_INTERVAL:
3,002✔
3804
        code = tlvDecodeI64(pTlv, &pNode->interval);
3,002✔
3805
        break;
3,002✔
3806
      case PHY_INERP_FUNC_CODE_INTERVAL_UNIT:
3,002✔
3807
        code = tlvDecodeI8(pTlv, &pNode->intervalUnit);
3,002✔
3808
        break;
3,002✔
3809
      case PHY_INERP_FUNC_CODE_FILL_MODE:
3,002✔
3810
        code = tlvDecodeEnum(pTlv, &pNode->fillMode, sizeof(pNode->fillMode));
3,002✔
3811
        break;
3,002✔
3812
      case PHY_INERP_FUNC_CODE_FILL_VALUES:
845✔
3813
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pFillValues);
845✔
3814
        break;
845✔
3815
      case PHY_INERP_FUNC_CODE_TIME_SERIES:
3,002✔
3816
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTimeSeries);
3,002✔
3817
        break;
3,002✔
3818
      default:
×
3819
        break;
×
3820
    }
3821
  }
3822

3823
  return code;
3,002✔
3824
}
3825

3826
enum {
3827
  PHY_FORECAST_FUNC_CODE_BASE_NODE = 1,
3828
  PHY_FORECAST_FUNC_CODE_EXPR,
3829
  PHY_FORECAST_FUNC_CODE_FUNCS,
3830
};
3831

3832
static int32_t physiForecastFuncNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
3833
  const SForecastFuncPhysiNode* pNode = (const SForecastFuncPhysiNode*)pObj;
×
3834

3835
  int32_t code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
×
3836
  if (TSDB_CODE_SUCCESS == code) {
×
3837
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_EXPR, nodeListToMsg, pNode->pExprs);
×
3838
  }
3839
  if (TSDB_CODE_SUCCESS == code) {
×
3840
    code = tlvEncodeObj(pEncoder, PHY_FORECAST_FUNC_CODE_FUNCS, nodeListToMsg, pNode->pFuncs);
×
3841
  }
3842

3843
  return code;
×
3844
}
3845

3846
static int32_t msgToPhysiForecastFuncNode(STlvDecoder* pDecoder, void* pObj) {
×
3847
  SForecastFuncPhysiNode* pNode = (SForecastFuncPhysiNode*)pObj;
×
3848

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

3867
  return code;
×
3868
}
3869

3870
enum { PHY_DATA_SINK_CODE_INPUT_DESC = 1 };
3871

3872
static int32_t physicDataSinkNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,720,782✔
3873
  const SDataSinkNode* pNode = (const SDataSinkNode*)pObj;
1,720,782✔
3874
  return tlvEncodeObj(pEncoder, PHY_DATA_SINK_CODE_INPUT_DESC, nodeToMsg, pNode->pInputDataBlockDesc);
1,720,782✔
3875
}
3876

3877
static int32_t msgToPhysicDataSinkNode(STlvDecoder* pDecoder, void* pObj) {
1,850,986✔
3878
  SDataSinkNode* pNode = (SDataSinkNode*)pObj;
1,850,986✔
3879

3880
  int32_t code = TSDB_CODE_SUCCESS;
1,850,986✔
3881
  STlv*   pTlv = NULL;
1,850,986✔
3882
  tlvForEach(pDecoder, pTlv, code) {
3,702,036!
3883
    switch (pTlv->type) {
1,850,997!
3884
      case PHY_DATA_SINK_CODE_INPUT_DESC:
1,850,997✔
3885
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pInputDataBlockDesc);
1,850,997✔
3886
        break;
1,851,050✔
3887
      default:
×
3888
        break;
×
3889
    }
3890
  }
3891

3892
  return code;
1,850,802✔
3893
}
3894

3895
enum { PHY_DISPATCH_CODE_SINK = 1 };
3896

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

3902
static int32_t msgToPhysiDispatchNode(STlvDecoder* pDecoder, void* pObj) {
1,841,278✔
3903
  SDataDispatcherNode* pNode = (SDataDispatcherNode*)pObj;
1,841,278✔
3904

3905
  int32_t code = TSDB_CODE_SUCCESS;
1,841,278✔
3906
  STlv*   pTlv = NULL;
1,841,278✔
3907
  tlvForEach(pDecoder, pTlv, code) {
3,682,654!
3908
    switch (pTlv->type) {
1,842,183!
3909
      case PHY_DISPATCH_CODE_SINK:
1,842,183✔
3910
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysicDataSinkNode, &pNode->sink);
1,842,183✔
3911
        break;
1,841,376✔
3912
      default:
×
3913
        break;
×
3914
    }
3915
  }
3916

3917
  return code;
1,839,525✔
3918
}
3919

3920
enum {
3921
  PHY_QUERY_INSERT_CODE_SINK = 1,
3922
  PHY_QUERY_INSERT_CODE_COLS,
3923
  PHY_QUERY_INSERT_CODE_TABLE_ID,
3924
  PHY_QUERY_INSERT_CODE_STABLE_ID,
3925
  PHY_QUERY_INSERT_CODE_TABLE_TYPE,
3926
  PHY_QUERY_INSERT_CODE_TABLE_NAME,
3927
  PHY_QUERY_INSERT_CODE_VG_ID,
3928
  PHY_QUERY_INSERT_CODE_EP_SET,
3929
  PHY_QUERY_INSERT_CODE_EXPLAIN
3930
};
3931

3932
static int32_t physiQueryInsertNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
162✔
3933
  const SQueryInserterNode* pNode = (const SQueryInserterNode*)pObj;
162✔
3934

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

3961
  return code;
162✔
3962
}
3963

3964
static int32_t msgToPhysiQueryInsertNode(STlvDecoder* pDecoder, void* pObj) {
169✔
3965
  SQueryInserterNode* pNode = (SQueryInserterNode*)pObj;
169✔
3966

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

4003
  return code;
169✔
4004
}
4005

4006
enum {
4007
  PHY_DELETER_CODE_SINK = 1,
4008
  PHY_DELETER_CODE_TABLE_ID,
4009
  PHY_DELETER_CODE_TABLE_TYPE,
4010
  PHY_DELETER_CODE_TABLE_FNAME,
4011
  PHY_DELETER_CODE_TS_COL_NAME,
4012
  PHY_DELETER_CODE_DELETE_TIME_RANGE,
4013
  PHY_DELETER_CODE_AFFECTED_ROWS,
4014
  PHY_DELETER_CODE_START_TS,
4015
  PHY_DELETER_CODE_END_TS
4016
};
4017

4018
static int32_t physiDeleteNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
9,223✔
4019
  const SDataDeleterNode* pNode = (const SDataDeleterNode*)pObj;
9,223✔
4020

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

4047
  return code;
9,223✔
4048
}
4049

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

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

4089
  return code;
9,006✔
4090
}
4091

4092
enum {
4093
  PHY_GROUP_CACHE_CODE_BASE_NODE = 1,
4094
  PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL,
4095
  PHY_GROUP_CACHE_CODE_GROUP_BY_UID,
4096
  PHY_GROUP_CACHE_CODE_GLOBAL_GROUP,
4097
  PHY_GROUP_CACHE_CODE_BATCH_FETCH,
4098
  PHY_GROUP_CACHE_CODE_GROUP_COLUMNS
4099
};
4100

4101
static int32_t physiGroupCacheNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,880✔
4102
  const SGroupCachePhysiNode* pNode = (const SGroupCachePhysiNode*)pObj;
8,880✔
4103

4104
  int32_t code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_BASE_NODE, physiNodeToMsg, &pNode->node);
8,880✔
4105
  if (TSDB_CODE_SUCCESS == code) {
8,880!
4106
    code = tlvEncodeObj(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLUMNS, nodeListToMsg, pNode->pGroupCols);
8,880✔
4107
  }
4108
  if (TSDB_CODE_SUCCESS == code) {
8,880!
4109
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL, pNode->grpColsMayBeNull);
8,880✔
4110
  }
4111
  if (TSDB_CODE_SUCCESS == code) {
8,880!
4112
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GROUP_BY_UID, pNode->grpByUid);
8,880✔
4113
  }
4114
  if (TSDB_CODE_SUCCESS == code) {
8,880!
4115
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_GLOBAL_GROUP, pNode->globalGrp);
8,880✔
4116
  }
4117
  if (TSDB_CODE_SUCCESS == code) {
8,880!
4118
    code = tlvEncodeBool(pEncoder, PHY_GROUP_CACHE_CODE_BATCH_FETCH, pNode->batchFetch);
8,880✔
4119
  }
4120

4121
  return code;
8,880✔
4122
}
4123

4124
static int32_t msgToPhysiGroupCacheNode(STlvDecoder* pDecoder, void* pObj) {
8,879✔
4125
  SGroupCachePhysiNode* pNode = (SGroupCachePhysiNode*)pObj;
8,879✔
4126

4127
  int32_t code = TSDB_CODE_SUCCESS;
8,879✔
4128
  STlv*   pTlv = NULL;
8,879✔
4129
  tlvForEach(pDecoder, pTlv, code) {
53,274!
4130
    switch (pTlv->type) {
44,395!
4131
      case PHY_GROUP_CACHE_CODE_BASE_NODE:
8,879✔
4132
        code = tlvDecodeObjFromTlv(pTlv, msgToPhysiNode, &pNode->node);
8,879✔
4133
        break;
8,879✔
4134
      case PHY_GROUP_CACHE_CODE_GROUP_COLUMNS:
×
4135
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pGroupCols);
×
4136
        break;
×
4137
      case PHY_GROUP_CACHE_CODE_GROUP_COLS_MAY_BE_NULL:
8,879✔
4138
        code = tlvDecodeBool(pTlv, &pNode->grpColsMayBeNull);
8,879✔
4139
        break;    
8,879✔
4140
      case PHY_GROUP_CACHE_CODE_GROUP_BY_UID:
8,879✔
4141
        code = tlvDecodeBool(pTlv, &pNode->grpByUid);
8,879✔
4142
        break;    
8,879✔
4143
      case PHY_GROUP_CACHE_CODE_GLOBAL_GROUP:
8,879✔
4144
        code = tlvDecodeBool(pTlv, &pNode->globalGrp);
8,879✔
4145
        break;    
8,879✔
4146
      case PHY_GROUP_CACHE_CODE_BATCH_FETCH:
8,879✔
4147
        code = tlvDecodeBool(pTlv, &pNode->batchFetch);
8,879✔
4148
        break;    
8,879✔
4149
      default:
×
4150
        break;
×
4151
    }
4152
  }
4153

4154
  return code;
8,879✔
4155
}
4156

4157

4158
enum {
4159
  PHY_DYN_QUERY_CTRL_CODE_BASE_NODE = 1,
4160
  PHY_DYN_QUERY_CTRL_CODE_QUERY_TYPE,
4161
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_BATCH_FETCH,
4162
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT0,
4163
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_VG_SLOT1,
4164
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT0,
4165
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_UID_SLOT1,
4166
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN0,
4167
  PHY_DYN_QUERY_CTRL_CODE_STB_JOIN_SRC_SCAN1,
4168
};
4169

4170
static int32_t physiDynQueryCtrlNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
8,880✔
4171
  const SDynQueryCtrlPhysiNode* pNode = (const SDynQueryCtrlPhysiNode*)pObj;
8,880✔
4172

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

4208
static int32_t msgToPhysiDynQueryCtrlNode(STlvDecoder* pDecoder, void* pObj) {
8,879✔
4209
  SDynQueryCtrlPhysiNode* pNode = (SDynQueryCtrlPhysiNode*)pObj;
8,879✔
4210

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

4247
  return code;
8,879✔
4248
}
4249

4250

4251

4252
enum { SUBPLAN_ID_CODE_QUERY_ID = 1, SUBPLAN_ID_CODE_GROUP_ID, SUBPLAN_ID_CODE_SUBPLAN_ID };
4253

4254
static int32_t subplanIdInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,723,663✔
4255
  const SSubplanId* pNode = (const SSubplanId*)pObj;
1,723,663✔
4256

4257
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
1,723,663✔
4258
  if (TSDB_CODE_SUCCESS == code) {
1,723,490!
4259
    code = tlvEncodeValueI32(pEncoder, pNode->groupId);
1,723,614✔
4260
  }
4261
  if (TSDB_CODE_SUCCESS == code) {
1,723,844!
4262
    code = tlvEncodeValueI32(pEncoder, pNode->subplanId);
1,724,110✔
4263
  }
4264

4265
  return code;
1,723,712✔
4266
}
4267

4268
static int32_t subplanIdToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4269
  const SSubplanId* pNode = (const SSubplanId*)pObj;
×
4270

4271
  int32_t code = tlvEncodeU64(pEncoder, SUBPLAN_ID_CODE_QUERY_ID, pNode->queryId);
×
4272
  if (TSDB_CODE_SUCCESS == code) {
×
4273
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_GROUP_ID, pNode->groupId);
×
4274
  }
4275
  if (TSDB_CODE_SUCCESS == code) {
×
4276
    code = tlvEncodeI32(pEncoder, SUBPLAN_ID_CODE_SUBPLAN_ID, pNode->subplanId);
×
4277
  }
4278

4279
  return code;
×
4280
}
4281

4282
static int32_t msgToSubplanIdInline(STlvDecoder* pDecoder, void* pObj) {
1,850,647✔
4283
  SSubplanId* pNode = (SSubplanId*)pObj;
1,850,647✔
4284

4285
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
1,850,647✔
4286
  if (TSDB_CODE_SUCCESS == code) {
1,850,633!
4287
    code = tlvDecodeValueI32(pDecoder, &pNode->groupId);
1,851,559✔
4288
  }
4289
  if (TSDB_CODE_SUCCESS == code) {
1,850,269!
4290
    code = tlvDecodeValueI32(pDecoder, &pNode->subplanId);
1,850,547✔
4291
  }
4292

4293
  return code;
1,850,653✔
4294
}
4295

4296
static int32_t msgToSubplanId(STlvDecoder* pDecoder, void* pObj) {
×
4297
  SSubplanId* pNode = (SSubplanId*)pObj;
×
4298

4299
  int32_t code = TSDB_CODE_SUCCESS;
×
4300
  STlv*   pTlv = NULL;
×
4301
  tlvForEach(pDecoder, pTlv, code) {
×
4302
    switch (pTlv->type) {
×
4303
      case SUBPLAN_ID_CODE_QUERY_ID:
×
4304
        code = tlvDecodeU64(pTlv, &pNode->queryId);
×
4305
        break;
×
4306
      case SUBPLAN_ID_CODE_GROUP_ID:
×
4307
        code = tlvDecodeI32(pTlv, &pNode->groupId);
×
4308
        break;
×
4309
      case SUBPLAN_ID_CODE_SUBPLAN_ID:
×
4310
        code = tlvDecodeI32(pTlv, &pNode->subplanId);
×
4311
        break;
×
4312
      default:
×
4313
        break;
×
4314
    }
4315
  }
4316

4317
  return code;
×
4318
}
4319

4320
enum {
4321
  SUBPLAN_CODE_INLINE_ATTRS = 1,
4322
  SUBPLAN_CODE_ROOT_NODE,
4323
  SUBPLAN_CODE_DATA_SINK,
4324
  SUBPLAN_CODE_TAG_COND,
4325
  SUBPLAN_CODE_TAG_INDEX_COND
4326
};
4327

4328
static int32_t subplanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
1,723,672✔
4329
  const SSubplan* pNode = (const SSubplan*)pObj;
1,723,672✔
4330

4331
  int32_t code = subplanIdInlineToMsg(&pNode->id, pEncoder);
1,723,672✔
4332
  if (TSDB_CODE_SUCCESS == code) {
1,723,719!
4333
    code = tlvEncodeValueEnum(pEncoder, pNode->subplanType);
1,723,766✔
4334
  }
4335
  if (TSDB_CODE_SUCCESS == code) {
1,723,194✔
4336
    code = tlvEncodeValueI32(pEncoder, pNode->msgType);
1,723,055✔
4337
  }
4338
  if (TSDB_CODE_SUCCESS == code) {
1,722,784✔
4339
    code = tlvEncodeValueI32(pEncoder, pNode->level);
1,722,718✔
4340
  }
4341
  if (TSDB_CODE_SUCCESS == code) {
1,722,657!
4342
    code = tlvEncodeValueCStr(pEncoder, pNode->dbFName);
1,722,691✔
4343
  }
4344
  if (TSDB_CODE_SUCCESS == code) {
1,722,927!
4345
    code = tlvEncodeValueCStr(pEncoder, pNode->user);
1,723,038✔
4346
  }
4347
  if (TSDB_CODE_SUCCESS == code) {
1,722,578!
4348
    code = queryNodeAddrInlineToMsg(&pNode->execNode, pEncoder);
1,722,673✔
4349
  }
4350
  if (TSDB_CODE_SUCCESS == code) {
1,722,818!
4351
    code = tlvEncodeValueBool(pEncoder, pNode->showRewrite);
1,722,940✔
4352
  }
4353
  if (TSDB_CODE_SUCCESS == code) {
1,722,607!
4354
    code = tlvEncodeValueI32(pEncoder, pNode->rowsThreshold);
1,722,765✔
4355
  }
4356
  if (TSDB_CODE_SUCCESS == code) {
1,722,264!
4357
    code = tlvEncodeValueBool(pEncoder, pNode->dynamicRowThreshold);
1,722,449✔
4358
  }
4359
  if (TSDB_CODE_SUCCESS == code) {
1,721,955✔
4360
    code = tlvEncodeValueBool(pEncoder, pNode->isView);
1,721,930✔
4361
  }
4362
  if (TSDB_CODE_SUCCESS == code) {
1,721,786!
4363
    code = tlvEncodeValueBool(pEncoder, pNode->isAudit);
1,721,926✔
4364
  }
4365

4366
  return code;
1,721,748✔
4367
}
4368

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

4372
  int32_t code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_INLINE_ATTRS, subplanInlineToMsg, pNode);
1,723,520✔
4373
  if (TSDB_CODE_SUCCESS == code) {
1,722,417!
4374
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_ROOT_NODE, nodeToMsg, pNode->pNode);
1,722,497✔
4375
  }
4376
  if (TSDB_CODE_SUCCESS == code) {
1,720,859!
4377
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_DATA_SINK, nodeToMsg, pNode->pDataSink);
1,720,998✔
4378
  }
4379
  if (TSDB_CODE_SUCCESS == code) {
1,719,761!
4380
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_COND, nodeToMsg, pNode->pTagCond);
1,720,192✔
4381
  }
4382
  if (TSDB_CODE_SUCCESS == code) {
1,719,978!
4383
    code = tlvEncodeObj(pEncoder, SUBPLAN_CODE_TAG_INDEX_COND, nodeToMsg, pNode->pTagIndexCond);
1,720,497✔
4384
  }
4385

4386
  return code;
1,720,873✔
4387
}
4388

4389
static int32_t msgToSubplanInline(STlvDecoder* pDecoder, void* pObj) {
1,851,214✔
4390
  SSubplan* pNode = (SSubplan*)pObj;
1,851,214✔
4391

4392
  int32_t code = msgToSubplanIdInline(pDecoder, &pNode->id);
1,851,214✔
4393
  if (TSDB_CODE_SUCCESS == code) {
1,850,643!
4394
    code = tlvDecodeValueEnum(pDecoder, &pNode->subplanType, sizeof(pNode->subplanType));
1,850,679✔
4395
  }
4396
  if (TSDB_CODE_SUCCESS == code) {
1,850,559✔
4397
    code = tlvDecodeValueI32(pDecoder, &pNode->msgType);
1,850,097✔
4398
  }
4399
  if (TSDB_CODE_SUCCESS == code) {
1,850,951✔
4400
    code = tlvDecodeValueI32(pDecoder, &pNode->level);
1,850,552✔
4401
  }
4402
  if (TSDB_CODE_SUCCESS == code) {
1,850,643✔
4403
    code = tlvDecodeValueCStr(pDecoder, pNode->dbFName);
1,850,295✔
4404
  }
4405
  if (TSDB_CODE_SUCCESS == code) {
1,852,065✔
4406
    code = tlvDecodeValueCStr(pDecoder, pNode->user);
1,851,787✔
4407
  }
4408
  if (TSDB_CODE_SUCCESS == code) {
1,852,056✔
4409
    code = msgToQueryNodeAddrInline(pDecoder, &pNode->execNode);
1,851,140✔
4410
  }
4411
  if (TSDB_CODE_SUCCESS == code) {
1,853,238✔
4412
    code = tlvDecodeValueBool(pDecoder, &pNode->showRewrite);
1,852,351✔
4413
  }
4414
  if (TSDB_CODE_SUCCESS == code) {
1,852,669✔
4415
    code = tlvDecodeValueI32(pDecoder, &pNode->rowsThreshold);
1,851,836✔
4416
  }
4417
  if (TSDB_CODE_SUCCESS == code) {
1,852,127✔
4418
    code = tlvDecodeValueBool(pDecoder, &pNode->dynamicRowThreshold);
1,851,350✔
4419
  }
4420
  if (TSDB_CODE_SUCCESS == code) {
1,852,079✔
4421
    code = tlvDecodeValueBool(pDecoder, &pNode->isView);
1,850,988✔
4422
  }
4423
  if (TSDB_CODE_SUCCESS == code) {
1,852,180✔
4424
    code = tlvDecodeValueBool(pDecoder, &pNode->isAudit);
1,851,097✔
4425
  }
4426
  return code;
1,851,133✔
4427
}
4428

4429
static int32_t msgToSubplan(STlvDecoder* pDecoder, void* pObj) {
1,850,910✔
4430
  SSubplan* pNode = (SSubplan*)pObj;
1,850,910✔
4431

4432
  int32_t code = TSDB_CODE_SUCCESS;
1,850,910✔
4433
  STlv*   pTlv = NULL;
1,850,910✔
4434
  tlvForEach(pDecoder, pTlv, code) {
7,484,820!
4435
    switch (pTlv->type) {
5,635,869!
4436
      case SUBPLAN_CODE_INLINE_ATTRS:
1,851,287✔
4437
        code = tlvDecodeObjFromTlv(pTlv, msgToSubplanInline, pNode);
1,851,287✔
4438
        break;
1,850,555✔
4439
      case SUBPLAN_CODE_ROOT_NODE:
1,851,092✔
4440
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pNode);
1,851,092✔
4441
        break;
1,849,834✔
4442
      case SUBPLAN_CODE_DATA_SINK:
1,849,872✔
4443
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pDataSink);
1,849,872✔
4444
        break;
1,849,868✔
4445
      case SUBPLAN_CODE_TAG_COND:
74,551✔
4446
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagCond);
74,551✔
4447
        break;
74,584✔
4448
      case SUBPLAN_CODE_TAG_INDEX_COND:
9,067✔
4449
        code = msgToNodeFromTlv(pTlv, (void**)&pNode->pTagIndexCond);
9,067✔
4450
        break;
9,069✔
4451
      default:
×
4452
        break;
×
4453
    }
4454
  }
4455

4456
  return code;
1,849,019✔
4457
}
4458

4459
enum { QUERY_PLAN_CODE_INLINE_ATTRS = 1, QUERY_PLAN_CODE_SUBPLANS };
4460

4461
static int32_t queryPlanInlineToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4462
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4463

4464
  int32_t code = tlvEncodeValueU64(pEncoder, pNode->queryId);
×
4465
  if (TSDB_CODE_SUCCESS == code) {
×
4466
    code = tlvEncodeValueI32(pEncoder, pNode->numOfSubplans);
×
4467
  }
4468

4469
  return code;
×
4470
}
4471

4472
static int32_t queryPlanToMsg(const void* pObj, STlvEncoder* pEncoder) {
×
4473
  const SQueryPlan* pNode = (const SQueryPlan*)pObj;
×
4474

4475
  int32_t code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_INLINE_ATTRS, queryPlanInlineToMsg, pNode);
×
4476
  if (TSDB_CODE_SUCCESS == code) {
×
4477
    code = tlvEncodeObj(pEncoder, QUERY_PLAN_CODE_SUBPLANS, nodeListToMsg, pNode->pSubplans);
×
4478
  }
4479

4480
  return code;
×
4481
}
4482

4483
static int32_t msgToQueryPlanInline(STlvDecoder* pDecoder, void* pObj) {
×
4484
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4485

4486
  int32_t code = tlvDecodeValueU64(pDecoder, &pNode->queryId);
×
4487
  if (TSDB_CODE_SUCCESS == code) {
×
4488
    code = tlvDecodeValueI32(pDecoder, &pNode->numOfSubplans);
×
4489
  }
4490

4491
  return code;
×
4492
}
4493

4494
static int32_t msgToQueryPlan(STlvDecoder* pDecoder, void* pObj) {
×
4495
  SQueryPlan* pNode = (SQueryPlan*)pObj;
×
4496

4497
  int32_t code = TSDB_CODE_SUCCESS;
×
4498
  STlv*   pTlv = NULL;
×
4499
  tlvForEach(pDecoder, pTlv, code) {
×
4500
    switch (pTlv->type) {
×
4501
      case QUERY_PLAN_CODE_INLINE_ATTRS:
×
4502
        code = tlvDecodeObjFromTlv(pTlv, msgToQueryPlanInline, pNode);
×
4503
        break;
×
4504
      case QUERY_PLAN_CODE_SUBPLANS:
×
4505
        code = msgToNodeListFromTlv(pTlv, (void**)&pNode->pSubplans);
×
4506
        break;
×
4507
      default:
×
4508
        break;
×
4509
    }
4510
  }
4511

4512
  return code;
×
4513
}
4514

4515
static int32_t specificNodeToMsg(const void* pObj, STlvEncoder* pEncoder) {
68,201,003✔
4516
  // nodesWarn("specificNodeToMsg node = %s, before tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4517
  int32_t code = TSDB_CODE_SUCCESS;
68,201,003✔
4518
  switch (nodeType(pObj)) {
68,201,003!
4519
    case QUERY_NODE_COLUMN:
13,347,958✔
4520
      code = columnNodeToMsg(pObj, pEncoder);
13,347,958✔
4521
      break;
13,192,483✔
4522
    case QUERY_NODE_VALUE:
5,345,658✔
4523
      code = valueNodeToMsg(pObj, pEncoder);
5,345,658✔
4524
      break;
5,344,957✔
4525
    case QUERY_NODE_OPERATOR:
1,428,015✔
4526
      code = operatorNodeToMsg(pObj, pEncoder);
1,428,015✔
4527
      break;
1,425,410✔
4528
    case QUERY_NODE_LOGIC_CONDITION:
319,126✔
4529
      code = logicConditionNodeToMsg(pObj, pEncoder);
319,126✔
4530
      break;
318,882✔
4531
    case QUERY_NODE_FUNCTION:
3,374,181✔
4532
      code = functionNodeToMsg(pObj, pEncoder);
3,374,181✔
4533
      break;
3,378,677✔
4534
    case QUERY_NODE_ORDER_BY_EXPR:
318,735✔
4535
      code = orderByExprNodeToMsg(pObj, pEncoder);
318,735✔
4536
      break;
318,634✔
4537
    case QUERY_NODE_LIMIT:
194,512✔
4538
      code = limitNodeToMsg(pObj, pEncoder);
194,512✔
4539
      break;
194,444✔
4540
    case QUERY_NODE_NODE_LIST:
45,175✔
4541
      code = nodeListNodeToMsg(pObj, pEncoder);
45,175✔
4542
      break;
45,159✔
4543
    case QUERY_NODE_TARGET:
11,262,341✔
4544
      code = targetNodeToMsg(pObj, pEncoder);
11,262,341✔
4545
      break;
11,191,198✔
4546
    case QUERY_NODE_DATABLOCK_DESC:
5,316,297✔
4547
      code = dataBlockDescNodeToMsg(pObj, pEncoder);
5,316,297✔
4548
      break;
5,304,856✔
4549
    case QUERY_NODE_SLOT_DESC:
20,509,650✔
4550
      code = slotDescNodeToMsg(pObj, pEncoder);
20,509,650✔
4551
      break;
20,329,024✔
4552
    case QUERY_NODE_DOWNSTREAM_SOURCE:
974,915✔
4553
      code = downstreamSourceNodeToMsg(pObj, pEncoder);
974,915✔
4554
      break;
974,883✔
4555
    case QUERY_NODE_LEFT_VALUE:
47,038✔
4556
      break;
47,038✔
4557
    case QUERY_NODE_WHEN_THEN:
7,556✔
4558
      code = whenThenNodeToMsg(pObj, pEncoder);
7,556✔
4559
      break;
7,556✔
4560
    case QUERY_NODE_CASE_WHEN:
5,284✔
4561
      code = caseWhenNodeToMsg(pObj, pEncoder);
5,284✔
4562
      break;
5,283✔
4563
    case QUERY_NODE_WINDOW_OFFSET:
828✔
4564
      code = windowOffsetNodeToMsg(pObj, pEncoder);
828✔
4565
      break;
828✔
4566
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
42,838✔
4567
      code = physiTagScanNodeToMsg(pObj, pEncoder);
42,838✔
4568
      break;
43,158✔
4569
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
13✔
4570
      code = physiScanNodeToMsg(pObj, pEncoder);
13✔
4571
      break;
13✔
4572
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
9,722✔
4573
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4574
      code = physiLastRowScanNodeToMsg(pObj, pEncoder);
9,722✔
4575
      break;
9,702✔
4576
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,182,629✔
4577
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4578
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4579
      code = physiTableScanNodeToMsg(pObj, pEncoder);
1,182,629✔
4580
      break;
1,181,415✔
4581
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
35,444✔
4582
      code = physiSysTableScanNodeToMsg(pObj, pEncoder);
35,444✔
4583
      break;
35,438✔
4584
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
521,323✔
4585
      code = physiProjectNodeToMsg(pObj, pEncoder);
521,323✔
4586
      break;
520,832✔
4587
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
81,722✔
4588
      code = physiMergeJoinNodeToMsg(pObj, pEncoder);
81,722✔
4589
      break;
81,711✔
4590
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
8,880✔
4591
      code = physiHashJoinNodeToMsg(pObj, pEncoder);
8,880✔
4592
      break;
8,880✔
4593
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
643,823✔
4594
      code = physiAggNodeToMsg(pObj, pEncoder);
643,823✔
4595
      break;
642,537✔
4596
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
672,443✔
4597
      code = physiExchangeNodeToMsg(pObj, pEncoder);
672,443✔
4598
      break;
672,413✔
4599
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
77,333✔
4600
      code = physiMergeNodeToMsg(pObj, pEncoder);
77,333✔
4601
      break;
77,330✔
4602
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
163,850✔
4603
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4604
      code = physiSortNodeToMsg(pObj, pEncoder);
163,850✔
4605
      break;
163,797✔
4606
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
80,652✔
4607
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4608
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4609
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4610
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4611
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4612
      code = physiIntervalNodeToMsg(pObj, pEncoder);
80,652✔
4613
      break;
80,484✔
4614
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
14,743✔
4615
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4616
      code = physiFillNodeToMsg(pObj, pEncoder);
14,743✔
4617
      break;
14,738✔
4618
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
3,879✔
4619
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4620
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4621
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4622
      code = physiSessionWindowNodeToMsg(pObj, pEncoder);
3,879✔
4623
      break;
3,879✔
4624
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
5,712✔
4625
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4626
      code = physiStateWindowNodeToMsg(pObj, pEncoder);
5,712✔
4627
      break;
5,712✔
4628
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
62✔
4629
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4630
      code = physiEventWindowNodeToMsg(pObj, pEncoder);
62✔
4631
      break;
62✔
4632
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
45✔
4633
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4634
      code = physiCountWindowNodeToMsg(pObj, pEncoder);
45✔
4635
      break;
45✔
4636
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4637
      code = physiAnomalyWindowNodeToMsg(pObj, pEncoder);
×
4638
      break;
×
4639
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
14,289✔
4640
      code = physiPartitionNodeToMsg(pObj, pEncoder);
14,289✔
4641
      break;
14,286✔
4642
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4643
      code = physiStreamPartitionNodeToMsg(pObj, pEncoder);
×
4644
      break;
×
4645
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
21,964✔
4646
      code = physiIndefRowsFuncNodeToMsg(pObj, pEncoder);
21,964✔
4647
      break;
21,961✔
4648
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
2,362✔
4649
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4650
      code = physiInterpFuncNodeToMsg(pObj, pEncoder);
2,362✔
4651
      break;
2,362✔
4652
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4653
      code = physiForecastFuncNodeToMsg(pObj, pEncoder);
×
4654
      break;
×
4655
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,711,682✔
4656
      code = physiDispatchNodeToMsg(pObj, pEncoder);
1,711,682✔
4657
      break;
1,710,558✔
4658
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
162✔
4659
      code = physiQueryInsertNodeToMsg(pObj, pEncoder);
162✔
4660
      break;
162✔
4661
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
9,223✔
4662
      code = physiDeleteNodeToMsg(pObj, pEncoder);
9,223✔
4663
      break;
9,223✔
4664
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
8,880✔
4665
      code = physiGroupCacheNodeToMsg(pObj, pEncoder);
8,880✔
4666
      break;
8,880✔
4667
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
8,880✔
4668
      code = physiDynQueryCtrlNodeToMsg(pObj, pEncoder);
8,880✔
4669
      break;
8,880✔
4670
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,724,001✔
4671
      code = subplanToMsg(pObj, pEncoder);
1,724,001✔
4672
      break;
1,720,861✔
4673
    case QUERY_NODE_PHYSICAL_PLAN:
×
4674
      code = queryPlanToMsg(pObj, pEncoder);
×
4675
      break;
×
4676
    default:
×
4677
      break;
×
4678
  }
4679
  if (TSDB_CODE_SUCCESS != code) {
67,775,809!
4680
    nodesError("specificNodeToMsg error node = %s", nodesNodeName(nodeType(pObj)));
×
4681
  }
4682
  // nodesWarn("specificNodeToMsg node = %s, after tlv count = %d", nodesNodeName(nodeType(pObj)), pEncoder->tlvCount);
4683
  return code;
67,892,179✔
4684
}
4685

4686
static int32_t msgToSpecificNode(STlvDecoder* pDecoder, void* pObj) {
78,627,333✔
4687
  int32_t code = TSDB_CODE_SUCCESS;
78,627,333✔
4688
  switch (nodeType(pObj)) {
78,627,333!
4689
    case QUERY_NODE_COLUMN:
15,521,305✔
4690
      code = msgToColumnNode(pDecoder, pObj);
15,521,305✔
4691
      break;
15,570,964✔
4692
    case QUERY_NODE_VALUE:
5,565,657✔
4693
      code = msgToValueNode(pDecoder, pObj);
5,565,657✔
4694
      break;
5,555,923✔
4695
    case QUERY_NODE_OPERATOR:
1,544,275✔
4696
      code = msgToOperatorNode(pDecoder, pObj);
1,544,275✔
4697
      break;
1,542,971✔
4698
    case QUERY_NODE_LOGIC_CONDITION:
327,643✔
4699
      code = msgToLogicConditionNode(pDecoder, pObj);
327,643✔
4700
      break;
327,544✔
4701
    case QUERY_NODE_FUNCTION:
3,775,861✔
4702
      code = msgToFunctionNode(pDecoder, pObj);
3,775,861✔
4703
      break;
3,769,061✔
4704
    case QUERY_NODE_ORDER_BY_EXPR:
328,881✔
4705
      code = msgToOrderByExprNode(pDecoder, pObj);
328,881✔
4706
      break;
328,799✔
4707
    case QUERY_NODE_LIMIT:
203,913✔
4708
      code = msgToLimitNode(pDecoder, pObj);
203,913✔
4709
      break;
203,759✔
4710
    case QUERY_NODE_NODE_LIST:
46,541✔
4711
      code = msgToNodeListNode(pDecoder, pObj);
46,541✔
4712
      break;
46,529✔
4713
    case QUERY_NODE_TARGET:
13,300,847✔
4714
      code = msgToTargetNode(pDecoder, pObj);
13,300,847✔
4715
      break;
13,252,815✔
4716
    case QUERY_NODE_DATABLOCK_DESC:
5,720,498✔
4717
      code = msgToDataBlockDescNode(pDecoder, pObj);
5,720,498✔
4718
      break;
5,719,350✔
4719
    case QUERY_NODE_SLOT_DESC:
24,070,400✔
4720
      code = msgToSlotDescNode(pDecoder, pObj);
24,070,400✔
4721
      break;
23,588,641✔
4722
    case QUERY_NODE_DOWNSTREAM_SOURCE:
1,031,812✔
4723
      code = msgToDownstreamSourceNode(pDecoder, pObj);
1,031,812✔
4724
    case QUERY_NODE_LEFT_VALUE:
1,079,974✔
4725
      break;
1,079,974✔
4726
    case QUERY_NODE_WHEN_THEN:
8,281✔
4727
      code = msgToWhenThenNode(pDecoder, pObj);
8,281✔
4728
      break;
8,281✔
4729
    case QUERY_NODE_CASE_WHEN:
5,696✔
4730
      code = msgToCaseWhenNode(pDecoder, pObj);
5,696✔
4731
      break;
5,696✔
4732
    case QUERY_NODE_WINDOW_OFFSET:
668✔
4733
      code = msgToWindowOffsetNode(pDecoder, pObj);
668✔
4734
      break;
668✔
4735
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN:
43,496✔
4736
      code = msgToPhysiTagScanNode(pDecoder, pObj);
43,496✔
4737
      break;
43,391✔
4738
    case QUERY_NODE_PHYSICAL_PLAN_BLOCK_DIST_SCAN:
9✔
4739
      code = msgToPhysiScanNode(pDecoder, pObj);
9✔
4740
      break;
10✔
4741
    case QUERY_NODE_PHYSICAL_PLAN_LAST_ROW_SCAN:
11,756✔
4742
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_COUNT_SCAN:
4743
      code = msgToPhysiLastRowScanNode(pDecoder, pObj);
11,756✔
4744
      break;
11,756✔
4745
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN:
1,288,295✔
4746
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_MERGE_SCAN:
4747
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SCAN:
4748
      code = msgToPhysiTableScanNode(pDecoder, pObj);
1,288,295✔
4749
      break;
1,287,539✔
4750
    case QUERY_NODE_PHYSICAL_PLAN_SYSTABLE_SCAN:
35,605✔
4751
      code = msgToPhysiSysTableScanNode(pDecoder, pObj);
35,605✔
4752
      break;
35,593✔
4753
    case QUERY_NODE_PHYSICAL_PLAN_PROJECT:
569,588✔
4754
      code = msgToPhysiProjectNode(pDecoder, pObj);
569,588✔
4755
      break;
569,447✔
4756
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN:
89,038✔
4757
      code = msgToPhysiMergeJoinNode(pDecoder, pObj);
89,038✔
4758
      break;
89,023✔
4759
    case QUERY_NODE_PHYSICAL_PLAN_HASH_JOIN:
8,879✔
4760
      code = msgToPhysiHashJoinNode(pDecoder, pObj);
8,879✔
4761
      break;
8,879✔
4762
    case QUERY_NODE_PHYSICAL_PLAN_HASH_AGG:
704,745✔
4763
      code = msgToPhysiAggNode(pDecoder, pObj);
704,745✔
4764
      break;
704,263✔
4765
    case QUERY_NODE_PHYSICAL_PLAN_EXCHANGE:
705,002✔
4766
      code = msgToPhysiExchangeNode(pDecoder, pObj);
705,002✔
4767
      break;
704,934✔
4768
    case QUERY_NODE_PHYSICAL_PLAN_MERGE:
77,647✔
4769
      code = msgToPhysiMergeNode(pDecoder, pObj);
77,647✔
4770
      break;
77,641✔
4771
    case QUERY_NODE_PHYSICAL_PLAN_SORT:
168,384✔
4772
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_SORT:
4773
      code = msgToPhysiSortNode(pDecoder, pObj);
168,384✔
4774
      break;
168,347✔
4775
    case QUERY_NODE_PHYSICAL_PLAN_HASH_INTERVAL:
83,703✔
4776
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ALIGNED_INTERVAL:
4777
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERVAL:
4778
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_INTERVAL:
4779
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_INTERVAL:
4780
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_MID_INTERVAL:
4781
      code = msgToPhysiIntervalNode(pDecoder, pObj);
83,703✔
4782
      break;
83,674✔
4783
    case QUERY_NODE_PHYSICAL_PLAN_FILL:
14,710✔
4784
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FILL:
4785
      code = msgToPhysiFillNode(pDecoder, pObj);
14,710✔
4786
      break;
14,710✔
4787
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_SESSION:
3,880✔
4788
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SESSION:
4789
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_SEMI_SESSION:
4790
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_FINAL_SESSION:
4791
      code = msgToPhysiSessionWindowNode(pDecoder, pObj);
3,880✔
4792
      break;
3,879✔
4793
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_STATE:
6,136✔
4794
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_STATE:
4795
      code = msgToPhysiStateWindowNode(pDecoder, pObj);
6,136✔
4796
      break;
6,136✔
4797
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_EVENT:
70✔
4798
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_EVENT:
4799
      code = msgToPhysiEventWindowNode(pDecoder, pObj);
70✔
4800
      break;
70✔
4801
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_COUNT:
41✔
4802
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_COUNT:
4803
      code = msgToPhysiCountWindowNode(pDecoder, pObj);
41✔
4804
      break;
41✔
4805
    case QUERY_NODE_PHYSICAL_PLAN_MERGE_ANOMALY:
×
4806
      code = msgToPhysiAnomalyWindowNode(pDecoder, pObj);
×
4807
      break;
×
4808
    case QUERY_NODE_PHYSICAL_PLAN_PARTITION:
13,883✔
4809
      code = msgToPhysiPartitionNode(pDecoder, pObj);
13,883✔
4810
      break;
13,877✔
4811
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_PARTITION:
×
4812
      code = msgToPhysiStreamPartitionNode(pDecoder, pObj);
×
4813
      break;
×
4814
    case QUERY_NODE_PHYSICAL_PLAN_INDEF_ROWS_FUNC:
24,185✔
4815
      code = msgToPhysiIndefRowsFuncNode(pDecoder, pObj);
24,185✔
4816
      break;
24,178✔
4817
    case QUERY_NODE_PHYSICAL_PLAN_INTERP_FUNC:
3,002✔
4818
    case QUERY_NODE_PHYSICAL_PLAN_STREAM_INTERP_FUNC:
4819
      code = msgToPhysiInterpFuncNode(pDecoder, pObj);
3,002✔
4820
      break;
3,002✔
4821
    case QUERY_NODE_PHYSICAL_PLAN_FORECAST_FUNC:
×
4822
      code = msgToPhysiForecastFuncNode(pDecoder, pObj);
×
4823
      break;
×
4824
    case QUERY_NODE_PHYSICAL_PLAN_DISPATCH:
1,841,891✔
4825
      code = msgToPhysiDispatchNode(pDecoder, pObj);
1,841,891✔
4826
      break;
1,840,543✔
4827
    case QUERY_NODE_PHYSICAL_PLAN_QUERY_INSERT:
169✔
4828
      code = msgToPhysiQueryInsertNode(pDecoder, pObj);
169✔
4829
      break;
169✔
4830
    case QUERY_NODE_PHYSICAL_PLAN_DELETE:
9,006✔
4831
      code = msgToPhysiDeleteNode(pDecoder, pObj);
9,006✔
4832
      break;
9,006✔
4833
    case QUERY_NODE_PHYSICAL_PLAN_GROUP_CACHE:
8,879✔
4834
      code = msgToPhysiGroupCacheNode(pDecoder, pObj);
8,879✔
4835
      break;
8,879✔
4836
    case QUERY_NODE_PHYSICAL_PLAN_DYN_QUERY_CTRL:
8,879✔
4837
      code = msgToPhysiDynQueryCtrlNode(pDecoder, pObj);
8,879✔
4838
      break;
8,879✔
4839
    case QUERY_NODE_PHYSICAL_SUBPLAN:
1,850,936✔
4840
      code = msgToSubplan(pDecoder, pObj);
1,850,936✔
4841
      break;
1,849,833✔
4842
    case QUERY_NODE_PHYSICAL_PLAN:
×
4843
      code = msgToQueryPlan(pDecoder, pObj);
×
4844
      break;
×
4845
    default:
×
4846
      break;
×
4847
  }
4848
  if (TSDB_CODE_SUCCESS != code) {
78,568,674!
4849
    nodesError("msgToSpecificNode error node = %s", nodesNodeName(nodeType(pObj)));
×
4850
  }
4851
  return code;
77,827,644✔
4852
}
4853

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

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

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

4867
static int32_t nodeListToMsg(const void* pObj, STlvEncoder* pEncoder) {
14,841,444✔
4868
  const SNodeList* pList = (const SNodeList*)pObj;
14,841,444✔
4869

4870
  SNode* pNode = NULL;
14,841,444✔
4871
  FOREACH(pNode, pList) {
57,855,032!
4872
    int32_t code = nodeToMsg(pNode, pEncoder);
43,269,476✔
4873
    if (TSDB_CODE_SUCCESS != code) {
43,013,588!
4874
      return code;
×
4875
    }
4876
  }
4877

4878
  return TSDB_CODE_SUCCESS;
14,585,556✔
4879
}
4880
enum {
4881
  SARRAY_CODE_CAPACITY = 1,
4882
  SARRAY_CODE_ELEMSIZE,
4883
  SARRAY_CODE_SIZE,
4884
  SARRAY_CODE_PDATA
4885
};
4886

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

4905

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

4911
  while (TSDB_CODE_SUCCESS == code && !tlvDecodeEnd(pDecoder)) {
66,601,472✔
4912
    SNode* pNode = NULL;
50,375,150✔
4913
    code = msgToNode(pDecoder, (void**)&pNode);
50,375,150✔
4914
    if (TSDB_CODE_SUCCESS == code) {
49,600,111!
4915
      code = nodesListAppend(pList, pNode);
49,604,806✔
4916
    }
4917
  }
4918
  if (TSDB_CODE_SUCCESS == code) {
16,151,151!
4919
    *pObj = pList;
16,151,151✔
4920
  } else {
4921
    nodesDestroyList(pList);
×
4922
  }
4923
  return code;
16,150,546✔
4924
}
4925

4926
static int32_t msgToSArray(STlv* pTlv, void** pObj){
159✔
4927
  SArray* pArray = NULL;
159✔
4928
  uint32_t capacity = 0;
159✔
4929
  uint32_t elemSize = 0;
159✔
4930
  uint32_t actualSize;
4931
  int32_t decodeFieldNum = 0;;
159✔
4932
  int32_t code = TSDB_CODE_SUCCESS;
159✔
4933
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
159✔
4934
  STlv*   pTlvTemp = NULL;
159✔
4935
  STlv*   pDataTlv = NULL;
159✔
4936

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

4970
  if (pDataTlv != NULL) {
159!
4971
    pArray = taosArrayInit(capacity, elemSize);
×
4972
    if (NULL == pArray) {
×
4973
      return terrno;
×
4974
    }
4975
    pArray->size = actualSize;
×
4976
    if (TSDB_CODE_SUCCESS != code || pTlvTemp == NULL) {
×
4977
      taosArrayDestroy(pArray);
×
4978
      return TSDB_CODE_OUT_OF_MEMORY;
×
4979
    }
4980
    code = tlvDecodeBinary(pDataTlv, pArray->pData);
×
4981
  }
4982
  *pObj = pArray;
159✔
4983
  return code;
159✔
4984
}
4985

4986

4987
static int32_t msgToNodeListFromTlv(STlv* pTlv, void** pObj) {
16,118,325✔
4988
  STlvDecoder decoder = {.bufSize = pTlv->len, .offset = 0, .pBuf = pTlv->value};
16,118,325✔
4989
  return msgToNodeList(&decoder, pObj);
16,118,325✔
4990
}
4991

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

4998
  STlvEncoder encoder;
4999
  int32_t     code = initTlvEncoder(&encoder);
1,725,844✔
5000
  if (TSDB_CODE_SUCCESS == code) {
1,726,129!
5001
    code = nodeToMsg(pNode, &encoder);
1,726,137✔
5002
  }
5003
  if (TSDB_CODE_SUCCESS == code) {
1,721,002!
5004
    endTlvEncode(&encoder, pMsg, pLen);
1,721,011✔
5005
  }
5006
  clearTlvEncoder(&encoder);
1,720,877✔
5007

5008
  terrno = code;
1,721,018✔
5009
  return code;
1,721,032✔
5010
}
5011

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

5017
  STlvDecoder decoder = {.bufSize = len, .offset = 0, .pBuf = pMsg};
1,851,978✔
5018
  int32_t     code = msgToNode(&decoder, (void**)pNode);
1,851,978✔
5019
  if (TSDB_CODE_SUCCESS != code) {
1,849,658!
5020
    nodesDestroyNode(*pNode);
×
5021
    *pNode = NULL;
×
5022
  }
5023

5024
  terrno = code;
1,849,658✔
5025
  return code;
1,849,429✔
5026
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc