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

taosdata / TDengine / #4756

25 Sep 2025 05:58AM UTC coverage: 58.829% (+0.2%) from 58.63%
#4756

push

travis-ci

web-flow
enh: taos command line support '-uroot' on windows (#33055)

135574 of 293169 branches covered (46.24%)

Branch coverage included in aggregate %.

204395 of 284720 relevant lines covered (71.79%)

18747092.16 hits per line

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

60.49
/source/common/src/msg/tmsg.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
#define _DEFAULT_SOURCE
17
#include "tmsg.h"
18
#include "tglobal.h"
19

20
#undef TD_MSG_NUMBER_
21
#undef TD_MSG_DICT_
22
#undef TD_MSG_RANGE_CODE_
23
#define TD_MSG_INFO_
24
#undef TD_MSG_TYPE_INFO_
25
#undef TD_MSG_SEG_CODE_
26
#include "tmsgdef.h"
27

28
#undef TD_MSG_NUMBER_
29
#undef TD_MSG_INFO_
30
#undef TD_MSG_TYPE_INFO_
31
#undef TD_MSG_RANGE_CODE_
32
#define TD_MSG_DICT_
33
#undef TD_MSG_SEG_CODE_
34
#include "tmsgdef.h"
35

36
#undef TD_MSG_NUMBER_
37
#undef TD_MSG_INFO_
38
#undef TD_MSG_TYPE_INFO_
39
#undef TD_MSG_DICT_
40
#undef TD_MSG_SEG_CODE_
41
#define TD_MSG_RANGE_CODE_
42
#include "tmsgdef.h"
43

44
#include "tanalytics.h"
45
#include "tcol.h"
46
#include "tlog.h"
47
#include "streamMsg.h"
48

49
#if defined(WINDOWS)
50
#include <IPHlpApi.h>
51
#include <WS2tcpip.h>
52
#include <Winsock2.h>
53
#endif
54

55
#define DECODESQL()                                                               \
56
  do {                                                                            \
57
    if (!tDecodeIsEnd(&decoder)) {                                                \
58
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sqlLen));                       \
59
      if (pReq->sqlLen > 0) {                                                     \
60
        TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, (void **)&pReq->sql, NULL)); \
61
      }                                                                           \
62
    }                                                                             \
63
  } while (0)
64

65
#define ENCODESQL()                                                                       \
66
  do {                                                                                    \
67
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sqlLen));                                  \
68
    if (pReq->sqlLen > 0) {                                                               \
69
      TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)pReq->sql, pReq->sqlLen)); \
70
    }                                                                                     \
71
  } while (0)
72

73
#define FREESQL()                \
74
  do {                           \
75
    if (pReq->sql != NULL) {     \
76
      taosMemoryFree(pReq->sql); \
77
    }                            \
78
    pReq->sql = NULL;            \
79
  } while (0)
80

81
static int32_t tSerializeSMonitorParas(SEncoder *encoder, const SMonitorParas *pMonitorParas) {
862,291✔
82
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pMonitorParas->tsEnableMonitor));
1,724,582!
83
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pMonitorParas->tsMonitorInterval));
1,724,582!
84
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pMonitorParas->tsSlowLogScope));
1,724,582!
85
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pMonitorParas->tsSlowLogMaxLen));
1,724,582!
86
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pMonitorParas->tsSlowLogThreshold));
1,724,582!
87
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pMonitorParas->tsSlowLogThresholdTest));  // Obsolete
1,724,582!
88
  TAOS_CHECK_RETURN(tEncodeCStr(encoder, pMonitorParas->tsSlowLogExceptDb));
1,724,582!
89
  return 0;
862,291✔
90
}
91

92
static int32_t tDeserializeSMonitorParas(SDecoder *decoder, SMonitorParas *pMonitorParas) {
142,049✔
93
  TAOS_CHECK_RETURN(tDecodeI8(decoder, (int8_t *)&pMonitorParas->tsEnableMonitor));
284,097!
94
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pMonitorParas->tsMonitorInterval));
284,096!
95
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pMonitorParas->tsSlowLogScope));
284,093!
96
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pMonitorParas->tsSlowLogMaxLen));
284,090!
97
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pMonitorParas->tsSlowLogThreshold));
284,091!
98
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pMonitorParas->tsSlowLogThresholdTest));  // Obsolete
284,092!
99
  TAOS_CHECK_RETURN(tDecodeCStrTo(decoder, pMonitorParas->tsSlowLogExceptDb));
142,046!
100
  return 0;
142,051✔
101
}
102

103
static int32_t tDecodeSVAlterTbReqCommon(SDecoder *pDecoder, SVAlterTbReq *pReq);
104
static int32_t tDecodeSBatchDeleteReqCommon(SDecoder *pDecoder, SBatchDeleteReq *pReq);
105
static int32_t tEncodeTableTSMAInfoRsp(SEncoder *pEncoder, const STableTSMAInfoRsp *pRsp);
106
static int32_t tDecodeTableTSMAInfoRsp(SDecoder *pDecoder, STableTSMAInfoRsp *pRsp);
107

108
int32_t tInitSubmitMsgIter(const SSubmitReq *pMsg, SSubmitMsgIter *pIter) {
×
109
  if (pMsg == NULL) {
×
110
    return terrno = TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP;
×
111
  }
112

113
  pIter->totalLen = htonl(pMsg->length);
×
114
  pIter->numOfBlocks = htonl(pMsg->numOfBlocks);
×
115
  if (!(pIter->totalLen > 0)) {
×
116
    return terrno = TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP;
×
117
  }
118
  pIter->len = 0;
×
119
  pIter->pMsg = pMsg;
×
120
  if (pIter->totalLen <= sizeof(SSubmitReq)) {
×
121
    return terrno = TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP;
×
122
  }
123

124
  return 0;
×
125
}
126

127
int32_t tGetSubmitMsgNext(SSubmitMsgIter *pIter, SSubmitBlk **pPBlock) {
×
128
  if (!(pIter->len >= 0)) {
×
129
    return terrno = TSDB_CODE_INVALID_MSG_LEN;
×
130
  }
131

132
  if (pIter->len == 0) {
×
133
    pIter->len += sizeof(SSubmitReq);
×
134
  } else {
135
    if (pIter->len >= pIter->totalLen) {
×
136
      return terrno = TSDB_CODE_INVALID_MSG_LEN;
×
137
    }
138

139
    pIter->len += (sizeof(SSubmitBlk) + pIter->dataLen + pIter->schemaLen);
×
140
    if (!(pIter->len > 0)) {
×
141
      return terrno = TSDB_CODE_INVALID_MSG_LEN;
×
142
    }
143
  }
144

145
  if (pIter->len > pIter->totalLen) {
×
146
    *pPBlock = NULL;
×
147
    return terrno = TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP;
×
148
  }
149

150
  if (pIter->len == pIter->totalLen) {
×
151
    *pPBlock = NULL;
×
152
  } else {
153
    *pPBlock = (SSubmitBlk *)POINTER_SHIFT(pIter->pMsg, pIter->len);
×
154
    pIter->uid = htobe64((*pPBlock)->uid);
×
155
    pIter->suid = htobe64((*pPBlock)->suid);
×
156
    pIter->sversion = htonl((*pPBlock)->sversion);
×
157
    pIter->dataLen = htonl((*pPBlock)->dataLen);
×
158
    pIter->schemaLen = htonl((*pPBlock)->schemaLen);
×
159
    pIter->numOfRows = htonl((*pPBlock)->numOfRows);
×
160
  }
161
  return 0;
×
162
}
163

164
int32_t tInitSubmitBlkIter(SSubmitMsgIter *pMsgIter, SSubmitBlk *pBlock, SSubmitBlkIter *pIter) {
×
165
  if (pMsgIter->dataLen <= 0) {
×
166
    return TSDB_CODE_INVALID_PARA;
×
167
  }
168
  pIter->totalLen = pMsgIter->dataLen;
×
169
  pIter->len = 0;
×
170
  pIter->row = (STSRow *)(pBlock->data + pMsgIter->schemaLen);
×
171
  return 0;
×
172
}
173

174
STSRow *tGetSubmitBlkNext(SSubmitBlkIter *pIter) {
×
175
  STSRow *row = pIter->row;
×
176

177
  if (pIter->len >= pIter->totalLen) {
×
178
    return NULL;
×
179
  } else {
180
    pIter->len += TD_ROW_LEN(row);
×
181
    if (pIter->len < pIter->totalLen) {
×
182
      pIter->row = POINTER_SHIFT(row, TD_ROW_LEN(row));
×
183
    }
184
    return row;
×
185
  }
186
}
187

188
int32_t tEncodeSEpSet(SEncoder *pEncoder, const SEpSet *pEp) {
42,952,226✔
189
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pEp->inUse));
85,904,452!
190
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pEp->numOfEps));
85,904,452!
191
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; i++) {
257,730,765✔
192
    TAOS_CHECK_RETURN(tEncodeU16(pEncoder, pEp->eps[i].port));
429,557,078!
193
    TAOS_CHECK_RETURN(tEncodeCStrWithLen(pEncoder, pEp->eps[i].fqdn, TSDB_FQDN_LEN));
429,557,078!
194
  }
195
  return 0;
42,952,226✔
196
}
197

198
int32_t tDecodeSEpSet(SDecoder *pDecoder, SEpSet *pEp) {
385,940✔
199
  TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pEp->inUse));
771,887!
200
  TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pEp->numOfEps));
771,880!
201
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; i++) {
2,314,870✔
202
    TAOS_CHECK_RETURN(tDecodeU16(pDecoder, &pEp->eps[i].port));
3,857,543!
203
    TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pEp->eps[i].fqdn));
1,928,712!
204
  }
205
  return 0;
386,039✔
206
}
207

208
int32_t tEncodeSQueryNodeAddr(SEncoder *pEncoder, SQueryNodeAddr *pAddr) {
748,912✔
209
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pAddr->nodeId));
1,497,824!
210
  TAOS_CHECK_RETURN(tEncodeSEpSet(pEncoder, &pAddr->epSet));
748,912✔
211
  return 0;
749,436✔
212
}
213

214
int32_t tEncodeSQueryNodeLoad(SEncoder *pEncoder, SQueryNodeLoad *pLoad) {
748,909✔
215
  TAOS_CHECK_RETURN(tEncodeSQueryNodeAddr(pEncoder, &pLoad->addr));
748,909✔
216
  TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pLoad->load));
1,498,796!
217
  return 0;
749,398✔
218
}
219

220
int32_t tDecodeSQueryNodeAddr(SDecoder *pDecoder, SQueryNodeAddr *pAddr) {
142,450✔
221
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pAddr->nodeId));
284,900!
222
  TAOS_CHECK_RETURN(tDecodeSEpSet(pDecoder, &pAddr->epSet));
142,450!
223
  return 0;
142,450✔
224
}
225

226
int32_t tDecodeSQueryNodeLoad(SDecoder *pDecoder, SQueryNodeLoad *pLoad) {
142,450✔
227
  TAOS_CHECK_RETURN(tDecodeSQueryNodeAddr(pDecoder, &pLoad->addr));
142,450!
228
  TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pLoad->load));
284,900!
229
  return 0;
142,450✔
230
}
231

232
int32_t taosEncodeSEpSet(void **buf, const SEpSet *pEp) {
18,076✔
233
  int32_t tlen = 0;
18,076✔
234
  tlen += taosEncodeFixedI8(buf, pEp->inUse);
18,076✔
235
  tlen += taosEncodeFixedI8(buf, pEp->numOfEps);
18,076✔
236
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; i++) {
108,456✔
237
    tlen += taosEncodeFixedU16(buf, pEp->eps[i].port);
90,380✔
238
    tlen += taosEncodeString(buf, pEp->eps[i].fqdn);
180,760✔
239
  }
240
  return tlen;
18,076✔
241
}
242

243
void *taosDecodeSEpSet(const void *buf, SEpSet *pEp) {
4,968✔
244
  buf = taosDecodeFixedI8(buf, &pEp->inUse);
4,968✔
245
  buf = taosDecodeFixedI8(buf, &pEp->numOfEps);
4,968✔
246
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; i++) {
29,808✔
247
    buf = taosDecodeFixedU16(buf, &pEp->eps[i].port);
24,840!
248
    buf = taosDecodeStringTo(buf, pEp->eps[i].fqdn);
49,680✔
249
  }
250
  return (void *)buf;
4,968✔
251
}
252

253
static int32_t tSerializeSClientHbReq(SEncoder *pEncoder, const SClientHbReq *pReq) {
105,038✔
254
  TAOS_CHECK_RETURN(tEncodeSClientHbKey(pEncoder, &pReq->connKey));
210,076!
255

256
  if (pReq->connKey.connType == CONN_TYPE__QUERY) {
105,038✔
257
    TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pReq->app.appId));
210,064!
258
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pReq->app.pid));
210,064!
259
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pReq->app.name));
210,064!
260
    TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pReq->app.startTime));
210,064!
261
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.numOfInsertsReq));
210,064!
262
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.numOfInsertRows));
210,064!
263
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.insertElapsedTime));
210,064!
264
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.insertBytes));
210,064!
265
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.fetchBytes));
210,064!
266
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.queryElapsedTime));
210,064!
267
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.numOfSlowQueries));
210,064!
268
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.totalRequests));
210,064!
269
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pReq->app.summary.currentRequests));
210,064!
270

271
    int32_t queryNum = 0;
105,032✔
272
    if (pReq->query) {
105,032✔
273
      queryNum = 1;
103,712✔
274
      TAOS_CHECK_RETURN(tEncodeI32(pEncoder, queryNum));
103,712!
275
      TAOS_CHECK_RETURN(tEncodeU32(pEncoder, pReq->query->connId));
207,424!
276

277
      int32_t num = taosArrayGetSize(pReq->query->queryDesc);
103,712✔
278
      TAOS_CHECK_RETURN(tEncodeI32(pEncoder, num));
103,712!
279

280
      for (int32_t i = 0; i < num; ++i) {
119,936✔
281
        SQueryDesc *desc = taosArrayGet(pReq->query->queryDesc, i);
16,224✔
282
        TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, desc->sql));
32,448!
283
        TAOS_CHECK_RETURN(tEncodeU64(pEncoder, desc->queryId));
32,448!
284
        TAOS_CHECK_RETURN(tEncodeI64(pEncoder, desc->useconds));
32,448!
285
        TAOS_CHECK_RETURN(tEncodeI64(pEncoder, desc->stime));
32,448!
286
        TAOS_CHECK_RETURN(tEncodeI64(pEncoder, desc->reqRid));
32,448!
287
        TAOS_CHECK_RETURN(tEncodeI8(pEncoder, desc->stableQuery));
32,448!
288
        TAOS_CHECK_RETURN(tEncodeI8(pEncoder, desc->isSubQuery));
32,448!
289
        TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, desc->fqdn));
32,448!
290
        TAOS_CHECK_RETURN(tEncodeI32(pEncoder, desc->subPlanNum));
32,448!
291

292
        int32_t snum = desc->subDesc ? taosArrayGetSize(desc->subDesc) : 0;
16,224!
293
        TAOS_CHECK_RETURN(tEncodeI32(pEncoder, snum));
16,224!
294
        for (int32_t m = 0; m < snum; ++m) {
37,604✔
295
          SQuerySubDesc *sDesc = taosArrayGet(desc->subDesc, m);
21,380✔
296
          TAOS_CHECK_RETURN(tEncodeI64(pEncoder, sDesc->tid));
42,760!
297
          TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, sDesc->status));
42,760!
298
        }
299
      }
300
    } else {
301
      TAOS_CHECK_RETURN(tEncodeI32(pEncoder, queryNum));
1,320!
302
    }
303
  }
304

305
  int32_t kvNum = taosHashGetSize(pReq->info);
105,038✔
306
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, kvNum));
105,038!
307
  void *pIter = taosHashIterate(pReq->info, NULL);
105,038✔
308
  while (pIter != NULL) {
124,324✔
309
    SKv *kv = pIter;
19,286✔
310
    TAOS_CHECK_RETURN(tEncodeSKv(pEncoder, kv));
19,286!
311
    pIter = taosHashIterate(pReq->info, pIter);
19,286✔
312
  }
313
  TAOS_CHECK_RETURN(tEncodeU32(pEncoder, pReq->userIp));
210,076!
314
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pReq->userApp));
210,076!
315

316
  return 0;
105,038✔
317
}
318

319
static int32_t tDeserializeSClientHbReq(SDecoder *pDecoder, SClientHbReq *pReq) {
305,399✔
320
  int32_t code = 0;
305,399✔
321
  int32_t line = 0;
305,399✔
322
  TAOS_CHECK_RETURN(tDecodeSClientHbKey(pDecoder, &pReq->connKey));
610,807!
323

324
  if (pReq->connKey.connType == CONN_TYPE__QUERY) {
305,408✔
325
    TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pReq->app.appId));
610,769!
326
    TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pReq->app.pid));
610,782!
327
    TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pReq->app.name));
305,395!
328
    TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pReq->app.startTime));
610,769!
329
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.numOfInsertsReq));
610,787!
330
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.numOfInsertRows));
610,771!
331
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.insertElapsedTime));
610,765!
332
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.insertBytes));
610,776!
333
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.fetchBytes));
610,755!
334
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.queryElapsedTime));
610,744!
335
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.numOfSlowQueries));
610,750!
336
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.totalRequests));
610,748!
337
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pReq->app.summary.currentRequests));
610,745!
338

339
    int32_t queryNum = 0;
305,373✔
340
    TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &queryNum));
305,353!
341
    if (queryNum) {
305,353✔
342
      pReq->query = taosMemoryCalloc(1, sizeof(*pReq->query));
299,413!
343
      if (NULL == pReq->query) {
299,464!
344
        return terrno;
×
345
      }
346
      code = tDecodeU32(pDecoder, &pReq->query->connId);
299,464✔
347
      TAOS_CHECK_GOTO(code, &line, _error);
299,466!
348

349
      int32_t num = 0;
299,466✔
350
      code = tDecodeI32(pDecoder, &num);
299,461✔
351
      TAOS_CHECK_GOTO(code, &line, _error);
299,461!
352

353
      if (num > 0) {
299,461✔
354
        pReq->query->queryDesc = taosArrayInit(num, sizeof(SQueryDesc));
206,639✔
355
        if (NULL == pReq->query->queryDesc) {
206,628!
356
          return terrno;
×
357
        }
358

359
        for (int32_t i = 0; i < num; ++i) {
449,871✔
360
          SQueryDesc desc = {0};
243,237✔
361
          code = tDecodeCStrTo(pDecoder, desc.sql);
243,237✔
362
          TAOS_CHECK_GOTO(code, &line, _error);
243,249!
363

364
          code = tDecodeU64(pDecoder, &desc.queryId);
243,245✔
365
          TAOS_CHECK_GOTO(code, &line, _error);
243,245!
366

367
          code = tDecodeI64(pDecoder, &desc.useconds);
243,236✔
368
          TAOS_CHECK_GOTO(code, &line, _error);
243,236!
369

370
          code = tDecodeI64(pDecoder, &desc.stime);
243,236✔
371
          TAOS_CHECK_GOTO(code, &line, _error);
243,236!
372

373
          code = tDecodeI64(pDecoder, &desc.reqRid);
243,228✔
374
          TAOS_CHECK_GOTO(code, &line, _error);
243,228!
375

376
          code = tDecodeI8(pDecoder, (int8_t *)&desc.stableQuery);
243,225✔
377
          TAOS_CHECK_GOTO(code, &line, _error);
243,225!
378

379
          code = tDecodeI8(pDecoder, (int8_t *)&desc.isSubQuery);
243,220✔
380
          TAOS_CHECK_GOTO(code, &line, _error);
243,220!
381

382
          code = tDecodeCStrTo(pDecoder, desc.fqdn);
243,220✔
383
          TAOS_CHECK_GOTO(code, &line, _error);
243,236!
384

385
          code = tDecodeI32(pDecoder, &desc.subPlanNum);
243,235✔
386
          TAOS_CHECK_GOTO(code, &line, _error);
243,235!
387

388
          int32_t snum = 0;
243,235✔
389
          code = tDecodeI32(pDecoder, &snum);
243,223✔
390
          if (snum > 0) {
243,223✔
391
            desc.subDesc = taosArrayInit(snum, sizeof(SQuerySubDesc));
243,180✔
392
            if (NULL == desc.subDesc) {
243,188✔
393
              code = terrno;
2✔
394
              TAOS_CHECK_GOTO(code, &line, _error);
×
395
            }
396

397
            for (int32_t m = 0; m < snum; ++m) {
927,268✔
398
              SQuerySubDesc sDesc = {0};
684,061✔
399
              code = tDecodeI64(pDecoder, &sDesc.tid);
684,079✔
400
              TAOS_CHECK_GOTO(code, &line, _error);
684,079!
401

402
              code = (tDecodeCStrTo(pDecoder, sDesc.status));
684,079✔
403
              TAOS_CHECK_GOTO(code, &line, _error);
684,103!
404
              if (!taosArrayPush(desc.subDesc, &sDesc)) {
1,368,185!
405
                code = terrno;
×
406
                TAOS_CHECK_GOTO(code, &line, _error);
×
407
              }
408
            }
409
          }
410

411
          if (!(desc.subPlanNum == taosArrayGetSize(desc.subDesc))) {
243,250!
412
            code = TSDB_CODE_INVALID_MSG;
×
413
            TAOS_CHECK_GOTO(code, &line, _error);
×
414
          }
415

416
          if (!taosArrayPush(pReq->query->queryDesc, &desc)) {
486,476!
417
            code = terrno;
×
418
            TAOS_CHECK_GOTO(code, &line, _error);
×
419
          }
420
        }
421
      }
422
    }
423
  }
424

425
  int32_t kvNum = 0;
305,422✔
426
  TAOS_CHECK_GOTO(tDecodeI32(pDecoder, &kvNum), &line, _error);
305,411!
427
  if (pReq->info == NULL) {
305,411!
428
    pReq->info = taosHashInit(kvNum, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_NO_LOCK);
305,413✔
429
  }
430
  if (pReq->info == NULL) {
305,407!
431
    code = terrno;
×
432
    TAOS_CHECK_GOTO(code, &line, _error);
×
433
  }
434
  for (int32_t i = 0; i < kvNum; i++) {
501,075✔
435
    SKv kv = {0};
195,661✔
436
    TAOS_CHECK_GOTO(tDecodeSKv(pDecoder, &kv), &line, _error);
195,664!
437

438
    int32_t code = taosHashPut(pReq->info, &kv.key, sizeof(kv.key), &kv, sizeof(kv));
195,664✔
439
    TAOS_CHECK_GOTO(terrno = code, &line, _error);
195,668!
440
  }
441
  if (!tDecodeIsEnd(pDecoder)) {
305,414!
442
    TAOS_CHECK_GOTO(tDecodeU32(pDecoder, &pReq->userIp), &line, _error);
610,842!
443
    TAOS_CHECK_GOTO(tDecodeCStrTo(pDecoder, pReq->userApp), &line, _error);
305,420!
444
  }
445

446
_error:
305,414✔
447
  if (code != 0) {
305,414!
448
    tFreeClientHbReq(pReq);
449
  }
450
  return code;
305,414✔
451
}
452

453
static int32_t tSerializeSClientHbRsp(SEncoder *pEncoder, const SClientHbRsp *pRsp) {
610,455✔
454
  TAOS_CHECK_RETURN(tEncodeSClientHbKey(pEncoder, &pRsp->connKey));
1,220,910!
455
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->status));
1,220,910!
456

457
  int32_t queryNum = 0;
610,455✔
458
  if (pRsp->query) {
610,455✔
459
    queryNum = 1;
598,785✔
460
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, queryNum));
598,785!
461
    TAOS_CHECK_RETURN(tEncodeU32(pEncoder, pRsp->query->connId));
1,197,570!
462
    TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pRsp->query->killRid));
1,197,570!
463
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->query->totalDnodes));
1,197,570!
464
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->query->onlineDnodes));
1,197,570!
465
    TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->query->killConnection));
1,197,570!
466
    TAOS_CHECK_RETURN(tEncodeSEpSet(pEncoder, &pRsp->query->epSet));
598,785!
467
    int32_t num = taosArrayGetSize(pRsp->query->pQnodeList);
598,792✔
468
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, num));
598,686!
469
    for (int32_t i = 0; i < num; ++i) {
1,332,916✔
470
      SQueryNodeLoad *pLoad = taosArrayGet(pRsp->query->pQnodeList, i);
734,107✔
471
      TAOS_CHECK_RETURN(tEncodeSQueryNodeLoad(pEncoder, pLoad));
733,730!
472
    }
473
  } else {
474
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, queryNum));
11,670!
475
  }
476

477
  int32_t kvNum = taosArrayGetSize(pRsp->info);
610,479✔
478
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, kvNum));
610,602!
479
  for (int32_t i = 0; i < kvNum; i++) {
750,796✔
480
    SKv *kv = taosArrayGet(pRsp->info, i);
140,197✔
481
    TAOS_CHECK_RETURN(tEncodeSKv(pEncoder, kv));
140,194!
482
  }
483

484
  return 0;
610,599✔
485
}
486

487
static int32_t tDeserializeSClientHbRsp(SDecoder *pDecoder, SClientHbRsp *pRsp) {
52,497✔
488
  TAOS_CHECK_RETURN(tDecodeSClientHbKey(pDecoder, &pRsp->connKey));
104,994!
489
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->status));
104,994!
490

491
  int32_t queryNum = 0;
52,497✔
492
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &queryNum));
52,497!
493
  if (queryNum) {
52,497✔
494
    pRsp->query = taosMemoryCalloc(1, sizeof(*pRsp->query));
51,837!
495
    if (NULL == pRsp->query) {
51,837!
496
      return terrno;
×
497
    }
498
    TAOS_CHECK_RETURN(tDecodeU32(pDecoder, &pRsp->query->connId));
103,674!
499
    TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pRsp->query->killRid));
103,674!
500
    TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->query->totalDnodes));
103,674!
501
    TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->query->onlineDnodes));
103,674!
502
    TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pRsp->query->killConnection));
103,674!
503
    TAOS_CHECK_RETURN(tDecodeSEpSet(pDecoder, &pRsp->query->epSet));
51,837!
504
    int32_t pQnodeNum = 0;
51,837✔
505
    TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pQnodeNum));
51,837!
506
    if (pQnodeNum > 0) {
51,837✔
507
      pRsp->query->pQnodeList = taosArrayInit(pQnodeNum, sizeof(SQueryNodeLoad));
42,400✔
508
      if (NULL == pRsp->query->pQnodeList) return terrno;
42,400!
509
      for (int32_t i = 0; i < pQnodeNum; ++i) {
184,841✔
510
        SQueryNodeLoad load = {0};
142,441✔
511
        TAOS_CHECK_RETURN(tDecodeSQueryNodeLoad(pDecoder, &load));
142,441!
512
        if (!taosArrayPush(pRsp->query->pQnodeList, &load)) return terrno;
284,882!
513
      }
514
    }
515
  }
516

517
  int32_t kvNum = 0;
52,497✔
518
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &kvNum));
52,497!
519
  pRsp->info = taosArrayInit(kvNum, sizeof(SKv));
52,497✔
520
  if (pRsp->info == NULL) {
52,497!
521
    return terrno;
×
522
  }
523
  for (int32_t i = 0; i < kvNum; i++) {
56,366✔
524
    SKv kv = {0};
3,869✔
525
    TAOS_CHECK_RETURN(tDecodeSKv(pDecoder, &kv));
3,869!
526
    if (!taosArrayPush(pRsp->info, &kv)) return terrno;
7,738!
527
  }
528

529
  return 0;
52,497✔
530
}
531

532
int32_t tSerializeSClientHbBatchReq(void *buf, int32_t bufLen, const SClientHbBatchReq *pBatchReq) {
13,086✔
533
  SEncoder encoder = {0};
13,086✔
534
  int32_t  code = 0;
13,086✔
535
  int32_t  lino;
536
  int32_t  tlen = 0;
13,086✔
537
  tEncoderInit(&encoder, buf, bufLen);
13,086✔
538

539
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
13,086!
540
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchReq->reqId));
26,172!
541

542
  int32_t reqNum = taosArrayGetSize(pBatchReq->reqs);
13,086✔
543
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, reqNum));
13,086!
544
  for (int32_t i = 0; i < reqNum; i++) {
118,124✔
545
    SClientHbReq *pReq = taosArrayGet(pBatchReq->reqs, i);
105,038✔
546
    TAOS_CHECK_EXIT(tSerializeSClientHbReq(&encoder, pReq));
105,038!
547
  }
548

549
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchReq->ipWhiteListVer));
26,172!
550

551
  for (int32_t i = 0; i < reqNum; i++) {
118,124✔
552
    SClientHbReq *pReq = taosArrayGet(pBatchReq->reqs, i);
105,038✔
553
    TAOS_CHECK_EXIT(tSerializeIpRange(&encoder, (SIpRange *)&pReq->userDualIp));
105,038!
554
  }
555

556
  tEndEncode(&encoder);
13,086✔
557

558
_exit:
13,086✔
559
  if (code) {
13,086!
560
    tlen = code;
×
561
  } else {
562
    tlen = encoder.pos;
13,086✔
563
  }
564
  tEncoderClear(&encoder);
13,086✔
565
  return tlen;
13,086✔
566
}
567

568
int32_t tDeserializeSClientHbBatchReq(void *buf, int32_t bufLen, SClientHbBatchReq *pBatchReq) {
215,803✔
569
  SDecoder decoder = {0};
215,803✔
570
  int32_t  code = 0;
215,803✔
571
  int32_t  lino;
572
  tDecoderInit(&decoder, buf, bufLen);
215,803✔
573

574
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
215,797!
575
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchReq->reqId));
431,645!
576

577
  int32_t reqNum = 0;
215,819✔
578
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &reqNum));
215,826!
579
  if (reqNum > 0) {
215,826✔
580
    pBatchReq->reqs = taosArrayInit(reqNum, sizeof(SClientHbReq));
215,442✔
581
    if (NULL == pBatchReq->reqs) {
215,415!
582
      return terrno;
×
583
    }
584
  }
585
  for (int32_t i = 0; i < reqNum; i++) {
521,214✔
586
    SClientHbReq req = {0};
305,388✔
587
    TAOS_CHECK_EXIT(tDeserializeSClientHbReq(&decoder, &req));
305,388!
588
    if (!taosArrayPush(pBatchReq->reqs, &req)) {
610,836!
589
      TAOS_CHECK_EXIT(terrno);
×
590
    }
591
  }
592

593
  if (!tDecodeIsEnd(&decoder)) {
215,826✔
594
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchReq->ipWhiteListVer));
431,640!
595
  }
596

597
  if (!tDecodeIsEnd(&decoder)) {
215,826✔
598
    for (int32_t i = 0; i < reqNum; i++) {
520,846✔
599
      SClientHbReq *pReq = taosArrayGet(pBatchReq->reqs, i);
305,416✔
600
      TAOS_CHECK_EXIT(tDeserializeIpRange(&decoder, (SIpRange *)&pReq->userDualIp));
305,376!
601
    }
602
  }
603
  tEndDecode(&decoder);
215,817✔
604

605
_exit:
215,814✔
606
  tDecoderClear(&decoder);
215,814✔
607
  return code;
215,817✔
608
}
609

610
int32_t tSerializeSClientHbBatchRsp(void *buf, int32_t bufLen, const SClientHbBatchRsp *pBatchRsp) {
431,458✔
611
  SEncoder encoder = {0};
431,458✔
612
  int32_t  code = 0;
431,458✔
613
  int32_t  lino;
614
  int32_t  tlen;
615
  tEncoderInit(&encoder, buf, bufLen);
431,458✔
616

617
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
431,493!
618
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchRsp->reqId));
863,146!
619
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pBatchRsp->rspId));
863,146!
620
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pBatchRsp->svrTimestamp));
863,146!
621

622
  int32_t rspNum = taosArrayGetSize(pBatchRsp->rsps);
431,573✔
623
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, rspNum));
431,469!
624
  for (int32_t i = 0; i < rspNum; i++) {
1,042,156✔
625
    SClientHbRsp *pRsp = taosArrayGet(pBatchRsp->rsps, i);
610,643✔
626
    TAOS_CHECK_EXIT(tSerializeSClientHbRsp(&encoder, pRsp));
610,450!
627
  }
628
  TAOS_CHECK_EXIT(tSerializeSMonitorParas(&encoder, &pBatchRsp->monitorParas));
431,513!
629
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pBatchRsp->enableAuditDelete));
862,790!
630
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pBatchRsp->enableStrongPass));
862,790!
631
  tEndEncode(&encoder);
431,395✔
632

633
_exit:
431,386✔
634
  if (code) {
431,386!
635
    tlen = code;
×
636
  } else {
637
    tlen = encoder.pos;
431,386✔
638
  }
639
  tEncoderClear(&encoder);
431,386✔
640
  return tlen;
431,360✔
641
}
642

643
int32_t tDeserializeSClientHbBatchRsp(void *buf, int32_t bufLen, SClientHbBatchRsp *pBatchRsp) {
6,524✔
644
  SDecoder decoder = {0};
6,524✔
645
  int32_t  code = 0;
6,524✔
646
  int32_t  lino;
647
  tDecoderInit(&decoder, buf, bufLen);
6,524✔
648

649
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
6,524!
650
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchRsp->reqId));
13,048!
651
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pBatchRsp->rspId));
13,048!
652
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pBatchRsp->svrTimestamp));
13,048!
653

654
  int32_t rspNum = 0;
6,524✔
655
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &rspNum));
6,524!
656
  if (pBatchRsp->rsps == NULL) {
6,524!
657
    if ((pBatchRsp->rsps = taosArrayInit(rspNum, sizeof(SClientHbRsp))) == NULL) {
6,524!
658
      TAOS_CHECK_EXIT(terrno);
×
659
    }
660
  }
661
  for (int32_t i = 0; i < rspNum; i++) {
59,021✔
662
    SClientHbRsp rsp = {0};
52,497✔
663
    TAOS_CHECK_EXIT(tDeserializeSClientHbRsp(&decoder, &rsp));
52,497!
664
    if (taosArrayPush(pBatchRsp->rsps, &rsp) == NULL) {
104,994!
665
      TAOS_CHECK_EXIT(terrno);
×
666
    }
667
  }
668

669
  if (!tDecodeIsEnd(&decoder)) {
6,524!
670
    TAOS_CHECK_EXIT(tDeserializeSMonitorParas(&decoder, &pBatchRsp->monitorParas));
6,524!
671
  }
672

673
  if (!tDecodeIsEnd(&decoder)) {
6,524!
674
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pBatchRsp->enableAuditDelete));
13,048!
675
  } else {
676
    pBatchRsp->enableAuditDelete = 0;
×
677
  }
678

679
  if (!tDecodeIsEnd(&decoder)) {
6,524!
680
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pBatchRsp->enableStrongPass));
13,048!
681
  } else {
682
    pBatchRsp->enableStrongPass = 0;
×
683
  }
684

685
  tEndDecode(&decoder);
6,524✔
686

687
_exit:
6,524✔
688
  tDecoderClear(&decoder);
6,524✔
689
  return code;
6,523✔
690
}
691

692
int32_t tSerializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pReq) {
2,711✔
693
  SEncoder encoder = {0};
2,711✔
694
  int32_t  code = 0;
2,711✔
695
  int32_t  lino;
696
  int32_t  tlen;
697
  tEncoderInit(&encoder, buf, bufLen);
2,711✔
698

699
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
2,714!
700
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
5,426!
701
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igExists));
5,426!
702
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->source));
5,426!
703
  for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) {
18,986✔
704
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->reserved[i]));
32,546!
705
  }
706
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->suid));
5,426!
707
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->delay1));
5,426!
708
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->delay2));
5,426!
709
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->watermark1));
5,426!
710
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->watermark2));
5,426!
711
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ttl));
5,426!
712
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->colVer));
5,426!
713
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->tagVer));
5,426!
714
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfColumns));
5,426!
715
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfTags));
5,426!
716
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfFuncs));
5,426!
717
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->commentLen));
5,426!
718
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ast1Len));
5,426!
719
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ast2Len));
5,426!
720

721
  for (int32_t i = 0; i < pReq->numOfColumns; ++i) {
66,093✔
722
    SFieldWithOptions *pField = taosArrayGet(pReq->pColumns, i);
63,389✔
723
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type));
126,760!
724
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->flags));
126,760!
725
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes));
126,760!
726
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name));
126,760!
727
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, pField->compress));
126,760!
728
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->typeMod));
126,760!
729
  }
730

731
  for (int32_t i = 0; i < pReq->numOfTags; ++i) {
14,969✔
732
    SField *pField = taosArrayGet(pReq->pTags, i);
12,269✔
733
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type));
24,530!
734
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->flags));
24,530!
735
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes));
24,530!
736
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name));
24,530!
737
  }
738

739
  for (int32_t i = 0; i < pReq->numOfFuncs; ++i) {
2,748✔
740
    const char *pFunc = taosArrayGet(pReq->pFuncs, i);
48✔
741
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pFunc));
48!
742
  }
743

744
  if (pReq->commentLen > 0) {
2,700✔
745
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->pComment));
96!
746
  }
747
  if (pReq->ast1Len > 0) {
2,700!
748
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->pAst1, pReq->ast1Len));
×
749
  }
750
  if (pReq->ast2Len > 0) {
2,700!
751
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->pAst2, pReq->ast2Len));
×
752
  }
753
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->deleteMark1));
5,400!
754
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->deleteMark2));
5,400!
755
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->keep));
5,400!
756

757
  ENCODESQL();
6,838!
758

759
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->virtualStb));
5,400!
760

761
  tEndEncode(&encoder);
2,700✔
762

763
_exit:
2,709✔
764
  if (code) {
2,709!
765
    tlen = code;
×
766
  } else {
767
    tlen = encoder.pos;
2,709✔
768
  }
769
  tEncoderClear(&encoder);
2,709✔
770
  return tlen;
2,713✔
771
}
772

773
int32_t tDeserializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pReq) {
8,501✔
774
  SDecoder decoder = {0};
8,501✔
775
  int32_t  code = 0;
8,501✔
776
  int32_t  lino;
777
  tDecoderInit(&decoder, buf, bufLen);
8,501✔
778

779
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
8,501!
780
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
8,501!
781
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igExists));
17,002!
782
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->source));
17,002!
783
  for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) {
59,507✔
784
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->reserved[i]));
102,012!
785
  }
786
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->suid));
17,002!
787
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->delay1));
17,002!
788
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->delay2));
17,002!
789
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->watermark1));
17,002!
790
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->watermark2));
17,002!
791
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ttl));
17,002!
792
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->colVer));
17,002!
793
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->tagVer));
17,002!
794
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfColumns));
17,002!
795
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfTags));
17,002!
796
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfFuncs));
17,002!
797
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->commentLen));
17,002!
798
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ast1Len));
17,002!
799
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ast2Len));
17,002!
800

801
  if ((pReq->pColumns = taosArrayInit(pReq->numOfColumns, sizeof(SFieldWithOptions))) == NULL) {
8,501!
802
    TAOS_CHECK_EXIT(terrno);
×
803
  }
804
  if ((pReq->pTags = taosArrayInit(pReq->numOfTags, sizeof(SField))) == NULL) {
8,501!
805
    TAOS_CHECK_EXIT(terrno);
×
806
  }
807
  if ((pReq->pFuncs = taosArrayInit(pReq->numOfFuncs, TSDB_FUNC_NAME_LEN)) == NULL) {
8,501!
808
    TAOS_CHECK_EXIT(terrno);
×
809
  }
810

811
  for (int32_t i = 0; i < pReq->numOfColumns; ++i) {
242,230✔
812
    SFieldWithOptions field = {0};
233,729✔
813
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type));
233,729!
814
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.flags));
233,729!
815
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes));
233,729!
816
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name));
233,729!
817
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &field.compress));
233,729!
818
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.typeMod));
233,729!
819
    if (taosArrayPush(pReq->pColumns, &field) == NULL) {
467,458!
820
      TAOS_CHECK_EXIT(terrno);
×
821
    }
822
  }
823

824
  for (int32_t i = 0; i < pReq->numOfTags; ++i) {
55,999✔
825
    SField field = {0};
47,498✔
826
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type));
47,498!
827
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.flags));
47,498!
828
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes));
47,498!
829
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name));
47,498!
830
    if (taosArrayPush(pReq->pTags, &field) == NULL) {
94,996!
831
      TAOS_CHECK_EXIT(terrno);
×
832
    }
833
  }
834

835
  for (int32_t i = 0; i < pReq->numOfFuncs; ++i) {
8,507✔
836
    char pFunc[TSDB_FUNC_NAME_LEN] = {0};
6✔
837
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pFunc));
6!
838
    if (taosArrayPush(pReq->pFuncs, pFunc) == NULL) {
12!
839
      TAOS_CHECK_EXIT(terrno);
×
840
    }
841
  }
842

843
  if (pReq->commentLen > 0) {
8,501✔
844
    pReq->pComment = taosMemoryMalloc(pReq->commentLen + 1);
26!
845
    if (pReq->pComment == NULL) {
26!
846
      TAOS_CHECK_EXIT(terrno);
×
847
    }
848
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pComment));
26!
849
  }
850

851
  if (pReq->ast1Len > 0) {
8,501!
852
    pReq->pAst1 = taosMemoryMalloc(pReq->ast1Len);
×
853
    if (pReq->pAst1 == NULL) {
×
854
      TAOS_CHECK_EXIT(terrno);
×
855
    }
856
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pAst1));
×
857
  }
858

859
  if (pReq->ast2Len > 0) {
8,501!
860
    pReq->pAst2 = taosMemoryMalloc(pReq->ast2Len);
×
861
    if (pReq->pAst2 == NULL) {
×
862
      TAOS_CHECK_EXIT(terrno);
×
863
    }
864
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pAst2));
×
865
  }
866

867
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->deleteMark1));
17,002!
868
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->deleteMark2));
17,002!
869
  if (!tDecodeIsEnd(&decoder)) {
8,501!
870
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->keep));
17,002!
871
  }
872

873
  DECODESQL();
23,776!
874

875
  if (!tDecodeIsEnd(&decoder)) {
8,501!
876
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->virtualStb));
17,002!
877
  } else {
878
    pReq->virtualStb = 0;
×
879
  }
880

881
  tEndDecode(&decoder);
8,501✔
882

883
_exit:
8,501✔
884
  tDecoderClear(&decoder);
8,501✔
885
  return code;
8,501✔
886
}
887

888
void tFreeSMCreateStbReq(SMCreateStbReq *pReq) {
10,057✔
889
  taosArrayDestroy(pReq->pColumns);
10,057✔
890
  taosArrayDestroy(pReq->pTags);
10,057✔
891
  taosArrayDestroy(pReq->pFuncs);
10,057✔
892
  taosMemoryFreeClear(pReq->pComment);
10,057!
893
  taosMemoryFreeClear(pReq->pAst1);
10,057!
894
  taosMemoryFreeClear(pReq->pAst2);
10,057!
895
  FREESQL();
10,057!
896
}
10,057✔
897

898
int32_t tSerializeSMDropStbReq(void *buf, int32_t bufLen, SMDropStbReq *pReq) {
84✔
899
  SEncoder encoder = {0};
84✔
900
  int32_t  code = 0;
84✔
901
  int32_t  lino;
902
  int32_t  tlen;
903
  tEncoderInit(&encoder, buf, bufLen);
84✔
904

905
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
84!
906
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
168!
907
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists));
168!
908
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->source));
168!
909
  for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) {
588✔
910
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->reserved[i]));
1,008!
911
  }
912
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->suid));
168!
913
  ENCODESQL();
222!
914
  tEndEncode(&encoder);
84✔
915

916
_exit:
84✔
917
  if (code) {
84!
918
    tlen = code;
×
919
  } else {
920
    tlen = encoder.pos;
84✔
921
  }
922
  tEncoderClear(&encoder);
84✔
923
  return tlen;
84✔
924
}
925

926
int32_t tDeserializeSMDropStbReq(void *buf, int32_t bufLen, SMDropStbReq *pReq) {
2,291✔
927
  SDecoder decoder = {0};
2,291✔
928
  int32_t  code = 0;
2,291✔
929
  int32_t  lino;
930
  tDecoderInit(&decoder, buf, bufLen);
2,291✔
931

932
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,291!
933
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
2,291!
934
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists));
4,582!
935
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->source));
4,582!
936
  for (int32_t i = 0; i < sizeof(pReq->reserved) / sizeof(int8_t); ++i) {
16,037✔
937
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->reserved[i]));
27,492!
938
  }
939
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->suid));
4,582!
940

941
  DECODESQL();
6,858!
942

943
  tEndDecode(&decoder);
2,291✔
944

945
_exit:
2,291✔
946
  tDecoderClear(&decoder);
2,291✔
947
  return code;
2,291✔
948
}
949

950
void tFreeSMDropStbReq(SMDropStbReq *pReq) { FREESQL(); }
2,318!
951

952
int32_t tSerializeSMAlterStbReq(void *buf, int32_t bufLen, SMAlterStbReq *pReq) {
5,606✔
953
  SEncoder encoder = {0};
5,606✔
954
  int32_t  code = 0;
5,606✔
955
  int32_t  lino;
956
  int32_t  tlen;
957
  tEncoderInit(&encoder, buf, bufLen);
5,606✔
958

959
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
5,606!
960
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
11,212!
961
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->alterType));
11,212!
962
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfFields));
11,212!
963

964
  // if (pReq->alterType == )
965
  for (int32_t i = 0; i < pReq->numOfFields; ++i) {
11,272✔
966
    if (pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION) {
5,666!
967
      SFieldWithOptions *pField = taosArrayGet(pReq->pFields, i);
×
968
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type));
×
969
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes));
×
970
      TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name));
×
971
      TAOS_CHECK_EXIT(tEncodeU32(&encoder, pField->compress));
×
972

973
    } else {
974
      SField *pField = taosArrayGet(pReq->pFields, i);
5,666✔
975
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pField->type));
11,332!
976
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pField->bytes));
11,332!
977
      TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pField->name));
11,332!
978
    }
979
  }
980
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ttl));
11,212!
981
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->commentLen));
11,212!
982
  if (pReq->commentLen > 0) {
5,606✔
983
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->comment));
48!
984
  }
985
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->keep));
11,212!
986
  ENCODESQL();
16,620!
987
  if (pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN ||
5,606✔
988
      pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION) {
3,452!
989
    if (taosArrayGetSize(pReq->pTypeMods) > 0) {
2,154✔
990
      int8_t hasTypeMod = 1;
2,118✔
991
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, hasTypeMod));
4,236!
992
      for (int32_t i = 0; i < pReq->pTypeMods->size; ++i) {
4,236✔
993
        const STypeMod *pTypeMod = taosArrayGet(pReq->pTypeMods, i);
2,118✔
994
        TAOS_CHECK_ERRNO(tEncodeI32(&encoder, *pTypeMod));
4,236!
995
      }
996
    } else {
997
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, 0));
36!
998
    }
999
  }
1000
  tEndEncode(&encoder);
5,606✔
1001

1002
_exit:
5,606✔
1003
  if (code) {
5,606!
1004
    tlen = code;
×
1005
  } else {
1006
    tlen = encoder.pos;
5,606✔
1007
  }
1008
  tEncoderClear(&encoder);
5,606✔
1009
  return tlen;
5,606✔
1010
}
1011

1012
int32_t tDeserializeSMAlterStbReq(void *buf, int32_t bufLen, SMAlterStbReq *pReq) {
10,955✔
1013
  SDecoder decoder = {0};
10,955✔
1014
  int32_t  code = 0;
10,955✔
1015
  int32_t  lino;
1016
  tDecoderInit(&decoder, buf, bufLen);
10,955✔
1017

1018
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
10,955!
1019
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
10,955!
1020
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->alterType));
21,910!
1021
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfFields));
21,910!
1022
  pReq->pFields = taosArrayInit(pReq->numOfFields, sizeof(SField));
10,955✔
1023
  if (pReq->pFields == NULL) {
10,955!
1024
    TAOS_CHECK_EXIT(terrno);
×
1025
  }
1026

1027
  for (int32_t i = 0; i < pReq->numOfFields; ++i) {
22,548✔
1028
    if (pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION) {
11,593✔
1029
      taosArrayDestroy(pReq->pFields);
424✔
1030
      if ((pReq->pFields = taosArrayInit(pReq->numOfFields, sizeof(SFieldWithOptions))) == NULL) {
424!
1031
        TAOS_CHECK_EXIT(terrno);
×
1032
      }
1033
      SFieldWithOptions field = {0};
424✔
1034
      TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type));
424!
1035
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes));
424!
1036
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name));
424!
1037
      TAOS_CHECK_EXIT(tDecodeU32(&decoder, &field.compress));
424!
1038
      if (taosArrayPush(pReq->pFields, &field) == NULL) {
848!
1039
        TAOS_CHECK_EXIT(terrno);
×
1040
      }
1041
    } else {
1042
      SField field = {0};
11,169✔
1043
      TAOS_CHECK_EXIT(tDecodeI8(&decoder, &field.type));
11,169!
1044
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &field.bytes));
11,169!
1045
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, field.name));
11,169!
1046
      if (taosArrayPush(pReq->pFields, &field) == NULL) {
22,338!
1047
        TAOS_CHECK_EXIT(terrno);
×
1048
      }
1049
    }
1050
  }
1051

1052
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ttl));
21,910!
1053
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->commentLen));
21,910!
1054
  if (pReq->commentLen > 0) {
10,955✔
1055
    pReq->comment = taosMemoryMalloc(pReq->commentLen + 1);
28!
1056
    if (pReq->comment == NULL) {
28!
1057
      TAOS_CHECK_EXIT(terrno);
×
1058
    }
1059
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->comment));
28!
1060
  }
1061
  if (!tDecodeIsEnd(&decoder)) {
10,955!
1062
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->keep));
21,910!
1063
  }
1064
  DECODESQL();
32,766!
1065
  if (!tDecodeIsEnd(&decoder) && (pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN ||
10,955✔
1066
                                  pReq->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION)) {
424!
1067
    int8_t hasTypeMod = 0;
4,696✔
1068
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &hasTypeMod));
4,696!
1069
    if (hasTypeMod == 1) {
4,696✔
1070
      pReq->pTypeMods = taosArrayInit(pReq->numOfFields, sizeof(STypeMod));
4,678✔
1071
      if (!pReq->pTypeMods) {
4,678!
1072
        TAOS_CHECK_EXIT(terrno);
×
1073
      }
1074
      for (int32_t i = 0; i < pReq->numOfFields; ++i) {
9,356✔
1075
        STypeMod typeMod = 0;
4,678✔
1076
        TAOS_CHECK_EXIT(tDecodeI32(&decoder, &typeMod));
4,678!
1077
        if (taosArrayPush(pReq->pTypeMods, &typeMod) == NULL) {
9,356!
1078
          TAOS_CHECK_EXIT(terrno);
×
1079
        }
1080
      }
1081
    }
1082
  }
1083
  tEndDecode(&decoder);
10,955✔
1084

1085
_exit:
10,955✔
1086
  tDecoderClear(&decoder);
10,955✔
1087
  return code;
10,955✔
1088
}
1089

1090
void tFreeSMAltertbReq(SMAlterStbReq *pReq) {
14,191✔
1091
  taosArrayDestroy(pReq->pFields);
14,191✔
1092
  pReq->pFields = NULL;
14,191✔
1093
  taosMemoryFreeClear(pReq->comment);
14,191!
1094
  FREESQL();
14,191!
1095
  taosArrayDestroy(pReq->pTypeMods);
14,191✔
1096
}
14,191✔
1097

1098
int32_t tSerializeSEpSet(void *buf, int32_t bufLen, const SEpSet *pEpset) {
94,213✔
1099
  SEncoder encoder = {0};
94,213✔
1100
  int32_t  code = 0;
94,213✔
1101
  int32_t  lino;
1102
  int32_t  tlen;
1103
  tEncoderInit(&encoder, buf, bufLen);
94,213✔
1104

1105
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
94,284!
1106
  TAOS_CHECK_EXIT(tEncodeSEpSet(&encoder, pEpset));
94,290!
1107

1108
  tEndEncode(&encoder);
94,282✔
1109

1110
_exit:
94,286✔
1111
  if (code) {
94,286!
1112
    tlen = code;
×
1113
  } else {
1114
    tlen = encoder.pos;
94,286✔
1115
  }
1116
  tEncoderClear(&encoder);
94,286✔
1117
  return tlen;
94,289✔
1118
}
1119

1120
int32_t tDeserializeSEpSet(void *buf, int32_t bufLen, SEpSet *pEpset) {
37,334✔
1121
  SDecoder decoder = {0};
37,334✔
1122
  int32_t  code = 0;
37,334✔
1123
  int32_t  lino;
1124

1125
  tDecoderInit(&decoder, buf, bufLen);
37,334✔
1126

1127
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
37,333✔
1128
  TAOS_CHECK_EXIT(tDecodeSEpSet(&decoder, pEpset));
32,651!
1129

1130
  tEndDecode(&decoder);
32,651✔
1131
_exit:
37,333✔
1132
  tDecoderClear(&decoder);
37,333✔
1133
  return code;
37,333✔
1134
}
1135

1136
int32_t tSerializeSMCreateSmaReq(void *buf, int32_t bufLen, SMCreateSmaReq *pReq) {
×
1137
  SEncoder encoder = {0};
×
1138
  int32_t  code = 0;
×
1139
  int32_t  lino;
1140
  int32_t  tlen;
1141
  tEncoderInit(&encoder, buf, bufLen);
×
1142

1143
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
1144
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
×
1145
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->stb));
×
1146
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igExists));
×
1147
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->intervalUnit));
×
1148
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->slidingUnit));
×
1149
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->timezone));
×
1150
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dstVgId));
×
1151
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->interval));
×
1152
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->offset));
×
1153
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->sliding));
×
1154
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->watermark));
×
1155
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->maxDelay));
×
1156
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->exprLen));
×
1157
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->tagsFilterLen));
×
1158
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sqlLen));
×
1159
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->astLen));
×
1160
  if (pReq->exprLen > 0) {
×
1161
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->expr, pReq->exprLen));
×
1162
  }
1163
  if (pReq->tagsFilterLen > 0) {
×
1164
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->tagsFilter, pReq->tagsFilterLen));
×
1165
  }
1166
  if (pReq->sqlLen > 0) {
×
1167
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->sql, pReq->sqlLen));
×
1168
  }
1169
  if (pReq->astLen > 0) {
×
1170
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->ast, pReq->astLen));
×
1171
  }
1172
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->deleteMark));
×
1173
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->lastTs));
×
1174
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->normSourceTbUid));
×
1175
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, taosArrayGetSize(pReq->pVgroupVerList)));
×
1176

1177
  for (int32_t i = 0; i < taosArrayGetSize(pReq->pVgroupVerList); ++i) {
×
1178
    SVgroupVer *p = taosArrayGet(pReq->pVgroupVerList, i);
×
1179
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, p->vgId));
×
1180
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, p->ver));
×
1181
  }
1182
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->recursiveTsma));
×
1183
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->baseTsmaName));
×
1184
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->streamReqLen));
×
1185
  if (pReq->streamReqLen > 0) {
×
1186
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->createStreamReq, pReq->streamReqLen));
×
1187
  }
1188
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dropStreamReqLen));
×
1189
  if (pReq->dropStreamReqLen > 0) {
×
1190
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->dropStreamReq, pReq->dropStreamReqLen));
×
1191
  }
1192
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->uid));
×
1193
  tEndEncode(&encoder);
×
1194

1195
_exit:
×
1196
  if (code) {
×
1197
    tlen = code;
×
1198
  } else {
1199
    tlen = encoder.pos;
×
1200
  }
1201
  tEncoderClear(&encoder);
×
1202
  return tlen;
×
1203
}
1204

1205
int32_t tDeserializeSMCreateSmaReq(void *buf, int32_t bufLen, SMCreateSmaReq *pReq) {
×
1206
  SDecoder decoder = {0};
×
1207
  int32_t  code = 0;
×
1208
  int32_t  lino;
1209
  tDecoderInit(&decoder, buf, bufLen);
×
1210

1211
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
1212
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
×
1213
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->stb));
×
1214
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igExists));
×
1215
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->intervalUnit));
×
1216
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->slidingUnit));
×
1217
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->timezone));
×
1218
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dstVgId));
×
1219
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->interval));
×
1220
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->offset));
×
1221
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->sliding));
×
1222
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->watermark));
×
1223
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->maxDelay));
×
1224
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->exprLen));
×
1225
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->tagsFilterLen));
×
1226
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sqlLen));
×
1227
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->astLen));
×
1228
  if (pReq->exprLen > 0) {
×
1229
    pReq->expr = taosMemoryMalloc(pReq->exprLen);
×
1230
    if (pReq->expr == NULL) {
×
1231
      TAOS_CHECK_EXIT(terrno);
×
1232
    }
1233
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->expr));
×
1234
  }
1235
  if (pReq->tagsFilterLen > 0) {
×
1236
    pReq->tagsFilter = taosMemoryMalloc(pReq->tagsFilterLen);
×
1237
    if (pReq->tagsFilter == NULL) {
×
1238
      TAOS_CHECK_EXIT(terrno);
×
1239
    }
1240
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->tagsFilter));
×
1241
  }
1242
  if (pReq->sqlLen > 0) {
×
1243
    pReq->sql = taosMemoryMalloc(pReq->sqlLen);
×
1244
    if (pReq->sql == NULL) {
×
1245
      TAOS_CHECK_EXIT(terrno);
×
1246
    }
1247
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->sql));
×
1248
  }
1249
  if (pReq->astLen > 0) {
×
1250
    pReq->ast = taosMemoryMalloc(pReq->astLen);
×
1251
    if (pReq->ast == NULL) {
×
1252
      TAOS_CHECK_EXIT(terrno);
×
1253
    }
1254
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->ast));
×
1255
  }
1256
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->deleteMark));
×
1257
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->lastTs));
×
1258
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->normSourceTbUid));
×
1259

1260
  int32_t numOfVgVer;
1261
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfVgVer));
×
1262
  if (numOfVgVer > 0) {
×
1263
    pReq->pVgroupVerList = taosArrayInit(numOfVgVer, sizeof(SVgroupVer));
×
1264
    if (pReq->pVgroupVerList == NULL) {
×
1265
      TAOS_CHECK_EXIT(terrno);
×
1266
    }
1267

1268
    for (int32_t i = 0; i < numOfVgVer; ++i) {
×
1269
      SVgroupVer v = {0};
×
1270
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &v.vgId));
×
1271
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &v.ver));
×
1272
      if (taosArrayPush(pReq->pVgroupVerList, &v) == NULL) {
×
1273
        TAOS_CHECK_EXIT(terrno);
×
1274
      }
1275
    }
1276
  }
1277
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->recursiveTsma));
×
1278
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->baseTsmaName));
×
1279
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->streamReqLen));
×
1280
  if (pReq->streamReqLen > 0) {
×
1281
    pReq->createStreamReq = taosMemoryMalloc(pReq->streamReqLen);
×
1282
    if (pReq->createStreamReq == NULL) {
×
1283
      TAOS_CHECK_EXIT(terrno);
×
1284
    }
1285
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->createStreamReq));
×
1286
  }
1287
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dropStreamReqLen));
×
1288
  if (pReq->dropStreamReqLen > 0) {
×
1289
    pReq->dropStreamReq = taosMemoryMalloc(pReq->dropStreamReqLen);
×
1290
    if (pReq->dropStreamReq == NULL) {
×
1291
      TAOS_CHECK_EXIT(terrno);
×
1292
    }
1293
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dropStreamReq));
×
1294
  }
1295
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->uid));
×
1296
  tEndDecode(&decoder);
×
1297

1298
_exit:
×
1299
  tDecoderClear(&decoder);
×
1300
  return code;
×
1301
}
1302

1303
void tFreeSMCreateSmaReq(SMCreateSmaReq *pReq) {
×
1304
  taosMemoryFreeClear(pReq->expr);
×
1305
  taosMemoryFreeClear(pReq->tagsFilter);
×
1306
  taosMemoryFreeClear(pReq->sql);
×
1307
  taosMemoryFreeClear(pReq->ast);
×
1308
  taosArrayDestroy(pReq->pVgroupVerList);
×
1309
}
×
1310

1311
int32_t tSerializeSMDropSmaReq(void *buf, int32_t bufLen, SMDropSmaReq *pReq) {
48✔
1312
  SEncoder encoder = {0};
48✔
1313
  int32_t  code = 0;
48✔
1314
  int32_t  lino;
1315
  int32_t  tlen;
1316
  tEncoderInit(&encoder, buf, bufLen);
48✔
1317

1318
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
48!
1319
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
96!
1320
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists));
96!
1321

1322
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dropStreamReqLen));
96!
1323
  if (pReq->dropStreamReqLen > 0) {
48!
1324
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->dropStreamReq, pReq->dropStreamReqLen));
×
1325
  }
1326

1327
  tEndEncode(&encoder);
48✔
1328

1329
_exit:
48✔
1330
  if (code) {
48!
1331
    tlen = code;
×
1332
  } else {
1333
    tlen = encoder.pos;
48✔
1334
  }
1335
  tEncoderClear(&encoder);
48✔
1336
  return tlen;
48✔
1337
}
1338

1339
int32_t tDeserializeSMDropSmaReq(void *buf, int32_t bufLen, SMDropSmaReq *pReq) {
1,083✔
1340
  SDecoder decoder = {0};
1,083✔
1341
  int32_t  code = 0;
1,083✔
1342
  int32_t  lino;
1343
  tDecoderInit(&decoder, buf, bufLen);
1,083✔
1344

1345
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,083!
1346
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
1,083!
1347
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists));
2,166!
1348

1349
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dropStreamReqLen));
2,166!
1350
  if (pReq->dropStreamReqLen > 0) {
1,083!
1351
    pReq->dropStreamReq = taosMemoryMalloc(pReq->dropStreamReqLen);
×
1352
    if (pReq->dropStreamReq == NULL) {
×
1353
      TAOS_CHECK_EXIT(terrno);
×
1354
    }
1355
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dropStreamReq));
×
1356
  }
1357

1358
  tEndDecode(&decoder);
1,083✔
1359

1360
_exit:
1,083✔
1361
  tDecoderClear(&decoder);
1,083✔
1362
  return code;
1,083✔
1363
}
1364

1365
int32_t tSerializeSCreateTagIdxReq(void *buf, int32_t bufLen, SCreateTagIndexReq *pReq) {
×
1366
  SEncoder encoder = {0};
×
1367
  int32_t  code = 0;
×
1368
  int32_t  lino;
1369
  int32_t  tlen;
1370
  tEncoderInit(&encoder, buf, bufLen);
×
1371

1372
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
1373
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dbFName));
×
1374
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->stbName));
×
1375
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->colName));
×
1376
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->idxName));
×
1377
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->idxType));
×
1378

1379
  tEndEncode(&encoder);
×
1380

1381
_exit:
×
1382
  if (code) {
×
1383
    tlen = code;
×
1384
  } else {
1385
    tlen = encoder.pos;
×
1386
  }
1387
  tEncoderClear(&encoder);
×
1388
  return tlen;
×
1389
}
1390

1391
int32_t tDeserializeSCreateTagIdxReq(void *buf, int32_t bufLen, SCreateTagIndexReq *pReq) {
491✔
1392
  SDecoder decoder = {0};
491✔
1393
  int32_t  code = 0;
491✔
1394
  int32_t  lino;
1395
  tDecoderInit(&decoder, buf, bufLen);
491✔
1396

1397
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
491!
1398
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dbFName));
491!
1399
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->stbName));
491!
1400
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->colName));
491!
1401
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->idxName));
491!
1402
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->idxType));
982!
1403

1404
  tEndDecode(&decoder);
491✔
1405
_exit:
491✔
1406
  tDecoderClear(&decoder);
491✔
1407
  return code;
491✔
1408
}
1409

1410
int32_t tDeserializeSDropTagIdxReq(void *buf, int32_t bufLen, SDropTagIndexReq *pReq) {
1,071✔
1411
  SDecoder decoder = {0};
1,071✔
1412
  int32_t  code = 0;
1,071✔
1413
  int32_t  lino;
1414
  tDecoderInit(&decoder, buf, bufLen);
1,071✔
1415

1416
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,071!
1417
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
1,071!
1418
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists));
2,142!
1419

1420
  tEndDecode(&decoder);
1,071✔
1421
_exit:
1,071✔
1422
  tDecoderClear(&decoder);
1,071✔
1423
  return code;
1,071✔
1424
}
1425

1426
int32_t tSerializeSMCreateFullTextReq(void *buf, int32_t bufLen, SMCreateFullTextReq *pReq) {
×
1427
  SEncoder encoder = {0};
×
1428
  int32_t  code = 0;
×
1429
  int32_t  lino;
1430
  int32_t  tlen;
1431
  tEncoderInit(&encoder, buf, bufLen);
×
1432

1433
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
1434

1435
  tEndEncode(&encoder);
×
1436
_exit:
×
1437
  if (code) {
×
1438
    tlen = code;
×
1439
  } else {
1440
    tlen = encoder.pos;
×
1441
  }
1442
  tEncoderClear(&encoder);
×
1443
  return tlen;
×
1444
}
1445

1446
int32_t tDeserializeSMCreateFullTextReq(void *buf, int32_t bufLen, SMCreateFullTextReq *pReq) {
×
1447
  SDecoder decoder = {0};
×
1448
  int32_t  code = 0;
×
1449
  int32_t  lino;
1450
  tDecoderInit(&decoder, buf, bufLen);
×
1451
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
1452
  tEndDecode(&decoder);
×
1453
_exit:
×
1454
  tDecoderClear(&decoder);
×
1455
  return code;
×
1456
}
1457
void tFreeSMCreateFullTextReq(SMCreateFullTextReq *pReq) {
×
1458
  // impl later
1459
  return;
×
1460
}
1461

1462
int32_t tSerializeSNotifyReq(void *buf, int32_t bufLen, SNotifyReq *pReq) {
×
1463
  SEncoder encoder = {0};
×
1464
  int32_t  code = 0;
×
1465
  int32_t  lino;
1466
  int32_t  tlen;
1467
  tEncoderInit(&encoder, buf, bufLen);
×
1468

1469
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
1470
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
×
1471
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->clusterId));
×
1472

1473
  int32_t nVgroup = taosArrayGetSize(pReq->pVloads);
×
1474
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, nVgroup));
×
1475
  for (int32_t i = 0; i < nVgroup; ++i) {
×
1476
    SVnodeLoadLite *vload = TARRAY_GET_ELEM(pReq->pVloads, i);
×
1477
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, vload->vgId));
×
1478
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, vload->nTimeSeries));
×
1479
  }
1480

1481
  tEndEncode(&encoder);
×
1482

1483
_exit:
×
1484
  if (code) {
×
1485
    tlen = code;
×
1486
  } else {
1487
    tlen = encoder.pos;
×
1488
  }
1489
  tEncoderClear(&encoder);
×
1490
  return tlen;
×
1491
}
1492

1493
int32_t tDeserializeSNotifyReq(void *buf, int32_t bufLen, SNotifyReq *pReq) {
×
1494
  int32_t  code = 0;
×
1495
  int32_t  lino;
1496
  SDecoder decoder = {0};
×
1497
  tDecoderInit(&decoder, buf, bufLen);
×
1498

1499
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
1500
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
×
1501
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->clusterId));
×
1502
  int32_t nVgroup = 0;
×
1503
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &nVgroup));
×
1504
  if (nVgroup > 0) {
×
1505
    pReq->pVloads = taosArrayInit_s(sizeof(SVnodeLoadLite), nVgroup);
×
1506
    if (!pReq->pVloads) {
×
1507
      TAOS_CHECK_EXIT(terrno);
×
1508
    }
1509
    for (int32_t i = 0; i < nVgroup; ++i) {
×
1510
      SVnodeLoadLite *vload = TARRAY_GET_ELEM(pReq->pVloads, i);
×
1511
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &(vload->vgId)));
×
1512
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &(vload->nTimeSeries)));
×
1513
    }
1514
  }
1515

1516
  tEndDecode(&decoder);
×
1517

1518
_exit:
×
1519
  tDecoderClear(&decoder);
×
1520
  return code;
×
1521
}
1522

1523
void tFreeSNotifyReq(SNotifyReq *pReq) {
×
1524
  if (pReq) {
×
1525
    taosArrayDestroy(pReq->pVloads);
×
1526
  }
1527
}
×
1528

1529
int32_t tSerializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
251,322✔
1530
  SEncoder encoder = {0};
251,322✔
1531
  int32_t  code = 0;
251,322✔
1532
  int32_t  lino;
1533
  int32_t  tlen;
1534
  tEncoderInit(&encoder, buf, bufLen);
251,322✔
1535

1536
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
251,322!
1537

1538
  // status
1539
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sver));
502,644!
1540
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->dnodeVer));
502,644!
1541
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
502,644!
1542
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->clusterId));
502,644!
1543
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->rebootTime));
502,644!
1544
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->updateTime));
502,644!
1545
  TAOS_CHECK_EXIT(tEncodeFloat(&encoder, pReq->numOfCores));
502,644!
1546
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfSupportVnodes));
502,644!
1547
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->numOfDiskCfg));
502,644!
1548
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->memTotal));
502,644!
1549
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->memAvail));
502,644!
1550
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dnodeEp));
502,644!
1551
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->machineId));
502,644!
1552

1553
  // cluster cfg
1554
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->clusterCfg.statusInterval));
502,644!
1555
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->clusterCfg.checkTime));
502,644!
1556
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->clusterCfg.timezone));
502,644!
1557
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->clusterCfg.locale));
502,644!
1558
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->clusterCfg.charset));
502,644!
1559
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->clusterCfg.enableWhiteList));
502,644!
1560
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->clusterCfg.encryptionKeyStat));
502,644!
1561
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->clusterCfg.encryptionKeyChksum));
502,644!
1562

1563
  // vnode loads
1564
  int32_t vlen = (int32_t)taosArrayGetSize(pReq->pVloads);
251,322✔
1565
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, vlen));
251,322!
1566
  for (int32_t i = 0; i < vlen; ++i) {
1,725,594✔
1567
    SVnodeLoad *pload = taosArrayGet(pReq->pVloads, i);
1,474,272✔
1568
    int64_t     reserved = 0;
1,474,272✔
1569
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->vgId));
2,948,544!
1570
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pload->syncState));
2,948,544!
1571
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pload->syncRestore));
2,948,544!
1572
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pload->syncCanRead));
2,948,544!
1573
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->cacheUsage));
2,948,544!
1574
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->numOfTables));
2,948,544!
1575
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->numOfTimeSeries));
2,948,544!
1576
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->totalStorage));
2,948,544!
1577
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->compStorage));
2,948,544!
1578
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->pointsWritten));
2,948,544!
1579
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->numOfCachedTables));
2,948,544!
1580
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pload->learnerProgress));
2,948,544!
1581
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->roleTimeMs));
2,948,544!
1582
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->startTimeMs));
2,948,544!
1583
  }
1584

1585
  // mnode loads
1586
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->mload.syncState));
502,644!
1587
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->mload.syncRestore));
502,644!
1588

1589
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->qload.dnodeId));
502,644!
1590
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedQuery));
502,644!
1591
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedCQuery));
502,644!
1592
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedFetch));
502,644!
1593
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedDrop));
502,644!
1594
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedNotify));
502,644!
1595
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedHb));
502,644!
1596
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfProcessedDelete));
502,644!
1597
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.cacheDataSize));
502,644!
1598
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfQueryInQueue));
502,644!
1599
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.numOfFetchInQueue));
502,644!
1600
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.timeInQueryQueue));
502,644!
1601
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->qload.timeInFetchQueue));
502,644!
1602

1603
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->statusSeq));
502,644!
1604
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->mload.syncTerm));
502,644!
1605
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->mload.roleTimeMs));
502,644!
1606
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->clusterCfg.ttlChangeOnWrite));
502,644!
1607

1608
  // vnode extra
1609
  for (int32_t i = 0; i < vlen; ++i) {
1,725,594✔
1610
    SVnodeLoad *pload = taosArrayGet(pReq->pVloads, i);
1,474,272✔
1611
    int64_t     reserved = 0;
1,474,272✔
1612
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncTerm));
2,948,544!
1613
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, reserved));
1,474,272!
1614
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, reserved));
1,474,272!
1615
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, reserved));
1,474,272!
1616
  }
1617

1618
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->ipWhiteVer));
502,644!
1619
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->analVer));
502,644!
1620
  TAOS_CHECK_EXIT(tSerializeSMonitorParas(&encoder, &pReq->clusterCfg.monitorParas));
251,322!
1621

1622
  for (int32_t i = 0; i < vlen; ++i) {
1,725,594✔
1623
    SVnodeLoad *pload = taosArrayGet(pReq->pVloads, i);
1,474,272✔
1624
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncAppliedIndex));
2,948,544!
1625
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->syncCommitIndex));
2,948,544!
1626
  }
1627
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->timestamp));
502,644!
1628

1629
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->timestamp));
502,644!
1630

1631
  // Encode buffer info
1632
  for (int32_t i = 0; i < vlen; ++i) {
1,725,594✔
1633
    SVnodeLoad *pload = taosArrayGet(pReq->pVloads, i);
1,474,272✔
1634
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->bufferSegmentUsed));
2,948,544!
1635
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pload->bufferSegmentSize));
2,948,544!
1636
  }
1637

1638
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->clusterCfg.statusIntervalMs));
502,644!
1639

1640
  tEndEncode(&encoder);
251,322✔
1641

1642
_exit:
251,322✔
1643
  if (code) {
251,322!
1644
    tlen = code;
×
1645
  } else {
1646
    tlen = encoder.pos;
251,322✔
1647
  }
1648
  tEncoderClear(&encoder);
251,322✔
1649
  return tlen;
251,322✔
1650
}
1651

1652
int32_t tDeserializeSStatusReq(void *buf, int32_t bufLen, SStatusReq *pReq) {
125,405✔
1653
  SDecoder decoder = {0};
125,405✔
1654
  int32_t  code = 0;
125,405✔
1655
  int32_t  lino;
1656
  tDecoderInit(&decoder, buf, bufLen);
125,405✔
1657

1658
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
125,405!
1659

1660
  // status
1661
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sver));
250,810!
1662
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->dnodeVer));
250,810!
1663
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
250,810!
1664
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->clusterId));
250,810!
1665
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->rebootTime));
250,810!
1666
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->updateTime));
250,810!
1667
  TAOS_CHECK_EXIT(tDecodeFloat(&decoder, &pReq->numOfCores));
250,810!
1668
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfSupportVnodes));
250,810!
1669
  TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->numOfDiskCfg));
250,810!
1670
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->memTotal));
250,810!
1671
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->memAvail));
250,810!
1672
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dnodeEp));
125,405!
1673
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->machineId));
125,405!
1674

1675
  // cluster cfg
1676
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->clusterCfg.statusInterval));
250,810!
1677
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->clusterCfg.checkTime));
250,810!
1678
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->clusterCfg.timezone));
125,405!
1679
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->clusterCfg.locale));
125,405!
1680
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->clusterCfg.charset));
125,405!
1681
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->clusterCfg.enableWhiteList));
250,810!
1682
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->clusterCfg.encryptionKeyStat));
250,810!
1683
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->clusterCfg.encryptionKeyChksum));
250,810!
1684

1685
  // vnode loads
1686
  int32_t vlen = 0;
125,405✔
1687
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vlen));
125,405!
1688
  pReq->pVloads = taosArrayInit(vlen, sizeof(SVnodeLoad));
125,405✔
1689
  if (pReq->pVloads == NULL) {
125,405!
1690
    TAOS_CHECK_EXIT(terrno);
×
1691
  }
1692

1693
  for (int32_t i = 0; i < vlen; ++i) {
861,325✔
1694
    SVnodeLoad vload = {0};
735,920✔
1695
    vload.syncTerm = -1;
735,920✔
1696

1697
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.vgId));
735,920!
1698
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &vload.syncState));
735,920!
1699
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &vload.syncRestore));
735,920!
1700
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &vload.syncCanRead));
735,920!
1701
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.cacheUsage));
735,920!
1702
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.numOfTables));
735,920!
1703
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.numOfTimeSeries));
735,920!
1704
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.totalStorage));
735,920!
1705
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.compStorage));
735,920!
1706
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.pointsWritten));
735,920!
1707
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.numOfCachedTables));
735,920!
1708
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &vload.learnerProgress));
735,920!
1709
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.roleTimeMs));
735,920!
1710
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &vload.startTimeMs));
735,920!
1711
    if (taosArrayPush(pReq->pVloads, &vload) == NULL) {
1,471,840!
1712
      TAOS_CHECK_EXIT(terrno);
×
1713
    }
1714
  }
1715

1716
  // mnode loads
1717
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->mload.syncState));
250,810!
1718
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->mload.syncRestore));
250,810!
1719
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->qload.dnodeId));
250,810!
1720
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedQuery));
250,810!
1721
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedCQuery));
250,810!
1722
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedFetch));
250,810!
1723
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedDrop));
250,810!
1724
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedNotify));
250,810!
1725
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedHb));
250,810!
1726
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfProcessedDelete));
250,810!
1727
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.cacheDataSize));
250,810!
1728
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfQueryInQueue));
250,810!
1729
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.numOfFetchInQueue));
250,810!
1730
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.timeInQueryQueue));
250,810!
1731
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->qload.timeInFetchQueue));
250,810!
1732
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->statusSeq));
250,810!
1733

1734
  pReq->mload.syncTerm = -1;
125,405✔
1735
  pReq->mload.roleTimeMs = 0;
125,405✔
1736
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1737
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->mload.syncTerm));
250,810!
1738
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->mload.roleTimeMs));
250,810!
1739
  }
1740

1741
  pReq->clusterCfg.ttlChangeOnWrite = false;
125,405✔
1742
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1743
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->clusterCfg.ttlChangeOnWrite));
250,810!
1744
  }
1745

1746
  // vnode extra
1747
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1748
    for (int32_t i = 0; i < vlen; ++i) {
861,325✔
1749
      SVnodeLoad *pLoad = taosArrayGet(pReq->pVloads, i);
735,920✔
1750
      int64_t     reserved = 0;
735,920✔
1751
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->syncTerm));
1,471,840!
1752
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &reserved));
735,920!
1753
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &reserved));
735,920!
1754
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &reserved));
735,920!
1755
    }
1756
  }
1757
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1758
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->ipWhiteVer));
250,810!
1759
  }
1760

1761
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1762
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->analVer));
250,810!
1763
  }
1764

1765
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1766
    TAOS_CHECK_EXIT(tDeserializeSMonitorParas(&decoder, &pReq->clusterCfg.monitorParas));
125,405!
1767
  }
1768

1769
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1770
    for (int32_t i = 0; i < vlen; ++i) {
861,325✔
1771
      SVnodeLoad *pLoad = taosArrayGet(pReq->pVloads, i);
735,920✔
1772
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->syncAppliedIndex));
1,471,840!
1773
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->syncCommitIndex));
1,471,840!
1774
    }
1775
  }
1776

1777
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1778
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->timestamp));
250,810!
1779
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->timestamp));
250,810!
1780
  }
1781

1782
  // Decode buffer info
1783
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1784
    for (int32_t i = 0; i < vlen; ++i) {
861,325✔
1785
      SVnodeLoad *pLoad = taosArrayGet(pReq->pVloads, i);
735,920✔
1786
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->bufferSegmentUsed));
1,471,840!
1787
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pLoad->bufferSegmentSize));
1,471,840!
1788
    }
1789
  }
1790

1791
  if (!tDecodeIsEnd(&decoder)) {
125,405!
1792
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->clusterCfg.statusIntervalMs));
250,810!
1793
  }
1794
  tEndDecode(&decoder);
125,405✔
1795

1796
_exit:
125,405✔
1797
  tDecoderClear(&decoder);
125,405✔
1798
  return code;
125,405✔
1799
}
1800

1801
void tFreeSStatusReq(SStatusReq *pReq) { taosArrayDestroy(pReq->pVloads); }
125,661✔
1802

1803
int32_t tSerializeSConfigReq(void *buf, int32_t bufLen, SConfigReq *pReq) {
4,812✔
1804
  SEncoder encoder = {0};
4,812✔
1805
  int32_t  code = 0;
4,812✔
1806
  int32_t  lino;
1807
  int32_t  tlen;
1808
  tEncoderInit(&encoder, buf, bufLen);
4,812✔
1809
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4,812!
1810
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->cver));
9,624!
1811
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->forceReadConfig));
9,624!
1812
  if (pReq->forceReadConfig) {
4,812✔
1813
    TAOS_CHECK_EXIT(tSerializeSConfigArray(&encoder, pReq->array));
18!
1814
  }
1815
  tEndEncode(&encoder);
4,812✔
1816
_exit:
4,812✔
1817
  if (code) {
4,812!
1818
    tlen = code;
×
1819
  } else {
1820
    tlen = encoder.pos;
4,812✔
1821
  }
1822
  tEncoderClear(&encoder);
4,812✔
1823
  return tlen;
4,812✔
1824
}
1825

1826
int32_t tDeserializeSConfigReq(void *buf, int32_t bufLen, SConfigReq *pReq) {
2,407✔
1827
  SDecoder decoder = {0};
2,407✔
1828
  int32_t  code = 0;
2,407✔
1829
  int32_t  lino;
1830
  tDecoderInit(&decoder, buf, bufLen);
2,407✔
1831
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,407!
1832
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->cver));
4,814!
1833
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->forceReadConfig));
4,814!
1834
  if (pReq->forceReadConfig) {
2,407✔
1835
    pReq->array = taosArrayInit(128, sizeof(SConfigItem));
9✔
1836
    if (pReq->array == NULL) {
9!
1837
      TAOS_CHECK_EXIT(terrno);
×
1838
    }
1839
    TAOS_CHECK_EXIT(tDeserializeSConfigArray(&decoder, pReq->array));
9!
1840
  }
1841
  tEndDecode(&decoder);
2,407✔
1842
_exit:
2,407✔
1843
  tDecoderClear(&decoder);
2,407✔
1844
  return code;
2,407✔
1845
}
1846

1847
void tFreeSConfigReq(SConfigReq *pReq) { taosArrayDestroy(pReq->array); }
2,407✔
1848

1849
int32_t tSerializeSConfigRsp(void *buf, int32_t bufLen, SConfigRsp *pRsp) {
4,814✔
1850
  SEncoder encoder = {0};
4,814✔
1851
  int32_t  code = 0;
4,814✔
1852
  int32_t  lino;
1853
  int32_t  tlen;
1854
  tEncoderInit(&encoder, buf, bufLen);
4,814✔
1855
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4,814!
1856
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->forceReadConfig));
9,628!
1857
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->isConifgVerified));
9,628!
1858
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->isVersionVerified));
9,628!
1859
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->cver));
9,628!
1860
  if ((!pRsp->isConifgVerified) || (!pRsp->isVersionVerified)) {
4,814!
1861
    TAOS_CHECK_EXIT(tSerializeSConfigArray(&encoder, pRsp->array));
4,814!
1862
  }
1863
  tEndEncode(&encoder);
4,814✔
1864
_exit:
4,814✔
1865
  if (code) {
4,814!
1866
    tlen = code;
×
1867
  } else {
1868
    tlen = encoder.pos;
4,814✔
1869
  }
1870
  tEncoderClear(&encoder);
4,814✔
1871
  return tlen;
4,814✔
1872
}
1873

1874
int32_t tDeserializeSConfigRsp(void *buf, int32_t bufLen, SConfigRsp *pRsp) {
2,404✔
1875
  SDecoder decoder = {0};
2,404✔
1876
  int32_t  code = 0;
2,404✔
1877
  int32_t  lino;
1878
  tDecoderInit(&decoder, buf, bufLen);
2,404✔
1879
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,404!
1880
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->forceReadConfig));
4,808!
1881
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->isConifgVerified));
4,808!
1882
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->isVersionVerified));
4,808!
1883
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->cver));
4,808!
1884
  if ((!pRsp->isConifgVerified) || (!pRsp->isVersionVerified)) {
2,404!
1885
    pRsp->array = taosArrayInit(128, sizeof(SConfigItem));
2,404✔
1886
    TAOS_CHECK_EXIT(tDeserializeSConfigArray(&decoder, pRsp->array));
2,404!
1887
  }
1888
_exit:
2,404✔
1889
  tEndDecode(&decoder);
2,404✔
1890
  tDecoderClear(&decoder);
2,404✔
1891
  return code;
2,404✔
1892
}
1893

1894
void tFreeSConfigRsp(SConfigRsp *pRsp) { taosArrayDestroy(pRsp->array); }
2,404✔
1895

1896
int32_t tSerializeSDnodeInfoReq(void *buf, int32_t bufLen, SDnodeInfoReq *pReq) {
7,554✔
1897
  int32_t  code = 0, lino = 0;
7,554✔
1898
  int32_t  tlen = 0;
7,554✔
1899
  SEncoder encoder = {0};
7,554✔
1900
  tEncoderInit(&encoder, buf, bufLen);
7,554✔
1901

1902
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
7,554!
1903
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
15,108!
1904
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->machineId));
15,108!
1905

1906
  tEndEncode(&encoder);
7,554✔
1907

1908
  tlen = encoder.pos;
7,554✔
1909
_exit:
7,554✔
1910
  tEncoderClear(&encoder);
7,554✔
1911
  return code < 0 ? code : tlen;
7,554!
1912
}
1913

1914
int32_t tDeserializeSDnodeInfoReq(void *buf, int32_t bufLen, SDnodeInfoReq *pReq) {
3,775✔
1915
  int32_t  code = 0, lino = 0;
3,775✔
1916
  SDecoder decoder = {0};
3,775✔
1917
  tDecoderInit(&decoder, buf, bufLen);
3,775✔
1918

1919
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3,775!
1920
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
7,550!
1921
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->machineId));
3,775!
1922

1923
_exit:
3,775✔
1924
  tEndDecode(&decoder);
3,775✔
1925
  tDecoderClear(&decoder);
3,775✔
1926
  return code;
3,775✔
1927
}
1928

1929
int32_t tSerializeSStatusRsp(void *buf, int32_t bufLen, SStatusRsp *pRsp) {
19,626✔
1930
  SEncoder encoder = {0};
19,626✔
1931
  int32_t  code = 0;
19,626✔
1932
  int32_t  lino;
1933
  int32_t  tlen;
1934
  tEncoderInit(&encoder, buf, bufLen);
19,626✔
1935

1936
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
19,626!
1937

1938
  // status
1939
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->dnodeVer));
39,252!
1940

1941
  // dnode cfg
1942
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->dnodeCfg.dnodeId));
39,252!
1943
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->dnodeCfg.clusterId));
39,252!
1944

1945
  // dnode eps
1946
  int32_t dlen = (int32_t)taosArrayGetSize(pRsp->pDnodeEps);
19,626✔
1947
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, dlen));
19,626!
1948
  for (int32_t i = 0; i < dlen; ++i) {
84,554✔
1949
    SDnodeEp *pDnodeEp = taosArrayGet(pRsp->pDnodeEps, i);
64,928✔
1950
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pDnodeEp->id));
129,856!
1951
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pDnodeEp->isMnode));
129,856!
1952
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pDnodeEp->ep.fqdn));
129,856!
1953
    TAOS_CHECK_EXIT(tEncodeU16(&encoder, pDnodeEp->ep.port));
129,856!
1954
  }
1955

1956
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->statusSeq));
39,252!
1957

1958
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->ipWhiteVer));
39,252!
1959
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->analVer));
39,252!
1960
  tEndEncode(&encoder);
19,626✔
1961

1962
_exit:
19,626✔
1963
  if (code) {
19,626!
1964
    tlen = code;
×
1965
  } else {
1966
    tlen = encoder.pos;
19,626✔
1967
  }
1968
  tEncoderClear(&encoder);
19,626✔
1969
  return tlen;
19,626✔
1970
}
1971

1972
int32_t tDeserializeSStatusRsp(void *buf, int32_t bufLen, SStatusRsp *pRsp) {
9,728✔
1973
  SDecoder decoder = {0};
9,728✔
1974
  int32_t  code = 0;
9,728✔
1975
  int32_t  lino;
1976
  tDecoderInit(&decoder, buf, bufLen);
9,728✔
1977

1978
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
9,728!
1979

1980
  // status
1981
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->dnodeVer));
19,456!
1982

1983
  // cluster cfg
1984
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->dnodeCfg.dnodeId));
19,456!
1985
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->dnodeCfg.clusterId));
19,456!
1986

1987
  // dnode eps
1988
  int32_t dlen = 0;
9,728✔
1989
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &dlen));
9,728!
1990
  pRsp->pDnodeEps = taosArrayInit(dlen, sizeof(SDnodeEp));
9,728✔
1991
  if (pRsp->pDnodeEps == NULL) {
9,728!
1992
    TAOS_CHECK_EXIT(terrno);
×
1993
  }
1994

1995
  for (int32_t i = 0; i < dlen; ++i) {
41,758✔
1996
    SDnodeEp dnodeEp = {0};
32,030✔
1997
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &dnodeEp.id));
32,030!
1998
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &dnodeEp.isMnode));
32,030!
1999
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, dnodeEp.ep.fqdn));
32,030!
2000
    TAOS_CHECK_EXIT(tDecodeU16(&decoder, &dnodeEp.ep.port));
32,030!
2001
    if (taosArrayPush(pRsp->pDnodeEps, &dnodeEp) == NULL) {
64,060!
2002
      TAOS_CHECK_EXIT(terrno);
×
2003
    }
2004
  }
2005

2006
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->statusSeq));
19,456!
2007

2008
  if (!tDecodeIsEnd(&decoder)) {
9,728!
2009
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->ipWhiteVer));
19,456!
2010
  }
2011

2012
  if (!tDecodeIsEnd(&decoder)) {
9,728!
2013
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->analVer));
19,456!
2014
  }
2015

2016
  tEndDecode(&decoder);
9,728✔
2017
_exit:
9,728✔
2018
  tDecoderClear(&decoder);
9,728✔
2019
  return code;
9,728✔
2020
}
2021

2022
void tFreeSStatusRsp(SStatusRsp *pRsp) { taosArrayDestroy(pRsp->pDnodeEps); }
125,316✔
2023

2024
int32_t tSerializeSStatisReq(void *buf, int32_t bufLen, SStatisReq *pReq) {
494✔
2025
  SEncoder encoder = {0};
494✔
2026
  int32_t  code = 0;
494✔
2027
  int32_t  lino;
2028
  int32_t  tlen;
2029
  tEncoderInit(&encoder, buf, bufLen);
494✔
2030

2031
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
494!
2032
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->contLen));
988!
2033
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->pCont));
988!
2034
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->type));
988!
2035

2036
  tEndEncode(&encoder);
494✔
2037

2038
_exit:
494✔
2039
  if (code) {
494!
2040
    tlen = code;
×
2041
  } else {
2042
    tlen = encoder.pos;
494✔
2043
  }
2044
  tEncoderClear(&encoder);
494✔
2045
  return tlen;
494✔
2046
}
2047

2048
int32_t tDeserializeSStatisReq(void *buf, int32_t bufLen, SStatisReq *pReq) {
5,813✔
2049
  SDecoder decoder = {0};
5,813✔
2050
  int32_t  code = 0;
5,813✔
2051
  int32_t  lino;
2052
  tDecoderInit(&decoder, buf, bufLen);
5,813✔
2053

2054
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
5,813!
2055
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->contLen));
11,626!
2056
  if (pReq->contLen > 0) {
5,813!
2057
    pReq->pCont = taosMemoryMalloc(pReq->contLen + 1);
5,813!
2058
    if (pReq->pCont == NULL) {
5,813!
2059
      TAOS_CHECK_EXIT(terrno);
×
2060
    }
2061
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pCont));
5,813!
2062
  }
2063
  if (!tDecodeIsEnd(&decoder)) {
5,813!
2064
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, (int8_t *)&pReq->type));
11,626!
2065
  }
2066
  tEndDecode(&decoder);
5,813✔
2067
_exit:
5,813✔
2068
  tDecoderClear(&decoder);
5,813✔
2069
  return code;
5,813✔
2070
}
2071

2072
void tFreeSStatisReq(SStatisReq *pReq) { taosMemoryFreeClear(pReq->pCont); }
5,813!
2073

2074
int32_t tSerializeSDropUserReq(void *buf, int32_t bufLen, SDropUserReq *pReq) {
26✔
2075
  SEncoder encoder = {0};
26✔
2076
  int32_t  code = 0;
26✔
2077
  int32_t  lino;
2078
  int32_t  tlen;
2079
  tEncoderInit(&encoder, buf, bufLen);
26✔
2080

2081
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
26!
2082
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->user));
52!
2083
  ENCODESQL();
78!
2084
  tEndEncode(&encoder);
26✔
2085

2086
_exit:
26✔
2087
  if (code) {
26!
2088
    tlen = code;
×
2089
  } else {
2090
    tlen = encoder.pos;
26✔
2091
  }
2092
  tEncoderClear(&encoder);
26✔
2093
  return tlen;
26✔
2094
}
2095

2096
int32_t tDeserializeSDropUserReq(void *buf, int32_t bufLen, SDropUserReq *pReq) {
80✔
2097
  SDecoder decoder = {0};
80✔
2098
  int32_t  code = 0;
80✔
2099
  int32_t  lino;
2100
  tDecoderInit(&decoder, buf, bufLen);
80✔
2101

2102
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
80!
2103
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->user));
80!
2104
  DECODESQL();
240!
2105
  tEndDecode(&decoder);
80✔
2106

2107
_exit:
80✔
2108
  tDecoderClear(&decoder);
80✔
2109
  return code;
80✔
2110
}
2111

2112
void tFreeSDropUserReq(SDropUserReq *pReq) { FREESQL(); }
93!
2113

2114
int32_t tSerializeSAuditReq(void *buf, int32_t bufLen, SAuditReq *pReq) {
106,774✔
2115
  SEncoder encoder = {0};
106,774✔
2116
  int32_t  code = 0;
106,774✔
2117
  int32_t  lino;
2118
  int32_t  tlen;
2119
  tEncoderInit(&encoder, buf, bufLen);
106,774✔
2120

2121
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
106,773!
2122

2123
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->operation));
213,554!
2124
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
213,554!
2125
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->table));
213,554!
2126
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sqlLen));
213,554!
2127
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->pSql));
213,554!
2128

2129
  tEndEncode(&encoder);
106,777✔
2130

2131
_exit:
106,774✔
2132
  if (code) {
106,774!
2133
    tlen = code;
×
2134
  } else {
2135
    tlen = encoder.pos;
106,774✔
2136
  }
2137
  tEncoderClear(&encoder);
106,774✔
2138
  return tlen;
106,772✔
2139
}
2140

2141
int32_t tDeserializeSAuditReq(void *buf, int32_t bufLen, SAuditReq *pReq) {
61,703✔
2142
  SDecoder decoder = {0};
61,703✔
2143
  int32_t  code = 0;
61,703✔
2144
  int32_t  lino;
2145
  tDecoderInit(&decoder, buf, bufLen);
61,703✔
2146

2147
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
61,703!
2148

2149
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->operation));
61,704!
2150
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
61,704!
2151
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->table));
61,704!
2152
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sqlLen));
123,408!
2153
  if (pReq->sqlLen > 0) {
61,704!
2154
    pReq->pSql = taosMemoryMalloc(pReq->sqlLen + 1);
61,704!
2155
    if (pReq->pSql == NULL) {
61,704!
2156
      TAOS_CHECK_EXIT(terrno);
×
2157
    }
2158
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pSql));
61,704!
2159
  }
2160
  tEndDecode(&decoder);
61,703✔
2161
_exit:
61,703✔
2162
  tDecoderClear(&decoder);
61,703✔
2163
  return code;
61,702✔
2164
}
2165

2166
void tFreeSAuditReq(SAuditReq *pReq) { taosMemoryFreeClear(pReq->pSql); }
61,702!
2167

2168
SIpWhiteListDual *cloneIpWhiteList(SIpWhiteListDual *pIpWhiteList) {
5,459✔
2169
  if (pIpWhiteList == NULL) return NULL;
5,459!
2170

2171
  int32_t sz = sizeof(SIpWhiteListDual) + pIpWhiteList->num * sizeof(SIpRange);
5,459✔
2172

2173
  SIpWhiteListDual *pNew = taosMemoryCalloc(1, sz);
5,459!
2174
  if (pNew) {
5,459!
2175
    memcpy(pNew, pIpWhiteList, sz);
5,459✔
2176
  }
2177
  return pNew;
5,459✔
2178
}
2179

2180
int32_t cvtIpWhiteListToDual(SIpWhiteList *pWhiteList, SIpWhiteListDual **pWhiteListDual) {
×
2181
  int32_t           code = 0;
×
2182
  int32_t           lino = 0;
×
2183
  SIpWhiteListDual *pList = NULL;
×
2184
  SIpRange          p6 = {0};
×
2185

2186
  pList = taosMemoryCalloc(1, sizeof(SIpWhiteListDual) + sizeof(SIpRange) * (pWhiteList->num + 1));
×
2187
  if (pList == NULL) {
×
2188
    TAOS_CHECK_GOTO(terrno, &lino, _OVER);
×
2189
  }
2190
  pList->num = pWhiteList->num;
×
2191
  for (int i = 0; i < pWhiteList->num; i++) {
×
2192
    SIpV4Range *pIp4 = &(pWhiteList->pIpRange[i]);
×
2193
    SIpRange   *pRange = &(pList->pIpRanges[i]);
×
2194

2195
    pRange->type = 0;
×
2196
    memcpy(&pRange->ipV4, pIp4, sizeof(SIpV4Range));
×
2197
  }
2198

2199
  code = createDefaultIp6Range(&p6);
×
2200
  TAOS_CHECK_GOTO(code, &lino, _OVER);
×
2201

2202
  memcpy(pList->pIpRanges + pList->num, &p6, sizeof(SIpRange));
×
2203
  pList->num++;
×
2204

2205
_OVER:
×
2206
  if (code != 0) {
×
2207
    taosMemoryFree(pList);
×
2208
  } else {
2209
    *pWhiteListDual = pList;
×
2210
  }
2211
  return code;
×
2212
}
2213

2214
int32_t createDefaultIp6Range(SIpRange *pRange) {
1,633✔
2215
  int32_t code = 0;
1,633✔
2216
  SIpAddr add6 = {.type = 1, .ipv6 = {"::1"}, .mask = 128};
1,633✔
2217
  return tIpStrToUint(&add6, pRange);
1,633✔
2218
}
2219

2220
int32_t createDefaultIp4Range(SIpRange *pRange) {
1,636✔
2221
  int32_t code = 0;
1,636✔
2222
  SIpAddr add4 = {.type = 0, .ipv4 = {"127.0.0.1"}, .mask = 32};
1,636✔
2223
  return tIpStrToUint(&add4, pRange);
1,636✔
2224
}
2225
int32_t cvtIpWhiteListDualToV4(SIpWhiteListDual *pWhiteListDual, SIpWhiteList **pWhiteList) {
×
2226
  int32_t code = 0;
×
2227

2228
  int32_t       num = 0;
×
2229
  SIpWhiteList *p = taosMemCalloc(1, sizeof(SIpWhiteList) + sizeof(SIpV4Range) * pWhiteListDual->num);
×
2230
  if (p == NULL) {
×
2231
    return terrno;
×
2232
  }
2233

2234
  for (int32_t i = 0; i < pWhiteListDual->num; ++i) {
×
2235
    SIpRange *pRange = &pWhiteListDual->pIpRanges[i];
×
2236
    if (pRange->type == 0) {
×
2237
      memcpy(&p->pIpRange[num], &pRange->ipV4, sizeof(SIpV4Range));
×
2238
    }
2239
    num++;
×
2240
  }
2241
  p->num = num;
×
2242

2243
  *pWhiteList = p;
×
2244

2245
  return code;
×
2246
}
2247
int32_t tSerializeSCreateUserReq(void *buf, int32_t bufLen, SCreateUserReq *pReq) {
126✔
2248
  SEncoder encoder = {0};
126✔
2249
  int32_t  code = 0;
126✔
2250
  int32_t  lino;
2251
  int32_t  tlen;
2252
  tEncoderInit(&encoder, buf, bufLen);
126✔
2253

2254
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
126!
2255
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->createType));
252!
2256
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->superUser));
252!
2257
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->sysInfo));
252!
2258
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->enable));
252!
2259
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->user));
252!
2260
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->pass));
252!
2261
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numIpRanges));
252!
2262
  for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
126!
2263
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->pIpRanges[i].ip));
×
2264
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->pIpRanges[i].mask));
×
2265
  }
2266
  ENCODESQL();
378!
2267
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->isImport));
252!
2268
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->createDb));
252!
2269
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->passIsMd5));
252!
2270

2271
  for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
126!
2272
    SIpRange *pRange = &pReq->pIpDualRanges[i];
×
2273
    code = tSerializeIpRange(&encoder, pRange);
×
2274
    TAOS_CHECK_EXIT(code);
×
2275
  }
2276
  tEndEncode(&encoder);
126✔
2277

2278
_exit:
126✔
2279
  if (code) {
126!
2280
    tlen = code;
×
2281
  } else {
2282
    tlen = encoder.pos;
126✔
2283
  }
2284
  tEncoderClear(&encoder);
126✔
2285
  return tlen;
126✔
2286
}
2287

2288
int32_t tDeserializeSCreateUserReq(void *buf, int32_t bufLen, SCreateUserReq *pReq) {
217✔
2289
  SDecoder decoder = {0};
217✔
2290
  int32_t  code = 0;
217✔
2291
  int32_t  lino;
2292
  tDecoderInit(&decoder, buf, bufLen);
217✔
2293

2294
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
217!
2295
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->createType));
434!
2296
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->superUser));
434!
2297
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->sysInfo));
434!
2298
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->enable));
434!
2299
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->user));
217!
2300
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pass));
217!
2301
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numIpRanges));
434!
2302
  pReq->pIpRanges = taosMemoryMalloc(pReq->numIpRanges * sizeof(SIpV4Range));
217!
2303
  if (pReq->pIpRanges == NULL) {
217!
2304
    TAOS_CHECK_EXIT(terrno);
×
2305
  }
2306
  for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
222✔
2307
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &(pReq->pIpRanges[i].ip)));
10!
2308
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &(pReq->pIpRanges[i].mask)));
10!
2309
  }
2310
  DECODESQL();
651!
2311
  if (!tDecodeIsEnd(&decoder)) {
217!
2312
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->isImport));
434!
2313
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->createDb));
434!
2314
  }
2315
  if (!tDecodeIsEnd(&decoder)) {
217!
2316
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->passIsMd5));
434!
2317
  }
2318

2319
  if (!tDecodeIsEnd(&decoder)) {
217✔
2320
    pReq->pIpDualRanges = taosMemoryMalloc(pReq->numIpRanges * sizeof(SIpRange));
3!
2321
    if (pReq->pIpDualRanges == NULL) {
3!
2322
      TAOS_CHECK_EXIT(terrno);
×
2323
    }
2324
    for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
8✔
2325
      SIpRange *pRange = &pReq->pIpDualRanges[i];
5✔
2326
      code = tDeserializeIpRange(&decoder, pRange);
5✔
2327
      TAOS_CHECK_EXIT(code);
5!
2328
    }
2329
  }
2330

2331
  tEndDecode(&decoder);
217✔
2332

2333
_exit:
217✔
2334
  tDecoderClear(&decoder);
217✔
2335
  return code;
217✔
2336
}
2337

2338
static int32_t getIpv4Range(SUpdateUserIpWhite *pReq, SIpV4Range **pIpRange, int32_t *num) {
×
2339
  int32_t code = 0;
×
2340
  if (pReq->numOfRange <= 0) {
×
2341
    return code;
×
2342
  }
2343

2344
  SIpV4Range *p = taosMemoryCalloc(1, pReq->numOfRange * sizeof(SIpV4Range));
×
2345
  if (p == NULL) {
×
2346
    return terrno;
×
2347
  }
2348

2349
  int32_t cnt = 0;
×
2350
  for (int32_t i = 0; i < pReq->numOfRange; i++) {
×
2351
    SIpRange *pRange = &pReq->pIpDualRanges[i];
×
2352
    if (pRange->type == 0) {
×
2353
      SIpV4Range *pIp4 = (SIpV4Range *)&pRange->ipV4;
×
2354
      memcpy(&p[cnt], pIp4, sizeof(SIpV4Range));
×
2355
    } else {
2356
      continue;
×
2357
    }
2358
  }
2359

2360
  *pIpRange = p;
×
2361
  *num = cnt;
×
2362

2363
  return code;
×
2364
}
2365
int32_t tSerializeSUpdateIpWhite(void *buf, int32_t bufLen, SUpdateIpWhite *pReq) {
×
2366
  SEncoder    encoder = {0};
×
2367
  int32_t     code = 0;
×
2368
  int32_t     lino;
2369
  int32_t     tlen;
2370
  int32_t     num = 0;
×
2371
  SIpV4Range *p = NULL;
×
2372

2373
  tEncoderInit(&encoder, buf, bufLen);
×
2374
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
2375
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->ver));
×
2376
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfUser));
×
2377
  for (int i = 0; i < pReq->numOfUser; i++) {
×
2378
    SUpdateUserIpWhite *pUser = &(pReq->pUserIpWhite[i]);
×
2379

2380
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pUser->ver));
×
2381
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pUser->user));
×
2382

2383
    TAOS_CHECK_EXIT(getIpv4Range(pUser, &p, &num));
×
2384
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
×
2385
    for (int32_t i = 0; i < num; i++) {
×
2386
      SIpV4Range *pRange = &p[i];
×
2387
      TAOS_CHECK_EXIT(tEncodeU32(&encoder, pRange->ip));
×
2388
      TAOS_CHECK_EXIT(tEncodeU32(&encoder, pRange->mask));
×
2389
    }
2390
    taosMemFreeClear(p);
×
2391
  }
2392

2393
  tEndEncode(&encoder);
×
2394

2395
_exit:
×
2396
  taosMemFreeClear(p);
×
2397
  if (code) {
×
2398
    tlen = code;
×
2399
  } else {
2400
    tlen = encoder.pos;
×
2401
  }
2402
  tEncoderClear(&encoder);
×
2403
  return tlen;
×
2404
}
2405
int32_t tDeserializeSUpdateIpWhite(void *buf, int32_t bufLen, SUpdateIpWhite *pReq) {
×
2406
  SDecoder decoder = {0};
×
2407
  int32_t  code = 0;
×
2408
  int32_t  lino;
2409
  tDecoderInit(&decoder, buf, bufLen);
×
2410

2411
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
2412
  // impl later
2413
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->ver));
×
2414
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfUser));
×
2415

2416
  if ((pReq->pUserIpWhite = taosMemoryCalloc(1, sizeof(SUpdateUserIpWhite) * pReq->numOfUser)) == NULL) {
×
2417
    TAOS_CHECK_EXIT(terrno);
×
2418
  }
2419
  for (int i = 0; i < pReq->numOfUser; i++) {
×
2420
    SUpdateUserIpWhite *pUserWhite = &pReq->pUserIpWhite[i];
×
2421
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pUserWhite->ver));
×
2422
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pUserWhite->user));
×
2423
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pUserWhite->numOfRange));
×
2424

2425
    if ((pUserWhite->pIpRanges = taosMemoryCalloc(1, pUserWhite->numOfRange * sizeof(SIpV4Range))) == NULL) {
×
2426
      TAOS_CHECK_EXIT(terrno);
×
2427
    }
2428
    for (int j = 0; j < pUserWhite->numOfRange; j++) {
×
2429
      SIpV4Range *pRange = &pUserWhite->pIpRanges[j];
×
2430
      TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pRange->ip));
×
2431
      TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pRange->mask));
×
2432
    }
2433
  }
2434

2435
  tEndDecode(&decoder);
×
2436

2437
_exit:
×
2438
  tDecoderClear(&decoder);
×
2439
  return code;
×
2440
}
2441
void tFreeSUpdateIpWhiteReq(SUpdateIpWhite *pReq) {
37✔
2442
  if (pReq == NULL) return;
37!
2443

2444
  if (pReq->pUserIpWhite) {
37!
2445
    for (int i = 0; i < pReq->numOfUser; i++) {
76✔
2446
      SUpdateUserIpWhite *pUserWhite = &pReq->pUserIpWhite[i];
38✔
2447
      taosMemoryFree(pUserWhite->pIpRanges);
38!
2448
    }
2449
  }
2450
  taosMemoryFree(pReq->pUserIpWhite);
37!
2451
  return;
39✔
2452
}
2453

2454
int32_t tSerializeIpRange(SEncoder *encoder, SIpRange *pRange) {
122,083✔
2455
  int32_t lino;
2456
  int32_t code = 0;
122,083✔
2457

2458
  TAOS_CHECK_EXIT(tEncodeI8(encoder, pRange->type));
244,166!
2459
  if (pRange->type == 0) {
122,083✔
2460
    SIpV4Range *pIp4 = (SIpV4Range *)&pRange->ipV4;
113,570✔
2461
    TAOS_CHECK_EXIT(tEncodeU32(encoder, pIp4->ip));
227,140!
2462
    TAOS_CHECK_EXIT(tEncodeU32(encoder, pIp4->mask));
227,140!
2463
  } else {
2464
    SIpV6Range *pIp6 = (SIpV6Range *)&pRange->ipV6;
8,513✔
2465
    TAOS_CHECK_EXIT(tEncodeU64(encoder, pIp6->addr[0]));
17,026!
2466
    TAOS_CHECK_EXIT(tEncodeU64(encoder, pIp6->addr[1]));
17,026!
2467
    TAOS_CHECK_EXIT(tEncodeU32(encoder, pIp6->mask));
17,026!
2468
  }
2469
_exit:
8,513✔
2470
  return code;
122,083✔
2471
}
2472

2473
int32_t tDeserializeIpRange(SDecoder *decoder, SIpRange *pRange) {
314,331✔
2474
  int32_t lino = 0;
314,331✔
2475
  int32_t code = 0;
314,331✔
2476

2477
  TAOS_CHECK_EXIT(tDecodeI8(decoder, &pRange->type));
628,680!
2478
  if (pRange->type == 0) {
314,349✔
2479
    SIpV4Range *pIp4 = (SIpV4Range *)&pRange->ipV4;
309,889✔
2480
    TAOS_CHECK_EXIT(tDecodeU32(decoder, &pIp4->ip));
619,770!
2481
    TAOS_CHECK_EXIT(tDecodeU32(decoder, &pIp4->mask));
619,777!
2482
  } else {
2483
    SIpV6Range *pIp6 = (SIpV6Range *)&pRange->ipV6;
4,460✔
2484
    TAOS_CHECK_EXIT(tDecodeU64(decoder, &pIp6->addr[0]));
8,927!
2485
    TAOS_CHECK_EXIT(tDecodeU64(decoder, &pIp6->addr[1]));
8,934!
2486
    TAOS_CHECK_EXIT(tDecodeU32(decoder, &pIp6->mask));
8,934!
2487
  }
2488
_exit:
4,467✔
2489
  return code;
314,363✔
2490
}
2491
int32_t tSerializeSUpdateIpWhiteDual(void *buf, int32_t bufLen, SUpdateIpWhite *pReq) {
14✔
2492
  SEncoder encoder = {0};
14✔
2493
  int32_t  code = 0;
14✔
2494
  int32_t  lino;
2495
  int32_t  tlen;
2496

2497
  tEncoderInit(&encoder, buf, bufLen);
14✔
2498
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
14!
2499
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->ver));
28!
2500
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfUser));
28!
2501
  for (int i = 0; i < pReq->numOfUser; i++) {
28✔
2502
    SUpdateUserIpWhite *pUser = &(pReq->pUserIpWhite[i]);
14✔
2503

2504
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pUser->ver));
28!
2505
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pUser->user));
28!
2506
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pUser->numOfRange));
28!
2507
    for (int j = 0; j < pUser->numOfRange; j++) {
42✔
2508
      SIpRange *pRange = &pUser->pIpDualRanges[j];
28✔
2509
      TAOS_CHECK_EXIT(tSerializeIpRange(&encoder, pRange));
28!
2510
    }
2511
  }
2512

2513
  tEndEncode(&encoder);
14✔
2514

2515
_exit:
14✔
2516
  if (code) {
14!
2517
    tlen = code;
×
2518
  } else {
2519
    tlen = encoder.pos;
14✔
2520
  }
2521
  tEncoderClear(&encoder);
14✔
2522
  return tlen;
14✔
2523
}
2524
int32_t tDeserializeSUpdateIpWhiteDual(void *buf, int32_t bufLen, SUpdateIpWhite *pReq) {
7✔
2525
  SDecoder decoder = {0};
7✔
2526
  int32_t  code = 0;
7✔
2527
  int32_t  lino;
2528
  tDecoderInit(&decoder, buf, bufLen);
7✔
2529

2530
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
7!
2531
  // impl later
2532
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->ver));
14!
2533
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfUser));
14!
2534

2535
  if ((pReq->pUserIpWhite = taosMemoryCalloc(1, sizeof(SUpdateUserIpWhite) * pReq->numOfUser)) == NULL) {
7!
2536
    TAOS_CHECK_EXIT(terrno);
×
2537
  }
2538
  for (int i = 0; i < pReq->numOfUser; i++) {
14✔
2539
    SUpdateUserIpWhite *pUserWhite = &pReq->pUserIpWhite[i];
7✔
2540
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pUserWhite->ver));
14!
2541
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pUserWhite->user));
7!
2542
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pUserWhite->numOfRange));
14!
2543

2544
    if ((pUserWhite->pIpRanges = taosMemoryCalloc(1, pUserWhite->numOfRange * sizeof(SIpRange))) == NULL) {
7!
2545
      TAOS_CHECK_EXIT(terrno);
×
2546
    }
2547
    for (int j = 0; j < pUserWhite->numOfRange; j++) {
21✔
2548
      SIpRange *pRange = &pUserWhite->pIpDualRanges[j];
14✔
2549
      TAOS_CHECK_EXIT(tDeserializeIpRange(&decoder, pRange));
14!
2550
    }
2551
  }
2552

2553
  tEndDecode(&decoder);
7✔
2554
_exit:
7✔
2555
  if (code < 0) {
7!
2556
    uError("Failed to deserialize SUpdateIpWhiteDual at line %d, code: %s", lino, tstrerror(code));
×
2557
  }
2558
  tDecoderClear(&decoder);
7✔
2559
  return code;
7✔
2560
}
2561
void tFreeSUpdateIpWhiteDualReq(SUpdateIpWhite *pReq) {
7✔
2562
  if (pReq == NULL) return;
7!
2563

2564
  if (pReq->pUserIpWhite) {
7!
2565
    for (int i = 0; i < pReq->numOfUser; i++) {
14✔
2566
      SUpdateUserIpWhite *pUserWhite = &pReq->pUserIpWhite[i];
7✔
2567
      taosMemoryFree(pUserWhite->pIpDualRanges);
7!
2568
    }
2569
  }
2570
  taosMemoryFree(pReq->pUserIpWhite);
7!
2571
  return;
7✔
2572
}
2573

2574
int32_t cloneSUpdateIpWhiteReq(SUpdateIpWhite *pReq, SUpdateIpWhite **pUpdateMsg) {
193,680✔
2575
  int32_t code = 0;
193,680✔
2576
  if (pReq == NULL) {
193,680✔
2577
    return 0;
193,648✔
2578
  }
2579
  SUpdateIpWhite *pClone = taosMemoryCalloc(1, sizeof(SUpdateIpWhite));
32!
2580
  if (pClone == NULL) {
32!
2581
    return terrno;
×
2582
  }
2583

2584
  pClone->numOfUser = pReq->numOfUser;
32✔
2585
  pClone->ver = pReq->ver;
32✔
2586
  pClone->pUserIpWhite = taosMemoryCalloc(1, sizeof(SUpdateUserIpWhite) * pReq->numOfUser);
32!
2587
  if (pClone->pUserIpWhite == NULL) {
32!
2588
    taosMemoryFree(pClone);
×
2589
    return terrno;
×
2590
  }
2591

2592
  for (int i = 0; i < pReq->numOfUser; i++) {
64✔
2593
    SUpdateUserIpWhite *pNew = &pClone->pUserIpWhite[i];
32✔
2594
    SUpdateUserIpWhite *pOld = &pReq->pUserIpWhite[i];
32✔
2595

2596
    pNew->ver = pOld->ver;
32✔
2597
    memcpy(pNew->user, pOld->user, strlen(pOld->user));
32✔
2598
    pNew->numOfRange = pOld->numOfRange;
32✔
2599

2600
    int32_t sz = pOld->numOfRange * sizeof(SIpRange);
32✔
2601
    pNew->pIpDualRanges = taosMemoryCalloc(1, sz);
32!
2602
    if (pNew->pIpDualRanges == NULL) {
32!
2603
      code = terrno;
×
2604
      break;
×
2605
    }
2606
    memcpy(pNew->pIpDualRanges, pOld->pIpDualRanges, sz);
32✔
2607
  }
2608
_return:
32✔
2609
  if (code < 0) {
32!
2610
    tFreeSUpdateIpWhiteReq(pClone);
×
2611
    taosMemoryFree(pClone);
×
2612
  } else {
2613
    *pUpdateMsg = pClone;
32✔
2614
  }
2615
  return code;
32✔
2616
}
2617
int32_t tSerializeRetrieveIpWhite(void *buf, int32_t bufLen, SRetrieveIpWhiteReq *pReq) {
14✔
2618
  SEncoder encoder = {0};
14✔
2619
  int32_t  code = 0;
14✔
2620
  int32_t  lino;
2621
  int32_t  tlen;
2622
  tEncoderInit(&encoder, buf, bufLen);
14✔
2623

2624
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
14!
2625
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->ipWhiteVer));
28!
2626
  tEndEncode(&encoder);
14✔
2627

2628
_exit:
14✔
2629
  if (code) {
14!
2630
    tlen = code;
×
2631
  } else {
2632
    tlen = encoder.pos;
14✔
2633
  }
2634
  tEncoderClear(&encoder);
14✔
2635
  return tlen;
14✔
2636
}
2637

2638
int32_t tDeserializeRetrieveIpWhite(void *buf, int32_t bufLen, SRetrieveIpWhiteReq *pReq) {
7✔
2639
  SDecoder decoder = {0};
7✔
2640
  int32_t  code = 0;
7✔
2641
  int32_t  lino;
2642

2643
  tDecoderInit(&decoder, buf, bufLen);
7✔
2644

2645
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
7!
2646
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->ipWhiteVer));
14!
2647
  tEndDecode(&decoder);
7✔
2648

2649
_exit:
7✔
2650
  tDecoderClear(&decoder);
7✔
2651
  return code;
7✔
2652
}
2653

2654
int32_t tSerializeRetrieveAnalyticAlgoReq(void *buf, int32_t bufLen, SRetrieveAnalyticsAlgoReq *pReq) {
×
2655
  SEncoder encoder = {0};
×
2656
  int32_t  code = 0;
×
2657
  int32_t  lino;
2658
  int32_t  tlen;
2659
  tEncoderInit(&encoder, buf, bufLen);
×
2660

2661
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
2662
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
×
2663
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->analVer));
×
2664
  tEndEncode(&encoder);
×
2665

2666
_exit:
×
2667
  if (code) {
×
2668
    tlen = code;
×
2669
  } else {
2670
    tlen = encoder.pos;
×
2671
  }
2672
  tEncoderClear(&encoder);
×
2673
  return tlen;
×
2674
}
2675

2676
int32_t tDeserializeRetrieveAnalyticAlgoReq(void *buf, int32_t bufLen, SRetrieveAnalyticsAlgoReq *pReq) {
×
2677
  SDecoder decoder = {0};
×
2678
  int32_t  code = 0;
×
2679
  int32_t  lino;
2680

2681
  tDecoderInit(&decoder, buf, bufLen);
×
2682

2683
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
2684
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
×
2685
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->analVer));
×
2686
  tEndDecode(&decoder);
×
2687

2688
_exit:
×
2689
  tDecoderClear(&decoder);
×
2690
  return code;
×
2691
}
2692

2693
int32_t tSerializeRetrieveAnalyticAlgoRsp(void *buf, int32_t bufLen, SRetrieveAnalyticAlgoRsp *pRsp) {
×
2694
  SEncoder encoder = {0};
×
2695
  int32_t  code = 0;
×
2696
  int32_t  lino;
2697
  int32_t  tlen;
2698
  tEncoderInit(&encoder, buf, bufLen);
×
2699

2700
  int32_t numOfAlgos = 0;
×
2701
  void   *pIter = taosHashIterate(pRsp->hash, NULL);
×
2702
  while (pIter != NULL) {
×
2703
    SAnalyticsUrl *pUrl = pIter;
×
2704
    size_t         nameLen = 0;
×
2705
    const char    *name = taosHashGetKey(pIter, &nameLen);
×
2706
    if (nameLen > 0 && nameLen <= TSDB_ANALYTIC_ALGO_KEY_LEN && pUrl->urlLen > 0) {
×
2707
      numOfAlgos++;
×
2708
    }
2709
    pIter = taosHashIterate(pRsp->hash, pIter);
×
2710
  }
2711

2712
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
2713
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->ver));
×
2714
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfAlgos));
×
2715

2716
  pIter = taosHashIterate(pRsp->hash, NULL);
×
2717
  while (pIter != NULL) {
×
2718
    SAnalyticsUrl *pUrl = pIter;
×
2719
    size_t         nameLen = 0;
×
2720
    const char    *name = taosHashGetKey(pIter, &nameLen);
×
2721
    if (nameLen > 0 && pUrl->urlLen > 0) {
×
2722
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, nameLen));
×
2723
      TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)name, nameLen));
×
2724
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pUrl->anode));
×
2725
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pUrl->type));
×
2726
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pUrl->urlLen));
×
2727
      TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)pUrl->url, pUrl->urlLen));
×
2728
    }
2729
    pIter = taosHashIterate(pRsp->hash, pIter);
×
2730
  }
2731

2732
  tEndEncode(&encoder);
×
2733

2734
_exit:
×
2735
  if (code) {
×
2736
    tlen = code;
×
2737
  } else {
2738
    tlen = encoder.pos;
×
2739
  }
2740
  tEncoderClear(&encoder);
×
2741
  return tlen;
×
2742
}
2743

2744
int32_t tDeserializeRetrieveAnalyticAlgoRsp(void *buf, int32_t bufLen, SRetrieveAnalyticAlgoRsp *pRsp) {
×
2745
  if (pRsp->hash == NULL) {
×
2746
    pRsp->hash = taosHashInit(64, MurmurHash3_32, true, HASH_ENTRY_LOCK);
×
2747
    if (pRsp->hash == NULL) {
×
2748
      terrno = TSDB_CODE_OUT_OF_BUFFER;
×
2749
      return terrno;
×
2750
    }
2751
  }
2752

2753
  SDecoder decoder = {0};
×
2754
  int32_t  code = 0;
×
2755
  int32_t  lino;
2756
  tDecoderInit(&decoder, buf, bufLen);
×
2757

2758
  int32_t       numOfAlgos = 0;
×
2759
  int32_t       nameLen;
2760
  int32_t       type;
2761
  char          name[TSDB_ANALYTIC_ALGO_KEY_LEN];
2762
  SAnalyticsUrl url = {0};
×
2763

2764
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
2765
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->ver));
×
2766
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfAlgos));
×
2767

2768
  for (int32_t f = 0; f < numOfAlgos; ++f) {
×
2769
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &nameLen));
×
2770
    if (nameLen > 0 && nameLen <= TSDB_ANALYTIC_ALGO_NAME_LEN) {
×
2771
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, name));
×
2772
    }
2773

2774
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &url.anode));
×
2775
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &type));
×
2776
    url.type = (EAnalAlgoType)type;
×
2777
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &url.urlLen));
×
2778
    if (url.urlLen > 0) {
×
2779
      TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, (void **)&url.url, NULL) < 0);
×
2780
    }
2781

2782
    char dstName[TSDB_ANALYTIC_ALGO_NAME_LEN] = {0};
×
2783
    (void)strntolower(dstName, name, nameLen);
×
2784

2785
    TAOS_CHECK_EXIT(taosHashPut(pRsp->hash, dstName, nameLen, &url, sizeof(SAnalyticsUrl)));
×
2786
  }
2787

2788
  tEndDecode(&decoder);
×
2789

2790
_exit:
×
2791
  tDecoderClear(&decoder);
×
2792
  return code;
×
2793
}
2794

2795
void tFreeRetrieveAnalyticAlgoRsp(SRetrieveAnalyticAlgoRsp *pRsp) {
×
2796
  void *pIter = taosHashIterate(pRsp->hash, NULL);
×
2797
  while (pIter != NULL) {
×
2798
    SAnalyticsUrl *pUrl = (SAnalyticsUrl *)pIter;
×
2799
    taosMemoryFree(pUrl->url);
×
2800
    pIter = taosHashIterate(pRsp->hash, pIter);
×
2801
  }
2802
  taosHashCleanup(pRsp->hash);
×
2803

2804
  pRsp->hash = NULL;
×
2805
}
×
2806

2807
void tFreeSCreateUserReq(SCreateUserReq *pReq) {
280✔
2808
  FREESQL();
280!
2809
  taosMemoryFreeClear(pReq->pIpRanges);
280!
2810
  taosMemoryFreeClear(pReq->pIpDualRanges);
280!
2811
}
280✔
2812

2813
int32_t tSerializeSAlterUserReq(void *buf, int32_t bufLen, SAlterUserReq *pReq) {
522✔
2814
  SEncoder encoder = {0};
522✔
2815
  int32_t  code = 0;
522✔
2816
  int32_t  lino;
2817
  int32_t  tlen;
2818
  tEncoderInit(&encoder, buf, bufLen);
522✔
2819

2820
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
522!
2821
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->alterType));
1,044!
2822
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->superUser));
1,044!
2823
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->sysInfo));
1,044!
2824
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->enable));
1,044!
2825
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->isView));
1,044!
2826
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->user));
1,044!
2827
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->pass));
1,044!
2828
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->objname));
1,044!
2829
  int32_t len = strlen(pReq->tabName);
522✔
2830
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, len));
522!
2831
  if (len > 0) {
522✔
2832
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->tabName));
96!
2833
  }
2834
  TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)pReq->tagCond, pReq->tagCondLen));
1,044!
2835
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numIpRanges));
1,044!
2836
  for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
522!
2837
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->pIpRanges[i].ip));
×
2838
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->pIpRanges[i].mask));
×
2839
  }
2840
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->privileges));
1,044!
2841
  ENCODESQL();
1,566!
2842
  TAOS_CHECK_EXIT(tEncodeU8(&encoder, pReq->flag));
1,044!
2843
  TAOS_CHECK_EXIT(tEncodeU8(&encoder, pReq->passIsMd5));
1,044!
2844

2845
  for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
522!
2846
    SIpRange *pRange = &pReq->pIpDualRanges[i];
×
2847
    code = tSerializeIpRange(&encoder, pRange);
×
2848
    TAOS_CHECK_EXIT(code);
×
2849
  }
2850
  tEndEncode(&encoder);
522✔
2851

2852
_exit:
522✔
2853
  if (code) {
522!
2854
    tlen = code;
×
2855
  } else {
2856
    tlen = encoder.pos;
522✔
2857
  }
2858
  tEncoderClear(&encoder);
522✔
2859
  return tlen;
522✔
2860
}
2861

2862
int32_t tDeserializeSAlterUserReq(void *buf, int32_t bufLen, SAlterUserReq *pReq) {
2,237✔
2863
  SDecoder decoder = {0};
2,237✔
2864
  int32_t  code = 0;
2,237✔
2865
  int32_t  lino;
2866
  tDecoderInit(&decoder, buf, bufLen);
2,237✔
2867

2868
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,237!
2869
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->alterType));
4,474!
2870
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->superUser));
4,474!
2871
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->sysInfo));
4,474!
2872
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->enable));
4,474!
2873
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->isView));
4,474!
2874
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->user));
2,237!
2875
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pass));
2,237!
2876
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->objname));
2,237!
2877
  if (!tDecodeIsEnd(&decoder)) {
2,237!
2878
    int32_t len = 0;
2,237✔
2879
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &len));
2,237!
2880
    if (len > 0) {
2,237✔
2881
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->tabName));
1,411!
2882
    }
2883
    uint64_t tagCondLen = 0;
2,237✔
2884
    TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, (void **)&pReq->tagCond, &tagCondLen));
4,474!
2885
    pReq->tagCondLen = tagCondLen;
2,237✔
2886
  }
2887
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numIpRanges));
4,474!
2888
  pReq->pIpRanges = taosMemoryMalloc(pReq->numIpRanges * sizeof(SIpV4Range));
2,237!
2889
  if (pReq->pIpRanges == NULL) {
2,237!
2890
    TAOS_CHECK_EXIT(terrno);
×
2891
  }
2892
  for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
2,239✔
2893
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &(pReq->pIpRanges[i].ip)));
4!
2894
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &(pReq->pIpRanges[i].mask)));
4!
2895
  }
2896
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->privileges));
4,474!
2897
  DECODESQL();
6,711!
2898
  if (!tDecodeIsEnd(&decoder)) {
2,237!
2899
    TAOS_CHECK_EXIT(tDecodeU8(&decoder, &pReq->flag));
4,474!
2900
  }
2901
  if (!tDecodeIsEnd(&decoder)) {
2,237!
2902
    TAOS_CHECK_EXIT(tDecodeU8(&decoder, &pReq->passIsMd5));
4,474!
2903
  }
2904

2905
  if (!tDecodeIsEnd(&decoder)) {
2,237✔
2906
    pReq->pIpDualRanges = taosMemoryMalloc(pReq->numIpRanges * sizeof(SIpRange));
2!
2907
    if (pReq->pIpDualRanges == NULL) {
2!
2908
      TAOS_CHECK_EXIT(terrno);
×
2909
    }
2910
    for (int32_t i = 0; i < pReq->numIpRanges; ++i) {
4✔
2911
      SIpRange *pRange = &pReq->pIpDualRanges[i];
2✔
2912
      code = tDeserializeIpRange(&decoder, pRange);
2✔
2913
      TAOS_CHECK_EXIT(code);
2!
2914
    }
2915
  }
2916

2917
  tEndDecode(&decoder);
2,237✔
2918

2919
_exit:
2,237✔
2920
  tDecoderClear(&decoder);
2,237✔
2921
  return code;
2,237✔
2922
}
2923

2924
void tFreeSAlterUserReq(SAlterUserReq *pReq) {
2,498✔
2925
  taosMemoryFreeClear(pReq->tagCond);
2,498!
2926
  taosMemoryFree(pReq->pIpRanges);
2,498!
2927
  taosMemoryFree(pReq->pIpDualRanges);
2,498!
2928
  FREESQL();
2,498!
2929
}
2,498✔
2930

2931
int32_t tSerializeSGetUserAuthReq(void *buf, int32_t bufLen, SGetUserAuthReq *pReq) {
4,086✔
2932
  SEncoder encoder = {0};
4,086✔
2933
  int32_t  code = 0;
4,086✔
2934
  int32_t  lino;
2935
  int32_t  tlen;
2936

2937
  tEncoderInit(&encoder, buf, bufLen);
4,086✔
2938
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4,110!
2939
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->user));
8,222!
2940
  tEndEncode(&encoder);
4,111✔
2941

2942
_exit:
4,110✔
2943
  if (code) {
4,110!
2944
    tlen = code;
×
2945
  } else {
2946
    tlen = encoder.pos;
4,110✔
2947
  }
2948
  tEncoderClear(&encoder);
4,110✔
2949
  return tlen;
4,110✔
2950
}
2951

2952
int32_t tDeserializeSGetUserAuthReq(void *buf, int32_t bufLen, SGetUserAuthReq *pReq) {
386,080✔
2953
  SDecoder decoder = {0};
386,080✔
2954
  int32_t  code = 0;
386,080✔
2955
  int32_t  lino;
2956
  tDecoderInit(&decoder, buf, bufLen);
386,080✔
2957

2958
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
386,082!
2959
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->user));
386,080!
2960
  tEndDecode(&decoder);
386,082✔
2961

2962
_exit:
386,078✔
2963
  tDecoderClear(&decoder);
386,078✔
2964
  return code;
386,082✔
2965
}
2966

2967
int32_t tSerializeSGetUserAuthRspImpl(SEncoder *pEncoder, SGetUserAuthRsp *pRsp) {
796,778✔
2968
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pRsp->user));
1,593,556!
2969
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->superAuth));
1,593,556!
2970
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->sysInfo));
1,593,556!
2971
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->enable));
1,593,556!
2972
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->dropped));
1,593,556!
2973
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->version));
1,593,556!
2974

2975
  int32_t numOfCreatedDbs = taosHashGetSize(pRsp->createdDbs);
796,778✔
2976
  int32_t numOfReadDbs = taosHashGetSize(pRsp->readDbs);
796,761✔
2977
  int32_t numOfWriteDbs = taosHashGetSize(pRsp->writeDbs);
796,766✔
2978

2979
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfCreatedDbs));
796,765!
2980
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfReadDbs));
796,765!
2981
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfWriteDbs));
796,765!
2982

2983
  char *db = taosHashIterate(pRsp->createdDbs, NULL);
796,765✔
2984
  while (db != NULL) {
21,465,590✔
2985
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, db));
20,668,808!
2986
    db = taosHashIterate(pRsp->createdDbs, db);
20,668,808✔
2987
  }
2988

2989
  db = taosHashIterate(pRsp->readDbs, NULL);
796,782✔
2990
  while (db != NULL) {
797,571✔
2991
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, db));
798!
2992
    db = taosHashIterate(pRsp->readDbs, db);
798✔
2993
  }
2994

2995
  db = taosHashIterate(pRsp->writeDbs, NULL);
796,773✔
2996
  while (db != NULL) {
797,542✔
2997
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, db));
770!
2998
    db = taosHashIterate(pRsp->writeDbs, db);
770✔
2999
  }
3000

3001
  int32_t numOfReadTbs = taosHashGetSize(pRsp->readTbs);
796,772✔
3002
  int32_t numOfWriteTbs = taosHashGetSize(pRsp->writeTbs);
796,768✔
3003
  int32_t numOfAlterTbs = taosHashGetSize(pRsp->alterTbs);
796,763✔
3004
  int32_t numOfReadViews = taosHashGetSize(pRsp->readViews);
796,769✔
3005
  int32_t numOfWriteViews = taosHashGetSize(pRsp->writeViews);
796,769✔
3006
  int32_t numOfAlterViews = taosHashGetSize(pRsp->alterViews);
796,771✔
3007
  int32_t numOfUseDbs = taosHashGetSize(pRsp->useDbs);
796,771✔
3008
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfReadTbs));
796,766!
3009
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfWriteTbs));
796,766!
3010
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfAlterTbs));
796,766!
3011
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfReadViews));
796,766!
3012
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfWriteViews));
796,766!
3013
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfAlterViews));
796,766!
3014
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, numOfUseDbs));
796,766!
3015

3016
  char *tb = taosHashIterate(pRsp->readTbs, NULL);
796,766✔
3017
  while (tb != NULL) {
798,714✔
3018
    size_t keyLen = 0;
1,948✔
3019
    void  *key = taosHashGetKey(tb, &keyLen);
1,948✔
3020
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, keyLen));
3,896!
3021
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, key));
1,948!
3022

3023
    size_t valueLen = 0;
1,948✔
3024
    valueLen = strlen(tb);
1,948✔
3025
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, valueLen));
3,896!
3026
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, tb));
1,948!
3027

3028
    tb = taosHashIterate(pRsp->readTbs, tb);
1,948✔
3029
  }
3030

3031
  tb = taosHashIterate(pRsp->writeTbs, NULL);
796,766✔
3032
  while (tb != NULL) {
798,709✔
3033
    size_t keyLen = 0;
1,948✔
3034
    void  *key = taosHashGetKey(tb, &keyLen);
1,948✔
3035
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, keyLen));
3,896!
3036
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, key));
1,948!
3037

3038
    size_t valueLen = 0;
1,948✔
3039
    valueLen = strlen(tb);
1,948✔
3040
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, valueLen));
3,896!
3041
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, tb));
1,948!
3042

3043
    tb = taosHashIterate(pRsp->writeTbs, tb);
1,948✔
3044
  }
3045

3046
  tb = taosHashIterate(pRsp->alterTbs, NULL);
796,761✔
3047
  while (tb != NULL) {
797,138✔
3048
    size_t keyLen = 0;
384✔
3049
    void  *key = taosHashGetKey(tb, &keyLen);
384✔
3050
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, keyLen));
768!
3051
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, key));
384!
3052

3053
    size_t valueLen = 0;
384✔
3054
    valueLen = strlen(tb);
384✔
3055
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, valueLen));
768!
3056
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, tb));
384!
3057

3058
    tb = taosHashIterate(pRsp->alterTbs, tb);
384✔
3059
  }
3060

3061
  tb = taosHashIterate(pRsp->readViews, NULL);
796,754✔
3062
  while (tb != NULL) {
796,922✔
3063
    size_t keyLen = 0;
178✔
3064
    void  *key = taosHashGetKey(tb, &keyLen);
178✔
3065
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, keyLen));
356!
3066
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, key));
178!
3067

3068
    size_t valueLen = 0;
178✔
3069
    valueLen = strlen(tb);
178✔
3070
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, valueLen));
356!
3071
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, tb));
178!
3072

3073
    tb = taosHashIterate(pRsp->readViews, tb);
178✔
3074
  }
3075

3076
  tb = taosHashIterate(pRsp->writeViews, NULL);
796,744✔
3077
  while (tb != NULL) {
796,888✔
3078
    size_t keyLen = 0;
140✔
3079
    void  *key = taosHashGetKey(tb, &keyLen);
140✔
3080
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, keyLen));
280!
3081
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, key));
140!
3082

3083
    size_t valueLen = 0;
140✔
3084
    valueLen = strlen(tb);
140✔
3085
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, valueLen));
280!
3086
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, tb));
140!
3087

3088
    tb = taosHashIterate(pRsp->writeViews, tb);
140✔
3089
  }
3090

3091
  tb = taosHashIterate(pRsp->alterViews, NULL);
796,748✔
3092
  while (tb != NULL) {
796,888✔
3093
    size_t keyLen = 0;
146✔
3094
    void  *key = taosHashGetKey(tb, &keyLen);
146✔
3095
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, keyLen));
292!
3096
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, key));
146!
3097

3098
    size_t valueLen = 0;
146✔
3099
    valueLen = strlen(tb);
146✔
3100
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, valueLen));
292!
3101
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, tb));
146!
3102

3103
    tb = taosHashIterate(pRsp->alterViews, tb);
146✔
3104
  }
3105

3106
  int32_t *useDb = taosHashIterate(pRsp->useDbs, NULL);
796,742✔
3107
  while (useDb != NULL) {
797,801✔
3108
    size_t keyLen = 0;
1,056✔
3109
    void  *key = taosHashGetKey(useDb, &keyLen);
1,056✔
3110
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, keyLen));
2,112!
3111
    TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, key));
1,056!
3112
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, *useDb));
2,112!
3113
    useDb = taosHashIterate(pRsp->useDbs, useDb);
1,056✔
3114
  }
3115

3116
  // since 3.0.7.0
3117
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->passVer));
1,593,490!
3118
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pRsp->whiteListVer));
1,593,490!
3119
  return 0;
796,745✔
3120
}
3121

3122
int32_t tSerializeSGetUserAuthRsp(void *buf, int32_t bufLen, SGetUserAuthRsp *pRsp) {
772,143✔
3123
  SEncoder encoder = {0};
772,143✔
3124
  int32_t  code = 0;
772,143✔
3125
  int32_t  lino;
3126
  int32_t  tlen;
3127
  tEncoderInit(&encoder, buf, bufLen);
772,143✔
3128

3129
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
772,149!
3130
  TAOS_CHECK_EXIT(tSerializeSGetUserAuthRspImpl(&encoder, pRsp));
772,156!
3131

3132
  tEndEncode(&encoder);
772,136✔
3133

3134
_exit:
772,137✔
3135
  if (code) {
772,137!
3136
    tlen = code;
×
3137
  } else {
3138
    tlen = encoder.pos;
772,137✔
3139
  }
3140
  tEncoderClear(&encoder);
772,137✔
3141
  return tlen;
772,138✔
3142
}
3143

3144
int32_t tDeserializeSGetUserAuthRspImpl(SDecoder *pDecoder, SGetUserAuthRsp *pRsp) {
2,392✔
3145
  char *key = NULL, *value = NULL;
2,392✔
3146
  pRsp->createdDbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,392✔
3147
  pRsp->readDbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,393✔
3148
  pRsp->writeDbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,394✔
3149
  pRsp->readTbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,391✔
3150
  pRsp->writeTbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,392✔
3151
  pRsp->alterTbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,393✔
3152
  pRsp->readViews = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,392✔
3153
  pRsp->writeViews = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,390✔
3154
  pRsp->alterViews = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,391✔
3155
  pRsp->useDbs = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), true, HASH_ENTRY_LOCK);
2,394✔
3156
  if (pRsp->createdDbs == NULL || pRsp->readDbs == NULL || pRsp->writeDbs == NULL || pRsp->readTbs == NULL ||
2,394!
3157
      pRsp->writeTbs == NULL || pRsp->alterTbs == NULL || pRsp->readViews == NULL || pRsp->writeViews == NULL ||
2,393!
3158
      pRsp->alterViews == NULL || pRsp->useDbs == NULL) {
2,394!
3159
    goto _err;
×
3160
  }
3161

3162
  if (tDecodeCStrTo(pDecoder, pRsp->user) < 0) goto _err;
2,394!
3163
  if (tDecodeI8(pDecoder, &pRsp->superAuth) < 0) goto _err;
4,781!
3164
  if (tDecodeI8(pDecoder, &pRsp->sysInfo) < 0) goto _err;
4,781!
3165
  if (tDecodeI8(pDecoder, &pRsp->enable) < 0) goto _err;
4,780!
3166
  if (tDecodeI8(pDecoder, &pRsp->dropped) < 0) goto _err;
4,777!
3167
  if (tDecodeI32(pDecoder, &pRsp->version) < 0) goto _err;
4,774!
3168

3169
  int32_t numOfCreatedDbs = 0;
2,386✔
3170
  int32_t numOfReadDbs = 0;
2,386✔
3171
  int32_t numOfWriteDbs = 0;
2,386✔
3172
  if (tDecodeI32(pDecoder, &numOfCreatedDbs) < 0) goto _err;
2,388!
3173
  if (tDecodeI32(pDecoder, &numOfReadDbs) < 0) goto _err;
2,387!
3174
  if (tDecodeI32(pDecoder, &numOfWriteDbs) < 0) goto _err;
2,387!
3175

3176
  for (int32_t i = 0; i < numOfCreatedDbs; ++i) {
6,730✔
3177
    char db[TSDB_DB_FNAME_LEN] = {0};
4,332✔
3178
    if (tDecodeCStrTo(pDecoder, db) < 0) goto _err;
4,332!
3179
    int32_t len = strlen(db);
4,340✔
3180
    if (taosHashPut(pRsp->createdDbs, db, len + 1, db, len + 1) < 0) goto _err;
4,340!
3181
  }
3182

3183
  for (int32_t i = 0; i < numOfReadDbs; ++i) {
2,434✔
3184
    char db[TSDB_DB_FNAME_LEN] = {0};
36✔
3185
    if (tDecodeCStrTo(pDecoder, db) < 0) goto _err;
36!
3186
    int32_t len = strlen(db);
36✔
3187
    if (taosHashPut(pRsp->readDbs, db, len + 1, db, len + 1) < 0) goto _err;
36!
3188
  }
3189

3190
  for (int32_t i = 0; i < numOfWriteDbs; ++i) {
2,423✔
3191
    char db[TSDB_DB_FNAME_LEN] = {0};
25✔
3192
    if (tDecodeCStrTo(pDecoder, db) < 0) goto _err;
25!
3193
    int32_t len = strlen(db);
25✔
3194
    if (taosHashPut(pRsp->writeDbs, db, len + 1, db, len + 1) < 0) goto _err;
25!
3195
  }
3196

3197
  if (!tDecodeIsEnd(pDecoder)) {
2,398✔
3198
    int32_t numOfReadTbs = 0;
2,392✔
3199
    int32_t numOfWriteTbs = 0;
2,392✔
3200
    int32_t numOfAlterTbs = 0;
2,392✔
3201
    int32_t numOfReadViews = 0;
2,392✔
3202
    int32_t numOfWriteViews = 0;
2,392✔
3203
    int32_t numOfAlterViews = 0;
2,392✔
3204
    int32_t numOfUseDbs = 0;
2,392✔
3205
    if (tDecodeI32(pDecoder, &numOfReadTbs) < 0) goto _err;
2,392!
3206
    if (tDecodeI32(pDecoder, &numOfWriteTbs) < 0) goto _err;
2,392!
3207
    if (tDecodeI32(pDecoder, &numOfAlterTbs) < 0) goto _err;
2,391!
3208
    if (tDecodeI32(pDecoder, &numOfReadViews) < 0) goto _err;
2,391!
3209
    if (tDecodeI32(pDecoder, &numOfWriteViews) < 0) goto _err;
2,391!
3210
    if (tDecodeI32(pDecoder, &numOfAlterViews) < 0) goto _err;
2,391!
3211
    if (tDecodeI32(pDecoder, &numOfUseDbs) < 0) goto _err;
2,392!
3212

3213
    for (int32_t i = 0; i < numOfReadTbs; ++i) {
2,428✔
3214
      int32_t keyLen = 0;
36✔
3215
      if (tDecodeI32(pDecoder, &keyLen) < 0) goto _err;
36!
3216

3217
      if ((key = taosMemoryCalloc(keyLen + 1, sizeof(char))) == NULL) goto _err;
36!
3218
      if (tDecodeCStrTo(pDecoder, key) < 0) goto _err;
36!
3219

3220
      int32_t valuelen = 0;
36✔
3221
      if (tDecodeI32(pDecoder, &valuelen) < 0) goto _err;
36!
3222

3223
      if ((value = taosMemoryCalloc(valuelen + 1, sizeof(char))) == NULL) goto _err;
36!
3224
      if (tDecodeCStrTo(pDecoder, value) < 0) goto _err;
36!
3225

3226
      if (taosHashPut(pRsp->readTbs, key, keyLen, value, valuelen + 1) < 0) goto _err;
36!
3227

3228
      taosMemoryFreeClear(key);
36!
3229
      taosMemoryFreeClear(value);
36!
3230
    }
3231

3232
    for (int32_t i = 0; i < numOfWriteTbs; ++i) {
2,428✔
3233
      int32_t keyLen = 0;
36✔
3234
      if (tDecodeI32(pDecoder, &keyLen) < 0) goto _err;
36!
3235

3236
      if ((key = taosMemoryCalloc(keyLen + 1, sizeof(char))) == NULL) goto _err;
36!
3237
      if (tDecodeCStrTo(pDecoder, key) < 0) goto _err;
36!
3238

3239
      int32_t valuelen = 0;
36✔
3240
      if (tDecodeI32(pDecoder, &valuelen) < 0) goto _err;
36!
3241

3242
      if ((value = taosMemoryCalloc(valuelen + 1, sizeof(char))) == NULL) goto _err;
36!
3243
      if (tDecodeCStrTo(pDecoder, value) < 0) goto _err;
36!
3244

3245
      if (taosHashPut(pRsp->writeTbs, key, keyLen, value, valuelen + 1) < 0) goto _err;
36!
3246

3247
      taosMemoryFreeClear(key);
36!
3248
      taosMemoryFreeClear(value);
36!
3249
    }
3250

3251
    for (int32_t i = 0; i < numOfAlterTbs; ++i) {
2,392!
3252
      int32_t keyLen = 0;
×
3253
      if (tDecodeI32(pDecoder, &keyLen) < 0) goto _err;
×
3254

3255
      if ((key = taosMemoryCalloc(keyLen + 1, sizeof(char))) == NULL) goto _err;
×
3256
      if (tDecodeCStrTo(pDecoder, key) < 0) goto _err;
×
3257

3258
      int32_t valuelen = 0;
×
3259
      if (tDecodeI32(pDecoder, &valuelen) < 0) goto _err;
×
3260

3261
      if ((value = taosMemoryCalloc(valuelen + 1, sizeof(char))) == NULL) goto _err;
×
3262
      if (tDecodeCStrTo(pDecoder, value) < 0) goto _err;
×
3263

3264
      if (taosHashPut(pRsp->alterTbs, key, keyLen, value, valuelen + 1) < 0) goto _err;
×
3265

3266
      taosMemoryFreeClear(key);
×
3267
      taosMemoryFreeClear(value);
×
3268
    }
3269

3270
    for (int32_t i = 0; i < numOfReadViews; ++i) {
2,392!
3271
      int32_t keyLen = 0;
×
3272
      if (tDecodeI32(pDecoder, &keyLen) < 0) goto _err;
×
3273

3274
      if ((key = taosMemoryCalloc(keyLen + 1, sizeof(char))) == NULL) goto _err;
×
3275
      if (tDecodeCStrTo(pDecoder, key) < 0) goto _err;
×
3276

3277
      int32_t valuelen = 0;
×
3278
      if (tDecodeI32(pDecoder, &valuelen) < 0) goto _err;
×
3279

3280
      if ((value = taosMemoryCalloc(valuelen + 1, sizeof(char))) == NULL) goto _err;
×
3281
      if (tDecodeCStrTo(pDecoder, value) < 0) goto _err;
×
3282

3283
      if (taosHashPut(pRsp->readViews, key, keyLen, value, valuelen + 1) < 0) goto _err;
×
3284

3285
      taosMemoryFreeClear(key);
×
3286
      taosMemoryFreeClear(value);
×
3287
    }
3288

3289
    for (int32_t i = 0; i < numOfWriteViews; ++i) {
2,392!
3290
      int32_t keyLen = 0;
×
3291
      if (tDecodeI32(pDecoder, &keyLen) < 0) goto _err;
×
3292

3293
      if ((key = taosMemoryCalloc(keyLen + 1, sizeof(char))) == NULL) goto _err;
×
3294
      if (tDecodeCStrTo(pDecoder, key) < 0) goto _err;
×
3295

3296
      int32_t valuelen = 0;
×
3297
      if (tDecodeI32(pDecoder, &valuelen) < 0) goto _err;
×
3298

3299
      if ((value = taosMemoryCalloc(valuelen + 1, sizeof(char))) == NULL) goto _err;
×
3300
      if (tDecodeCStrTo(pDecoder, value) < 0) goto _err;
×
3301

3302
      if (taosHashPut(pRsp->writeViews, key, keyLen, value, valuelen + 1) < 0) goto _err;
×
3303

3304
      taosMemoryFreeClear(key);
×
3305
      taosMemoryFreeClear(value);
×
3306
    }
3307

3308
    for (int32_t i = 0; i < numOfAlterViews; ++i) {
2,392!
3309
      int32_t keyLen = 0;
×
3310
      if (tDecodeI32(pDecoder, &keyLen) < 0) goto _err;
×
3311

3312
      if ((key = taosMemoryCalloc(keyLen + 1, sizeof(char))) == NULL) goto _err;
×
3313
      if (tDecodeCStrTo(pDecoder, key) < 0) goto _err;
×
3314

3315
      int32_t valuelen = 0;
×
3316
      if (tDecodeI32(pDecoder, &valuelen) < 0) goto _err;
×
3317

3318
      if ((value = taosMemoryCalloc(valuelen + 1, sizeof(char))) == NULL) goto _err;
×
3319
      if (tDecodeCStrTo(pDecoder, value) < 0) goto _err;
×
3320

3321
      if (taosHashPut(pRsp->alterViews, key, keyLen, value, valuelen + 1) < 0) goto _err;
×
3322

3323
      taosMemoryFreeClear(key);
×
3324
      taosMemoryFreeClear(value);
×
3325
    }
3326

3327
    for (int32_t i = 0; i < numOfUseDbs; ++i) {
2,464✔
3328
      int32_t keyLen = 0;
72✔
3329
      if (tDecodeI32(pDecoder, &keyLen) < 0) goto _err;
72!
3330

3331
      if ((key = taosMemoryCalloc(keyLen + 1, sizeof(char))) == NULL) goto _err;
72!
3332
      if (tDecodeCStrTo(pDecoder, key) < 0) goto _err;
72!
3333

3334
      int32_t ref = 0;
72✔
3335
      if (tDecodeI32(pDecoder, &ref) < 0) goto _err;
72!
3336

3337
      if (taosHashPut(pRsp->useDbs, key, keyLen, &ref, sizeof(ref)) < 0) goto _err;
72!
3338
      taosMemoryFreeClear(key);
72!
3339
    }
3340
    // since 3.0.7.0
3341
    if (!tDecodeIsEnd(pDecoder)) {
2,392✔
3342
      if (tDecodeI32(pDecoder, &pRsp->passVer) < 0) goto _err;
4,776!
3343
    } else {
3344
      pRsp->passVer = 0;
3✔
3345
    }
3346
    if (!tDecodeIsEnd(pDecoder)) {
2,390✔
3347
      if (tDecodeI64(pDecoder, &pRsp->whiteListVer) < 0) goto _err;
4,759!
3348
    } else {
3349
      pRsp->whiteListVer = 0;
1✔
3350
    }
3351
  }
3352
  return 0;
2,377✔
3353
_err:
×
3354
  taosHashCleanup(pRsp->createdDbs);
×
3355
  taosHashCleanup(pRsp->readDbs);
×
3356
  taosHashCleanup(pRsp->writeDbs);
×
3357
  taosHashCleanup(pRsp->readTbs);
×
3358
  taosHashCleanup(pRsp->writeTbs);
×
3359
  taosHashCleanup(pRsp->alterTbs);
×
3360
  taosHashCleanup(pRsp->readViews);
×
3361
  taosHashCleanup(pRsp->writeViews);
×
3362
  taosHashCleanup(pRsp->alterViews);
×
3363
  taosHashCleanup(pRsp->useDbs);
×
3364

3365
  taosMemoryFreeClear(key);
×
3366
  taosMemoryFreeClear(value);
×
3367
  return -1;
×
3368
}
3369

3370
int32_t tDeserializeSGetUserAuthRsp(void *buf, int32_t bufLen, SGetUserAuthRsp *pRsp) {
2,053✔
3371
  SDecoder decoder = {0};
2,053✔
3372
  int32_t  code = 0;
2,053✔
3373
  int32_t  lino;
3374
  tDecoderInit(&decoder, buf, bufLen);
2,053✔
3375

3376
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,055!
3377
  TAOS_CHECK_EXIT(tDeserializeSGetUserAuthRspImpl(&decoder, pRsp));
2,055!
3378

3379
  tEndDecode(&decoder);
2,056✔
3380

3381
_exit:
2,055✔
3382
  tDecoderClear(&decoder);
2,055✔
3383
  return code;
2,055✔
3384
}
3385

3386
void tFreeSGetUserAuthRsp(SGetUserAuthRsp *pRsp) {
398,392✔
3387
  taosHashCleanup(pRsp->createdDbs);
398,392✔
3388
  taosHashCleanup(pRsp->readDbs);
398,390✔
3389
  taosHashCleanup(pRsp->writeDbs);
398,391✔
3390
  taosHashCleanup(pRsp->readTbs);
398,387✔
3391
  taosHashCleanup(pRsp->writeTbs);
398,392✔
3392
  taosHashCleanup(pRsp->alterTbs);
398,393✔
3393
  taosHashCleanup(pRsp->readViews);
398,394✔
3394
  taosHashCleanup(pRsp->writeViews);
398,394✔
3395
  taosHashCleanup(pRsp->alterViews);
398,387✔
3396
  taosHashCleanup(pRsp->useDbs);
398,393✔
3397
}
398,394✔
3398

3399
int32_t tSerializeSGetUserWhiteListReq(void *buf, int32_t bufLen, SGetUserWhiteListReq *pReq) {
×
3400
  SEncoder encoder = {0};
×
3401
  int32_t  code = 0;
×
3402
  int32_t  lino;
3403
  int32_t  tlen;
3404

3405
  tEncoderInit(&encoder, buf, bufLen);
×
3406

3407
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
3408
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->user));
×
3409
  tEndEncode(&encoder);
×
3410

3411
_exit:
×
3412
  if (code) {
×
3413
    tlen = code;
×
3414
  } else {
3415
    tlen = encoder.pos;
×
3416
  }
3417
  tEncoderClear(&encoder);
×
3418
  return tlen;
×
3419
}
3420

3421
int32_t tDeserializeSGetUserWhiteListReq(void *buf, int32_t bufLen, SGetUserWhiteListReq *pReq) {
426✔
3422
  SDecoder decoder = {0};
426✔
3423
  int32_t  code = 0;
426✔
3424
  int32_t  lino;
3425
  tDecoderInit(&decoder, buf, bufLen);
426✔
3426

3427
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
426!
3428
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->user));
426!
3429
  tEndDecode(&decoder);
426✔
3430

3431
_exit:
426✔
3432
  tDecoderClear(&decoder);
426✔
3433
  return code;
426✔
3434
}
3435

3436
int32_t tSerializeSGetUserWhiteListRsp(void *buf, int32_t bufLen, SGetUserWhiteListRsp *pRsp) {
×
3437
  SEncoder encoder = {0};
×
3438
  int32_t  code = 0;
×
3439
  int32_t  lino;
3440
  int32_t  tlen;
3441
  tEncoderInit(&encoder, buf, bufLen);
×
3442

3443
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
3444
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->user));
×
3445
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->numWhiteLists));
×
3446
  for (int i = 0; i < pRsp->numWhiteLists; ++i) {
×
3447
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, pRsp->pWhiteLists[i].ip));
×
3448
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, pRsp->pWhiteLists[i].mask));
×
3449
  }
3450
  tEndEncode(&encoder);
×
3451

3452
_exit:
×
3453
  if (code) {
×
3454
    tlen = code;
×
3455
  } else {
3456
    tlen = encoder.pos;
×
3457
  }
3458
  tEncoderClear(&encoder);
×
3459
  return tlen;
×
3460
}
3461

3462
int32_t tDeserializeSGetUserWhiteListRsp(void *buf, int32_t bufLen, SGetUserWhiteListRsp *pRsp) {
×
3463
  SDecoder decoder = {0};
×
3464
  int32_t  code = 0;
×
3465
  int32_t  lino;
3466
  tDecoderInit(&decoder, buf, bufLen);
×
3467

3468
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
3469
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->user));
×
3470
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->numWhiteLists));
×
3471
  pRsp->pWhiteLists = taosMemoryMalloc(pRsp->numWhiteLists * sizeof(SIpV4Range));
×
3472
  if (pRsp->pWhiteLists == NULL) {
×
3473
    TAOS_CHECK_EXIT(terrno);
×
3474
  }
3475
  for (int32_t i = 0; i < pRsp->numWhiteLists; ++i) {
×
3476
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &(pRsp->pWhiteLists[i].ip)));
×
3477
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &(pRsp->pWhiteLists[i].mask)));
×
3478
  }
3479

3480
  tEndDecode(&decoder);
×
3481
_exit:
×
3482
  tDecoderClear(&decoder);
×
3483
  return code;
×
3484
}
3485
void tFreeSGetUserWhiteListRsp(SGetUserWhiteListRsp *pRsp) { taosMemoryFree(pRsp->pWhiteLists); }
×
3486

3487
int32_t tSerializeSGetUserWhiteListDualRsp(void *buf, int32_t bufLen, SGetUserWhiteListRsp *pRsp) {
852✔
3488
  SEncoder encoder = {0};
852✔
3489
  int32_t  code = 0;
852✔
3490
  int32_t  lino;
3491
  int32_t  tlen;
3492
  tEncoderInit(&encoder, buf, bufLen);
852✔
3493

3494
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
852!
3495
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->user));
1,704!
3496
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->numWhiteLists));
1,704!
3497
  for (int i = 0; i < pRsp->numWhiteLists; ++i) {
2,556✔
3498
    SIpRange *range = &pRsp->pWhiteListsDual[i];
1,704✔
3499
    TAOS_CHECK_EXIT(tSerializeIpRange(&encoder, range));
1,704!
3500
  }
3501
  tEndEncode(&encoder);
852✔
3502

3503
_exit:
852✔
3504
  if (code) {
852!
3505
    tlen = code;
×
3506
  } else {
3507
    tlen = encoder.pos;
852✔
3508
  }
3509
  tEncoderClear(&encoder);
852✔
3510
  return tlen;
852✔
3511
}
3512
int32_t tDeserializeSGetUserWhiteListDualRsp(void *buf, int32_t bufLen, SGetUserWhiteListRsp *pRsp) {
×
3513
  SDecoder decoder = {0};
×
3514
  int32_t  code = 0;
×
3515
  int32_t  lino;
3516
  tDecoderInit(&decoder, buf, bufLen);
×
3517

3518
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
3519
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->user));
×
3520
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->numWhiteLists));
×
3521

3522
  pRsp->pWhiteListsDual = taosMemoryMalloc(pRsp->numWhiteLists * sizeof(SIpRange));
×
3523
  if (pRsp->pWhiteListsDual == NULL) {
×
3524
    TAOS_CHECK_EXIT(terrno);
×
3525
  }
3526
  for (int32_t i = 0; i < pRsp->numWhiteLists; ++i) {
×
3527
    SIpRange *range = &pRsp->pWhiteListsDual[i];
×
3528
    TAOS_CHECK_EXIT(tDeserializeIpRange(&decoder, range));
×
3529
  }
3530

3531
  tEndDecode(&decoder);
×
3532
_exit:
×
3533
  tDecoderClear(&decoder);
×
3534
  return code;
×
3535
}
3536

3537
int32_t tIpStrToUint(const SIpAddr *addr, SIpRange *range) {
14,237✔
3538
  int32_t code = 0;
14,237✔
3539
  range->type = addr->type;
14,237✔
3540
  const char *buf = IP_ADDR_STR(addr);
14,237✔
3541
  if (addr->type == 0) {
14,237✔
3542
    struct in_addr taddr;
3543
    if (inet_pton(AF_INET, buf, &taddr) <= 0) {
12,604!
3544
      code = TSDB_CODE_THIRDPARTY_ERROR;
×
3545
    }
3546

3547
    SIpV4Range *ipv4 = &range->ipV4;
12,604✔
3548
    ipv4->ip = taddr.s_addr;
12,604✔
3549
    ipv4->mask = addr->mask;
12,604✔
3550
  } else if (addr->type == 1) {
1,633!
3551
    struct in6_addr taddr;
3552
    if (inet_pton(AF_INET6, buf, &(taddr)) <= 0) {
1,633!
3553
      code = TSDB_CODE_THIRDPARTY_ERROR;
×
3554
    }
3555

3556
    SIpV6Range *ipv6 = &range->ipV6;
1,633✔
3557
    memcpy(&ipv6->addr[0], taddr.s6_addr, 8);
1,633✔
3558
    memcpy(&ipv6->addr[1], taddr.s6_addr + 8, 8);
1,633✔
3559

3560
    ipv6->mask = addr->mask;
1,633✔
3561
  }
3562
  return code;
14,237✔
3563
}
3564

3565
int32_t tIpUintToStr(const SIpRange *range, SIpAddr *addr) {
309,897✔
3566
  int32_t code = 0;
309,897✔
3567
  addr->type = range->type;
309,897✔
3568
  if (addr->type == 0) {
309,897✔
3569
    struct in_addr taddr;
3570
    memcpy(&taddr.s_addr, &range->ipV4.ip, sizeof(taddr.s_addr));
304,709✔
3571
    if (inet_ntop(AF_INET, &taddr, addr->ipv4, sizeof(addr->ipv4)) == NULL) {
304,709!
3572
      code = TSDB_CODE_THIRDPARTY_ERROR;
×
3573
    }
3574
    addr->mask = range->ipV4.mask;
304,689✔
3575
  } else {
3576
    struct in6_addr taddr;
3577
    memcpy(taddr.s6_addr, &range->ipV6.addr[0], 8);
5,188✔
3578
    memcpy(taddr.s6_addr + 8, &range->ipV6.addr[1], 8);
5,188✔
3579
    if (inet_ntop(AF_INET6, &taddr, addr->ipv6, sizeof(addr->ipv6)) == NULL) {
5,188!
3580
      code = TSDB_CODE_THIRDPARTY_ERROR;
×
3581
    }
3582
    addr->mask = range->ipV6.mask;
5,217✔
3583
  }
3584

3585
  return code;
309,906✔
3586
}
3587
int32_t tIpRangeSetMask(SIpRange *range, int32_t mask) {
10,964✔
3588
  if (range->type == 0) {
10,964!
3589
    SIpV4Range *p4 = (SIpV4Range *)&range->ipV4;
10,964✔
3590
    if (mask < 0 || mask > 32) {
10,964!
3591
      return TSDB_CODE_PAR_INVALID_IP_RANGE;
×
3592
    }
3593
    p4->mask = mask;
10,964✔
3594
  } else {
3595
    SIpV6Range *p6 = (SIpV6Range *)&range->ipV6;
×
3596
    if (mask < 0 || mask > 128) {
×
3597
      return TSDB_CODE_PAR_INVALID_IP_RANGE;
×
3598
    }
3599
    p6->mask = mask;
×
3600
  }
3601
  return 0;
10,964✔
3602
}
3603

3604
void tIpRangeSetDefaultMask(SIpRange *range) {
×
3605
  if (range->type == 0) {
×
3606
    SIpV4Range *p4 = (SIpV4Range *)&range->ipV4;
×
3607
    p4->mask = 128;
×
3608
  } else {
3609
    SIpV6Range *p6 = (SIpV6Range *)&range->ipV6;
×
3610
    p6->mask = 32;
×
3611
  }
3612
}
×
3613
void tFreeSGetUserWhiteListDualRsp(SGetUserWhiteListRsp *pRsp) { taosMemoryFree(pRsp->pWhiteListsDual); }
426!
3614

3615
int32_t tSerializeSMCfgClusterReq(void *buf, int32_t bufLen, SMCfgClusterReq *pReq) {
×
3616
  SEncoder encoder = {0};
×
3617
  int32_t  code = 0;
×
3618
  int32_t  lino;
3619
  int32_t  tlen;
3620
  tEncoderInit(&encoder, buf, bufLen);
×
3621

3622
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
3623
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->config));
×
3624
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->value));
×
3625
  ENCODESQL();
×
3626
  tEndEncode(&encoder);
×
3627

3628
_exit:
×
3629
  if (code) {
×
3630
    tlen = code;
×
3631
  } else {
3632
    tlen = encoder.pos;
×
3633
  }
3634
  tEncoderClear(&encoder);
×
3635
  return tlen;
×
3636
}
3637

3638
int32_t tDeserializeSMCfgClusterReq(void *buf, int32_t bufLen, SMCfgClusterReq *pReq) {
6✔
3639
  SDecoder decoder = {0};
6✔
3640
  int32_t  code = 0;
6✔
3641
  int32_t  lino;
3642
  tDecoderInit(&decoder, buf, bufLen);
6✔
3643

3644
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
6!
3645
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->config));
6!
3646
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->value));
6!
3647
  DECODESQL();
18!
3648
  tEndDecode(&decoder);
6✔
3649

3650
_exit:
6✔
3651
  tDecoderClear(&decoder);
6✔
3652
  return code;
6✔
3653
}
3654

3655
void tFreeSMCfgClusterReq(SMCfgClusterReq *pReq) { FREESQL(); }
6!
3656

3657
int32_t tSerializeSCreateDropMQSNodeReq(void *buf, int32_t bufLen, SMCreateQnodeReq *pReq) {
3,884✔
3658
  SEncoder encoder = {0};
3,884✔
3659
  int32_t  code = 0;
3,884✔
3660
  int32_t  lino;
3661
  int32_t  tlen;
3662
  tEncoderInit(&encoder, buf, bufLen);
3,884✔
3663

3664
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
3,884!
3665
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
7,768!
3666
  ENCODESQL();
7,906!
3667
  tEndEncode(&encoder);
3,884✔
3668

3669
_exit:
3,884✔
3670
  if (code) {
3,884!
3671
    tlen = code;
×
3672
  } else {
3673
    tlen = encoder.pos;
3,884✔
3674
  }
3675
  tEncoderClear(&encoder);
3,884✔
3676
  return tlen;
3,884✔
3677
}
3678

3679
int32_t tDeserializeSCreateDropMQSNodeReq(void *buf, int32_t bufLen, SMCreateQnodeReq *pReq) {
1,809✔
3680
  SDecoder decoder = {0};
1,809✔
3681
  int32_t  code = 0;
1,809✔
3682
  int32_t  lino;
3683
  tDecoderInit(&decoder, buf, bufLen);
1,809✔
3684

3685
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,809!
3686
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
3,618!
3687
  DECODESQL();
4,268!
3688
  tEndDecode(&decoder);
1,809✔
3689

3690
_exit:
1,809✔
3691
  tDecoderClear(&decoder);
1,809✔
3692
  return code;
1,809✔
3693
}
3694

3695
int32_t tEncodeSNodeEpSet(SEncoder* pEncoder, SNodeEpSet *pNode) {
4,026✔
3696
  int32_t code = 0;
4,026✔
3697
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pNode->nodeId));
8,052!
3698
  TAOS_CHECK_RETURN(tEncodeSEpSet(pEncoder, &pNode->epSet));
4,026!
3699

3700
_exit:
4,026✔
3701

3702
  return code;
4,026✔
3703
}
3704

3705
int32_t tDecodeSNodeEpSet(SDecoder *pDecoder, SNodeEpSet *pNode) {
2,040✔
3706
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pNode->nodeId));
4,080!
3707
  TAOS_CHECK_RETURN(tDecodeSEpSet(pDecoder, &pNode->epSet));
2,040!
3708

3709
  return 0;
2,040✔
3710
}
3711

3712

3713

3714
int32_t tSerializeSDCreateSNodeReq(void *buf, int32_t bufLen, SDCreateSnodeReq *pReq) {
1,342✔
3715
  SEncoder encoder = {0};
1,342✔
3716
  int32_t  code = 0;
1,342✔
3717
  int32_t  lino;
3718
  int32_t  tlen;
3719
  tEncoderInit(&encoder, buf, bufLen);
1,342✔
3720

3721
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
1,342!
3722
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->snodeId));
2,684!
3723
  TAOS_CHECK_EXIT(tEncodeSNodeEpSet(&encoder, &pReq->leaders[0]));
1,342!
3724
  TAOS_CHECK_EXIT(tEncodeSNodeEpSet(&encoder, &pReq->leaders[1]));
1,342!
3725
  TAOS_CHECK_EXIT(tEncodeSNodeEpSet(&encoder, &pReq->replica));
1,342!
3726
  ENCODESQL();
2,684!
3727
  tEndEncode(&encoder);
1,342✔
3728

3729
_exit:
1,342✔
3730
  if (code) {
1,342!
3731
    tlen = code;
×
3732
  } else {
3733
    tlen = encoder.pos;
1,342✔
3734
  }
3735
  tEncoderClear(&encoder);
1,342✔
3736
  return tlen;
1,342✔
3737
}
3738

3739
int32_t tDeserializeSDCreateSNodeReq(void *buf, int32_t bufLen, SDCreateSnodeReq *pReq) {
680✔
3740
  SDecoder decoder = {0};
680✔
3741
  int32_t  code = 0;
680✔
3742
  int32_t  lino;
3743
  tDecoderInit(&decoder, buf, bufLen);
680✔
3744

3745
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
680!
3746
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->snodeId));
1,360!
3747
  TAOS_CHECK_EXIT(tDecodeSNodeEpSet(&decoder, &pReq->leaders[0]));
680!
3748
  TAOS_CHECK_EXIT(tDecodeSNodeEpSet(&decoder, &pReq->leaders[1]));
680!
3749
  TAOS_CHECK_EXIT(tDecodeSNodeEpSet(&decoder, &pReq->replica));
680!
3750
  DECODESQL();
1,360!
3751
  tEndDecode(&decoder);
680✔
3752

3753
_exit:
680✔
3754
  tDecoderClear(&decoder);
680✔
3755
  return code;
680✔
3756
}
3757

3758

3759
void tFreeSMCreateQnodeReq(SMCreateQnodeReq *pReq) { FREESQL(); }
2,144!
3760

3761
void tFreeSDCreateSnodeReq(SDCreateSnodeReq *pReq) { FREESQL(); }
680!
3762

3763
void tFreeSDDropQnodeReq(SDDropQnodeReq *pReq) { FREESQL(); }
257!
3764

3765
int32_t tSerializeSDropDnodeReq(void *buf, int32_t bufLen, SDropDnodeReq *pReq) {
220✔
3766
  SEncoder encoder = {0};
220✔
3767
  int32_t  code = 0;
220✔
3768
  int32_t  lino;
3769
  int32_t  tlen;
3770
  tEncoderInit(&encoder, buf, bufLen);
220✔
3771

3772
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
220!
3773
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
440!
3774
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->fqdn));
440!
3775
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->port));
440!
3776
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->force));
440!
3777
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->unsafe));
440!
3778
  ENCODESQL();
660!
3779
  tEndEncode(&encoder);
220✔
3780

3781
_exit:
220✔
3782
  if (code) {
220!
3783
    tlen = code;
×
3784
  } else {
3785
    tlen = encoder.pos;
220✔
3786
  }
3787
  tEncoderClear(&encoder);
220✔
3788
  return tlen;
220✔
3789
}
3790

3791
int32_t tDeserializeSDropDnodeReq(void *buf, int32_t bufLen, SDropDnodeReq *pReq) {
86✔
3792
  SDecoder decoder = {0};
86✔
3793
  int32_t  code = 0;
86✔
3794
  int32_t  lino;
3795
  tDecoderInit(&decoder, buf, bufLen);
86✔
3796

3797
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
86!
3798
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
172!
3799
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->fqdn));
86!
3800
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->port));
172!
3801
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->force));
172!
3802
  if (!tDecodeIsEnd(&decoder)) {
86!
3803
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->unsafe));
172!
3804
  } else {
3805
    pReq->unsafe = false;
×
3806
  }
3807

3808
  DECODESQL();
258!
3809
  tEndDecode(&decoder);
86✔
3810

3811
_exit:
86✔
3812
  tDecoderClear(&decoder);
86✔
3813
  return code;
86✔
3814
}
3815

3816
void tFreeSDropDnodeReq(SDropDnodeReq *pReq) { FREESQL(); }
196!
3817

3818
int32_t tSerializeSRestoreDnodeReq(void *buf, int32_t bufLen, SRestoreDnodeReq *pReq) {
96✔
3819
  SEncoder encoder = {0};
96✔
3820
  int32_t  code = 0;
96✔
3821
  int32_t  lino;
3822
  int32_t  tlen;
3823
  tEncoderInit(&encoder, buf, bufLen);
96✔
3824

3825
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
96!
3826
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
192!
3827
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->restoreType));
192!
3828
  ENCODESQL();
288!
3829
  tEndEncode(&encoder);
96✔
3830

3831
_exit:
96✔
3832
  if (code) {
96!
3833
    tlen = code;
×
3834
  } else {
3835
    tlen = encoder.pos;
96✔
3836
  }
3837
  tEncoderClear(&encoder);
96✔
3838
  return tlen;
96✔
3839
}
3840

3841
int32_t tDeserializeSRestoreDnodeReq(void *buf, int32_t bufLen, SRestoreDnodeReq *pReq) {
32✔
3842
  SDecoder decoder = {0};
32✔
3843
  int32_t  code = 0;
32✔
3844
  int32_t  lino;
3845
  tDecoderInit(&decoder, buf, bufLen);
32✔
3846

3847
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
32!
3848
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
64!
3849
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->restoreType));
64!
3850
  DECODESQL();
96!
3851
  tEndDecode(&decoder);
32✔
3852

3853
_exit:
32✔
3854
  tDecoderClear(&decoder);
32✔
3855
  return code;
32✔
3856
}
3857

3858
void tFreeSRestoreDnodeReq(SRestoreDnodeReq *pReq) { FREESQL(); }
80!
3859

3860
int32_t tSerializeSMCfgDnodeReq(void *buf, int32_t bufLen, SMCfgDnodeReq *pReq) {
160✔
3861
  SEncoder encoder = {0};
160✔
3862
  int32_t  code = 0;
160✔
3863
  int32_t  lino;
3864
  int32_t  tlen;
3865
  tEncoderInit(&encoder, buf, bufLen);
160✔
3866

3867
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
160!
3868
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
320!
3869
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->config));
320!
3870
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->value));
320!
3871
  ENCODESQL();
480!
3872
  tEndEncode(&encoder);
160✔
3873

3874
_exit:
160✔
3875
  if (code) {
160!
3876
    tlen = code;
×
3877
  } else {
3878
    tlen = encoder.pos;
160✔
3879
  }
3880
  tEncoderClear(&encoder);
160✔
3881
  return tlen;
160✔
3882
}
3883

3884
int32_t tDeserializeSMCfgDnodeReq(void *buf, int32_t bufLen, SMCfgDnodeReq *pReq) {
1,201✔
3885
  SDecoder decoder = {0};
1,201✔
3886
  int32_t  code = 0;
1,201✔
3887
  int32_t  lino;
3888
  tDecoderInit(&decoder, buf, bufLen);
1,201✔
3889

3890
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,201!
3891
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
2,402!
3892
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->config));
1,201!
3893
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->value));
1,201!
3894
  DECODESQL();
3,603!
3895
  tEndDecode(&decoder);
1,201✔
3896

3897
_exit:
1,201✔
3898
  tDecoderClear(&decoder);
1,201✔
3899
  return code;
1,201✔
3900
}
3901

3902
void tFreeSMCfgDnodeReq(SMCfgDnodeReq *pReq) { FREESQL(); }
1,281!
3903

3904
int32_t tSerializeSDCfgDnodeReq(void *buf, int32_t bufLen, SDCfgDnodeReq *pReq) {
2,158✔
3905
  SEncoder encoder = {0};
2,158✔
3906
  int32_t  code = 0;
2,158✔
3907
  int32_t  lino;
3908
  int32_t  tlen;
3909
  tEncoderInit(&encoder, buf, bufLen);
2,158✔
3910

3911
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
2,158!
3912
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->version));
4,316!
3913
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->config));
4,316!
3914
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->value));
4,316!
3915
  tEndEncode(&encoder);
2,158✔
3916

3917
_exit:
2,158✔
3918
  if (code) {
2,158!
3919
    tlen = code;
×
3920
  } else {
3921
    tlen = encoder.pos;
2,158✔
3922
  }
3923
  tEncoderClear(&encoder);
2,158✔
3924
  return tlen;
2,158✔
3925
}
3926

3927
int32_t tDeserializeSDCfgDnodeReq(void *buf, int32_t bufLen, SDCfgDnodeReq *pReq) {
1,079✔
3928
  SDecoder decoder = {0};
1,079✔
3929
  int32_t  code = 0;
1,079✔
3930
  int32_t  lino;
3931
  tDecoderInit(&decoder, buf, bufLen);
1,079✔
3932

3933
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,079!
3934
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->version));
2,158!
3935
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->config));
1,079!
3936
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->value));
1,079!
3937
  tEndDecode(&decoder);
1,079✔
3938

3939
_exit:
1,079✔
3940
  tDecoderClear(&decoder);
1,079✔
3941
  return code;
1,079✔
3942
}
3943

3944
int32_t tSerializeSMCreateAnodeReq(void *buf, int32_t bufLen, SMCreateAnodeReq *pReq) {
×
3945
  SEncoder encoder = {0};
×
3946
  int32_t  code = 0;
×
3947
  int32_t  lino;
3948
  int32_t  tlen;
3949
  tEncoderInit(&encoder, buf, bufLen);
×
3950

3951
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
3952
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->urlLen));
×
3953
  if (pReq->urlLen > 0) {
×
3954
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)pReq->url, pReq->urlLen));
×
3955
  }
3956
  ENCODESQL();
×
3957
  tEndEncode(&encoder);
×
3958

3959
_exit:
×
3960
  if (code) {
×
3961
    tlen = code;
×
3962
  } else {
3963
    tlen = encoder.pos;
×
3964
  }
3965
  tEncoderClear(&encoder);
×
3966
  return tlen;
×
3967
}
3968

3969
int32_t tDeserializeSMCreateAnodeReq(void *buf, int32_t bufLen, SMCreateAnodeReq *pReq) {
×
3970
  SDecoder decoder = {0};
×
3971
  int32_t  code = 0;
×
3972
  int32_t  lino;
3973

3974
  tDecoderInit(&decoder, buf, bufLen);
×
3975

3976
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
3977
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->urlLen));
×
3978
  if (pReq->urlLen > 0) {
×
3979
    TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, (void **)&pReq->url, NULL));
×
3980
  }
3981

3982
  DECODESQL();
×
3983
  tEndDecode(&decoder);
×
3984

3985
_exit:
×
3986
  tDecoderClear(&decoder);
×
3987
  return code;
×
3988
}
3989

3990
void tFreeSMCreateAnodeReq(SMCreateAnodeReq *pReq) {
×
3991
  taosMemoryFreeClear(pReq->url);
×
3992
  FREESQL();
×
3993
}
×
3994

3995
int32_t tSerializeSMDropAnodeReq(void *buf, int32_t bufLen, SMDropAnodeReq *pReq) {
×
3996
  SEncoder encoder = {0};
×
3997
  int32_t  code = 0;
×
3998
  int32_t  lino;
3999
  int32_t  tlen;
4000
  tEncoderInit(&encoder, buf, bufLen);
×
4001

4002
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
4003
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->anodeId));
×
4004
  ENCODESQL();
×
4005
  tEndEncode(&encoder);
×
4006

4007
_exit:
×
4008
  if (code) {
×
4009
    tlen = code;
×
4010
  } else {
4011
    tlen = encoder.pos;
×
4012
  }
4013
  tEncoderClear(&encoder);
×
4014
  return tlen;
×
4015
}
4016

4017
int32_t tDeserializeSMDropAnodeReq(void *buf, int32_t bufLen, SMDropAnodeReq *pReq) {
×
4018
  SDecoder decoder = {0};
×
4019
  int32_t  code = 0;
×
4020
  int32_t  lino;
4021

4022
  tDecoderInit(&decoder, buf, bufLen);
×
4023

4024
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
4025
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->anodeId));
×
4026
  DECODESQL();
×
4027
  tEndDecode(&decoder);
×
4028

4029
_exit:
×
4030
  tDecoderClear(&decoder);
×
4031
  return code;
×
4032
}
4033

4034
void tFreeSMDropAnodeReq(SMDropAnodeReq *pReq) { FREESQL(); }
×
4035

4036
int32_t tSerializeSMUpdateAnodeReq(void *buf, int32_t bufLen, SMUpdateAnodeReq *pReq) {
×
4037
  return tSerializeSMDropAnodeReq(buf, bufLen, pReq);
×
4038
}
4039

4040
int32_t tDeserializeSMUpdateAnodeReq(void *buf, int32_t bufLen, SMUpdateAnodeReq *pReq) {
×
4041
  return tDeserializeSMDropAnodeReq(buf, bufLen, pReq);
×
4042
}
4043

4044
void tFreeSMUpdateAnodeReq(SMUpdateAnodeReq *pReq) { tFreeSMDropAnodeReq(pReq); }
×
4045

4046
int32_t tSerializeSMCreateBnodeReq(void *buf, int32_t bufLen, SMCreateBnodeReq *pReq) {
166✔
4047
  SEncoder encoder = {0};
166✔
4048
  int32_t  code = 0;
166✔
4049
  int32_t  lino;
4050
  int32_t  tlen;
4051
  tEncoderInit(&encoder, buf, bufLen);
166✔
4052

4053
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
166!
4054
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
332!
4055
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->bnodeProto));
332!
4056

4057
  ENCODESQL();
332!
4058
  tEndEncode(&encoder);
166✔
4059

4060
_exit:
166✔
4061
  if (code) {
166!
4062
    tlen = code;
×
4063
  } else {
4064
    tlen = encoder.pos;
166✔
4065
  }
4066
  tEncoderClear(&encoder);
166✔
4067
  return tlen;
166✔
4068
}
4069

4070
int32_t tDeserializeSMCreateBnodeReq(void *buf, int32_t bufLen, SMCreateBnodeReq *pReq) {
175✔
4071
  SDecoder decoder = {0};
175✔
4072
  int32_t  code = 0;
175✔
4073
  int32_t  lino;
4074

4075
  tDecoderInit(&decoder, buf, bufLen);
175✔
4076

4077
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
175!
4078
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
350!
4079
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->bnodeProto));
350!
4080

4081
  DECODESQL();
442!
4082
  tEndDecode(&decoder);
175✔
4083

4084
_exit:
175✔
4085
  tDecoderClear(&decoder);
175✔
4086
  return code;
175✔
4087
}
4088

4089
void tFreeSMCreateBnodeReq(SMCreateBnodeReq *pReq) {
166✔
4090
  // May free options
4091
  FREESQL();
166!
4092
}
166✔
4093

4094
int32_t tSerializeSMDropBnodeReq(void *buf, int32_t bufLen, SMDropBnodeReq *pReq) {
336✔
4095
  SEncoder encoder = {0};
336✔
4096
  int32_t  code = 0;
336✔
4097
  int32_t  lino;
4098
  int32_t  tlen;
4099
  tEncoderInit(&encoder, buf, bufLen);
336✔
4100

4101
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
336!
4102
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
672!
4103
  ENCODESQL();
672!
4104
  tEndEncode(&encoder);
336✔
4105

4106
_exit:
336✔
4107
  if (code) {
336!
4108
    tlen = code;
×
4109
  } else {
4110
    tlen = encoder.pos;
336✔
4111
  }
4112
  tEncoderClear(&encoder);
336✔
4113
  return tlen;
336✔
4114
}
4115

4116
int32_t tDeserializeSMDropBnodeReq(void *buf, int32_t bufLen, SMDropBnodeReq *pReq) {
191✔
4117
  SDecoder decoder = {0};
191✔
4118
  int32_t  code = 0;
191✔
4119
  int32_t  lino;
4120

4121
  tDecoderInit(&decoder, buf, bufLen);
191✔
4122

4123
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
191!
4124
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
382!
4125
  DECODESQL();
491!
4126
  tEndDecode(&decoder);
191✔
4127

4128
_exit:
191✔
4129
  tDecoderClear(&decoder);
191✔
4130
  return code;
191✔
4131
}
4132

4133
void tFreeSMDropBnodeReq(SMDropBnodeReq *pReq) { FREESQL(); }
191!
4134

4135
int32_t tSerializeSCreateDnodeReq(void *buf, int32_t bufLen, SCreateDnodeReq *pReq) {
232✔
4136
  SEncoder encoder = {0};
232✔
4137
  int32_t  code = 0;
232✔
4138
  int32_t  lino;
4139
  int32_t  tlen;
4140
  tEncoderInit(&encoder, buf, bufLen);
232✔
4141

4142
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
232!
4143
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->fqdn));
464!
4144
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->port));
464!
4145
  ENCODESQL();
696!
4146
  tEndEncode(&encoder);
232✔
4147

4148
_exit:
232✔
4149
  if (code) {
232!
4150
    tlen = code;
×
4151
  } else {
4152
    tlen = encoder.pos;
232✔
4153
  }
4154
  tEncoderClear(&encoder);
232✔
4155
  return tlen;
232✔
4156
}
4157

4158
int32_t tDeserializeSCreateDnodeReq(void *buf, int32_t bufLen, SCreateDnodeReq *pReq) {
545✔
4159
  SDecoder decoder = {0};
545✔
4160
  int32_t  code = 0;
545✔
4161
  int32_t  lino;
4162
  tDecoderInit(&decoder, buf, bufLen);
545✔
4163

4164
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
545!
4165
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->fqdn));
545!
4166
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->port));
1,090!
4167
  DECODESQL();
1,635!
4168
  tEndDecode(&decoder);
545✔
4169

4170
_exit:
545✔
4171
  tDecoderClear(&decoder);
545✔
4172
  return code;
545✔
4173
}
4174

4175
void tFreeSCreateDnodeReq(SCreateDnodeReq *pReq) { FREESQL(); }
661!
4176

4177
int32_t tSerializeSCreateFuncReq(void *buf, int32_t bufLen, SCreateFuncReq *pReq) {
108✔
4178
  SEncoder encoder = {0};
108✔
4179
  int32_t  code = 0;
108✔
4180
  int32_t  lino;
4181
  int32_t  tlen;
4182
  tEncoderInit(&encoder, buf, bufLen);
108✔
4183

4184
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
108!
4185
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
216!
4186
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igExists));
216!
4187
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->funcType));
216!
4188
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->scriptType));
216!
4189
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->outputType));
216!
4190
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->outputLen));
216!
4191
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->bufSize));
216!
4192
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->codeLen));
216!
4193
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->signature));
216!
4194

4195
  if (pReq->pCode != NULL) {
108✔
4196
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->pCode, pReq->codeLen));
192!
4197
  }
4198

4199
  int32_t commentSize = 0;
108✔
4200
  if (pReq->pComment != NULL) {
108✔
4201
    commentSize = strlen(pReq->pComment) + 1;
54✔
4202
  }
4203
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, commentSize));
108!
4204
  if (pReq->pComment != NULL) {
108✔
4205
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->pComment));
108!
4206
  }
4207

4208
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->orReplace));
216!
4209

4210
  tEndEncode(&encoder);
108✔
4211

4212
_exit:
108✔
4213
  if (code) {
108!
4214
    tlen = code;
×
4215
  } else {
4216
    tlen = encoder.pos;
108✔
4217
  }
4218
  tEncoderClear(&encoder);
108✔
4219
  return tlen;
108✔
4220
}
4221

4222
int32_t tDeserializeSCreateFuncReq(void *buf, int32_t bufLen, SCreateFuncReq *pReq) {
55✔
4223
  SDecoder decoder = {0};
55✔
4224
  int32_t  code = 0;
55✔
4225
  int32_t  lino;
4226
  tDecoderInit(&decoder, buf, bufLen);
55✔
4227

4228
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
55!
4229
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
55!
4230
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igExists));
110!
4231
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->funcType));
110!
4232
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->scriptType));
110!
4233
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->outputType));
110!
4234
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->outputLen));
110!
4235
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->bufSize));
110!
4236
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->codeLen));
110!
4237
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->signature));
110!
4238

4239
  if (pReq->codeLen > 0) {
55✔
4240
    pReq->pCode = taosMemoryCalloc(1, pReq->codeLen);
49!
4241
    if (pReq->pCode == NULL) {
49!
4242
      TAOS_CHECK_EXIT(terrno);
×
4243
    }
4244
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pCode));
49!
4245
  }
4246

4247
  int32_t commentSize = 0;
55✔
4248
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &commentSize));
55!
4249
  if (commentSize > 0) {
55✔
4250
    pReq->pComment = taosMemoryCalloc(1, commentSize);
27!
4251
    if (pReq->pComment == NULL) {
27!
4252
      TAOS_CHECK_EXIT(terrno);
×
4253
    }
4254
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->pComment));
27!
4255
  }
4256

4257
  if (!tDecodeIsEnd(&decoder)) {
55!
4258
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->orReplace));
110!
4259
  } else {
4260
    pReq->orReplace = false;
×
4261
  }
4262

4263
  tEndDecode(&decoder);
55✔
4264

4265
_exit:
55✔
4266
  tDecoderClear(&decoder);
55✔
4267
  return code;
55✔
4268
}
4269

4270
void tFreeSCreateFuncReq(SCreateFuncReq *pReq) {
109✔
4271
  taosMemoryFree(pReq->pCode);
109!
4272
  taosMemoryFree(pReq->pComment);
109!
4273
}
109✔
4274

4275
int32_t tSerializeSDropFuncReq(void *buf, int32_t bufLen, SDropFuncReq *pReq) {
24✔
4276
  SEncoder encoder = {0};
24✔
4277
  int32_t  code = 0;
24✔
4278
  int32_t  lino;
4279
  int32_t  tlen;
4280
  tEncoderInit(&encoder, buf, bufLen);
24✔
4281

4282
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
24!
4283
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
48!
4284
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists));
48!
4285
  tEndEncode(&encoder);
24✔
4286

4287
_exit:
24✔
4288
  if (code) {
24!
4289
    tlen = code;
×
4290
  } else {
4291
    tlen = encoder.pos;
24✔
4292
  }
4293
  tEncoderClear(&encoder);
24✔
4294
  return tlen;
24✔
4295
}
4296

4297
int32_t tDeserializeSDropFuncReq(void *buf, int32_t bufLen, SDropFuncReq *pReq) {
22✔
4298
  SDecoder decoder = {0};
22✔
4299
  int32_t  code = 0;
22✔
4300
  int32_t  lino;
4301
  tDecoderInit(&decoder, buf, bufLen);
22✔
4302

4303
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
22!
4304
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
22!
4305
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists));
44!
4306
  tEndDecode(&decoder);
22✔
4307

4308
_exit:
22✔
4309
  tDecoderClear(&decoder);
22✔
4310
  return code;
22✔
4311
}
4312

4313
int32_t tSerializeSRetrieveFuncReq(void *buf, int32_t bufLen, SRetrieveFuncReq *pReq) {
238✔
4314
  SEncoder encoder = {0};
238✔
4315
  int32_t  code = 0;
238✔
4316
  int32_t  lino;
4317
  int32_t  tlen;
4318
  tEncoderInit(&encoder, buf, bufLen);
238✔
4319

4320
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
238!
4321
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfFuncs));
476!
4322
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ignoreCodeComment));
476!
4323

4324
  if (pReq->numOfFuncs != (int32_t)taosArrayGetSize(pReq->pFuncNames)) {
238!
4325
    TAOS_CHECK_EXIT(TSDB_CODE_INVALID_PARA);
×
4326
  }
4327
  for (int32_t i = 0; i < pReq->numOfFuncs; ++i) {
6,626✔
4328
    char *fname = taosArrayGet(pReq->pFuncNames, i);
6,388✔
4329
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, fname));
6,388!
4330
  }
4331

4332
  tEndEncode(&encoder);
238✔
4333

4334
_exit:
238✔
4335
  if (code) {
238!
4336
    tlen = code;
×
4337
  } else {
4338
    tlen = encoder.pos;
238✔
4339
  }
4340
  tEncoderClear(&encoder);
238✔
4341
  return tlen;
238✔
4342
}
4343

4344
int32_t tDeserializeSRetrieveFuncReq(void *buf, int32_t bufLen, SRetrieveFuncReq *pReq) {
308✔
4345
  SDecoder decoder = {0};
308✔
4346
  int32_t  code = 0;
308✔
4347
  int32_t  lino;
4348
  tDecoderInit(&decoder, buf, bufLen);
308✔
4349

4350
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
308!
4351
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfFuncs));
616!
4352
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, (int8_t *)&pReq->ignoreCodeComment));
616!
4353

4354
  pReq->pFuncNames = taosArrayInit(pReq->numOfFuncs, TSDB_FUNC_NAME_LEN);
308✔
4355
  if (pReq->pFuncNames == NULL) {
308!
4356
    TAOS_CHECK_EXIT(terrno);
×
4357
  }
4358

4359
  for (int32_t i = 0; i < pReq->numOfFuncs; ++i) {
3,691✔
4360
    char fname[TSDB_FUNC_NAME_LEN] = {0};
3,383✔
4361
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, fname));
3,383!
4362
    if (taosArrayPush(pReq->pFuncNames, fname) == NULL) {
6,766!
4363
      TAOS_CHECK_EXIT(terrno);
×
4364
    }
4365
  }
4366
  tEndDecode(&decoder);
308✔
4367

4368
_exit:
308✔
4369
  tDecoderClear(&decoder);
308✔
4370
  return code;
308✔
4371
}
4372

4373
void tFreeSRetrieveFuncReq(SRetrieveFuncReq *pReq) { taosArrayDestroy(pReq->pFuncNames); }
332✔
4374

4375
int32_t tSerializeSRetrieveFuncRsp(void *buf, int32_t bufLen, SRetrieveFuncRsp *pRsp) {
572✔
4376
  SEncoder encoder = {0};
572✔
4377
  int32_t  code = 0;
572✔
4378
  int32_t  lino;
4379
  int32_t  tlen;
4380
  tEncoderInit(&encoder, buf, bufLen);
572✔
4381

4382
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
572!
4383
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->numOfFuncs));
1,144!
4384

4385
  if (pRsp->numOfFuncs != (int32_t)taosArrayGetSize(pRsp->pFuncInfos)) {
572!
4386
    TAOS_CHECK_EXIT(TSDB_CODE_INVALID_PARA);
×
4387
  }
4388
  for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
1,150✔
4389
    SFuncInfo *pInfo = taosArrayGet(pRsp->pFuncInfos, i);
578✔
4390

4391
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pInfo->name));
1,156!
4392
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pInfo->funcType));
1,156!
4393
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pInfo->scriptType));
1,156!
4394
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pInfo->outputType));
1,156!
4395
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->outputLen));
1,156!
4396
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->bufSize));
1,156!
4397
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pInfo->signature));
1,156!
4398
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->codeSize));
1,156!
4399
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pInfo->commentSize));
1,156!
4400
    if (pInfo->codeSize) {
578✔
4401
      TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pInfo->pCode, pInfo->codeSize));
396!
4402
    }
4403
    if (pInfo->commentSize) {
578✔
4404
      TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pInfo->pComment));
60!
4405
    }
4406
  }
4407

4408
  if (pRsp->numOfFuncs != (int32_t)taosArrayGetSize(pRsp->pFuncExtraInfos)) {
572!
4409
    TAOS_CHECK_EXIT(TSDB_CODE_INVALID_PARA);
×
4410
  }
4411
  for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
1,150✔
4412
    SFuncExtraInfo *extraInfo = taosArrayGet(pRsp->pFuncExtraInfos, i);
578✔
4413
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, extraInfo->funcVersion));
1,156!
4414
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, extraInfo->funcCreatedTime));
1,156!
4415
  }
4416

4417
  tEndEncode(&encoder);
572✔
4418

4419
_exit:
572✔
4420
  if (code) {
572!
4421
    tlen = code;
×
4422
  } else {
4423
    tlen = encoder.pos;
572✔
4424
  }
4425
  tEncoderClear(&encoder);
572✔
4426
  return tlen;
572✔
4427
}
4428

4429
int32_t tDeserializeSRetrieveFuncRsp(void *buf, int32_t bufLen, SRetrieveFuncRsp *pRsp) {
107✔
4430
  SDecoder decoder = {0};
107✔
4431
  int32_t  code = 0;
107✔
4432
  int32_t  lino;
4433
  tDecoderInit(&decoder, buf, bufLen);
107✔
4434

4435
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
107!
4436
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->numOfFuncs));
214!
4437

4438
  pRsp->pFuncInfos = taosArrayInit(pRsp->numOfFuncs, sizeof(SFuncInfo));
107✔
4439
  if (pRsp->pFuncInfos == NULL) {
107!
4440
    TAOS_CHECK_EXIT(terrno);
×
4441
  }
4442

4443
  for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
217✔
4444
    SFuncInfo fInfo = {0};
110✔
4445
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, fInfo.name));
110!
4446
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &fInfo.funcType));
110!
4447
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &fInfo.scriptType));
110!
4448
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &fInfo.outputType));
110!
4449
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &fInfo.outputLen));
110!
4450
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &fInfo.bufSize));
110!
4451
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &fInfo.signature));
110!
4452
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &fInfo.codeSize));
110!
4453
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &fInfo.commentSize));
110!
4454
    if (fInfo.codeSize) {
110✔
4455
      fInfo.pCode = taosMemoryCalloc(1, fInfo.codeSize);
99!
4456
      if (fInfo.pCode == NULL) {
99!
4457
        TAOS_CHECK_EXIT(terrno);
×
4458
      }
4459
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, fInfo.pCode));
99!
4460
    }
4461
    if (fInfo.commentSize) {
110✔
4462
      fInfo.pComment = taosMemoryCalloc(1, fInfo.commentSize);
15!
4463
      if (fInfo.pComment == NULL) {
15!
4464
        TAOS_CHECK_EXIT(terrno);
×
4465
      }
4466
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, fInfo.pComment));
15!
4467
    }
4468

4469
    if (taosArrayPush(pRsp->pFuncInfos, &fInfo) == NULL) {
220!
4470
      TAOS_CHECK_EXIT(terrno);
×
4471
    }
4472
  }
4473

4474
  pRsp->pFuncExtraInfos = taosArrayInit(pRsp->numOfFuncs, sizeof(SFuncExtraInfo));
107✔
4475
  if (pRsp->pFuncExtraInfos == NULL) {
107!
4476
    TAOS_CHECK_EXIT(terrno);
×
4477
  }
4478
  if (tDecodeIsEnd(&decoder)) {
107!
4479
    for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
×
4480
      SFuncExtraInfo extraInfo = {0};
×
4481
      if (taosArrayPush(pRsp->pFuncExtraInfos, &extraInfo) == NULL) {
×
4482
        TAOS_CHECK_EXIT(terrno);
×
4483
      }
4484
    }
4485
  } else {
4486
    for (int32_t i = 0; i < pRsp->numOfFuncs; ++i) {
217✔
4487
      SFuncExtraInfo extraInfo = {0};
110✔
4488
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &extraInfo.funcVersion));
110!
4489
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &extraInfo.funcCreatedTime));
110!
4490
      if (taosArrayPush(pRsp->pFuncExtraInfos, &extraInfo) == NULL) {
220!
4491
        TAOS_CHECK_EXIT(terrno);
×
4492
      }
4493
    }
4494
  }
4495
  tEndDecode(&decoder);
107✔
4496

4497
_exit:
107✔
4498
  tDecoderClear(&decoder);
107✔
4499
  return code;
107✔
4500
}
4501

4502
void tFreeSFuncInfo(SFuncInfo *pInfo) {
443✔
4503
  if (NULL == pInfo) {
443!
4504
    return;
×
4505
  }
4506

4507
  taosMemoryFree(pInfo->pCode);
443!
4508
  taosMemoryFree(pInfo->pComment);
443!
4509
}
4510

4511
void tFreeSRetrieveFuncRsp(SRetrieveFuncRsp *pRsp) {
323✔
4512
  int32_t size = taosArrayGetSize(pRsp->pFuncInfos);
323✔
4513
  for (int32_t i = 0; i < size; ++i) {
630✔
4514
    SFuncInfo *pInfo = taosArrayGet(pRsp->pFuncInfos, i);
307✔
4515
    tFreeSFuncInfo(pInfo);
307✔
4516
  }
4517
  taosArrayDestroy(pRsp->pFuncInfos);
323✔
4518
  taosArrayDestroy(pRsp->pFuncExtraInfos);
323✔
4519
}
323✔
4520

4521
int32_t tSerializeSTableCfgReq(void *buf, int32_t bufLen, STableCfgReq *pReq) {
166✔
4522
  int32_t code = 0;
166✔
4523
  int32_t lino;
4524
  int32_t headLen = sizeof(SMsgHead);
166✔
4525
  if (buf != NULL) {
166✔
4526
    buf = (char *)buf + headLen;
83✔
4527
    bufLen -= headLen;
83✔
4528
  }
4529

4530
  SEncoder encoder = {0};
166✔
4531
  tEncoderInit(&encoder, buf, bufLen);
166✔
4532

4533
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
166!
4534
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dbFName));
332!
4535
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->tbName));
332!
4536
  tEndEncode(&encoder);
166✔
4537

4538
_exit:
166✔
4539
  if (code) {
166!
4540
    tEncoderClear(&encoder);
×
4541
    return code;
×
4542
  } else {
4543
    int32_t tlen = encoder.pos;
166✔
4544
    tEncoderClear(&encoder);
166✔
4545

4546
    if (buf != NULL) {
166✔
4547
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
83✔
4548
      pHead->vgId = htonl(pReq->header.vgId);
83✔
4549
      pHead->contLen = htonl(tlen + headLen);
83✔
4550
    }
4551

4552
    return tlen + headLen;
166✔
4553
  }
4554
}
4555

4556
int32_t tDeserializeSTableCfgReq(void *buf, int32_t bufLen, STableCfgReq *pReq) {
362✔
4557
  int32_t headLen = sizeof(SMsgHead);
362✔
4558

4559
  int32_t   code = 0;
362✔
4560
  int32_t   lino;
4561
  SMsgHead *pHead = buf;
362✔
4562
  pHead->vgId = pReq->header.vgId;
362✔
4563
  pHead->contLen = pReq->header.contLen;
362✔
4564

4565
  SDecoder decoder = {0};
362✔
4566
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
362✔
4567

4568
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
362!
4569
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dbFName));
362!
4570
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->tbName));
362!
4571

4572
  tEndDecode(&decoder);
362✔
4573
_exit:
362✔
4574
  tDecoderClear(&decoder);
362✔
4575
  return code;
362✔
4576
}
4577

4578
int32_t tSerializeSTableCfgRsp(void *buf, int32_t bufLen, STableCfgRsp *pRsp) {
730✔
4579
  SEncoder encoder = {0};
730✔
4580
  int32_t  code = 0;
730✔
4581
  int32_t  lino;
4582
  int32_t  tlen;
4583
  tEncoderInit(&encoder, buf, bufLen);
730✔
4584

4585
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
730!
4586
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->tbName));
1,460!
4587
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->stbName));
1,460!
4588
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->dbFName));
1,460!
4589
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->numOfTags));
1,460!
4590
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->numOfColumns));
1,460!
4591
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRsp->tableType));
1,460!
4592
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->delay1));
1,460!
4593
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->delay2));
1,460!
4594
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->watermark1));
1,460!
4595
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->watermark2));
1,460!
4596
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->ttl));
1,460!
4597

4598
  int32_t numOfFuncs = taosArrayGetSize(pRsp->pFuncs);
730✔
4599
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfFuncs));
730!
4600
  for (int32_t i = 0; i < numOfFuncs; ++i) {
730!
4601
    const char *pFunc = taosArrayGet(pRsp->pFuncs, i);
×
4602
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pFunc));
×
4603
  }
4604

4605
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->commentLen));
1,460!
4606
  if (pRsp->commentLen > 0) {
730!
4607
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->pComment));
×
4608
  }
4609

4610
  for (int32_t i = 0; i < pRsp->numOfColumns + pRsp->numOfTags; ++i) {
7,028✔
4611
    SSchema *pSchema = &pRsp->pSchemas[i];
6,298✔
4612
    TAOS_CHECK_EXIT(tEncodeSSchema(&encoder, pSchema));
6,298!
4613
  }
4614

4615
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->tagsLen));
1,460!
4616
  TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pRsp->pTags, pRsp->tagsLen));
1,460!
4617

4618
  if (withExtSchema(pRsp->tableType)) {
730✔
4619
    for (int32_t i = 0; i < pRsp->numOfColumns; ++i) {
4,410✔
4620
      SSchemaExt *pSchemaExt = &pRsp->pSchemaExt[i];
3,782✔
4621
      TAOS_CHECK_EXIT(tEncodeSSchemaExt(&encoder, pSchemaExt));
3,782!
4622
    }
4623
  }
4624

4625
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRsp->virtualStb));
1,460!
4626
  if (hasRefCol(pRsp->tableType)) {
730✔
4627
    for (int32_t i = 0; i < pRsp->numOfColumns; ++i) {
212✔
4628
      SColRef *pColRef = &pRsp->pColRefs[i];
176✔
4629
      TAOS_CHECK_EXIT(tEncodeSColRef(&encoder, pColRef));
176!
4630
    }
4631
  }
4632

4633
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->keep));
1,460!
4634

4635
  tEndEncode(&encoder);
730✔
4636

4637
_exit:
730✔
4638
  if (code) {
730!
4639
    tlen = code;
×
4640
  } else {
4641
    tlen = encoder.pos;
730✔
4642
  }
4643
  tEncoderClear(&encoder);
730✔
4644
  return tlen;
730✔
4645
}
4646

4647
int32_t tDeserializeSTableCfgRsp(void *buf, int32_t bufLen, STableCfgRsp *pRsp) {
83✔
4648
  SDecoder decoder = {0};
83✔
4649
  int32_t  code = 0;
83✔
4650
  int32_t  lino;
4651
  tDecoderInit(&decoder, buf, bufLen);
83✔
4652

4653
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
83!
4654
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->tbName));
83!
4655
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->stbName));
83!
4656
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->dbFName));
83!
4657
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->numOfTags));
166!
4658
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->numOfColumns));
166!
4659
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pRsp->tableType));
166!
4660
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->delay1));
166!
4661
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->delay2));
166!
4662
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->watermark1));
166!
4663
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->watermark2));
166!
4664
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->ttl));
166!
4665

4666
  int32_t numOfFuncs = 0;
83✔
4667
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfFuncs));
83!
4668
  if (numOfFuncs > 0) {
83!
4669
    pRsp->pFuncs = taosArrayInit(numOfFuncs, TSDB_FUNC_NAME_LEN);
×
4670
    if (NULL == pRsp->pFuncs) {
×
4671
      TAOS_CHECK_EXIT(terrno);
×
4672
    }
4673
  }
4674
  for (int32_t i = 0; i < numOfFuncs; ++i) {
83!
4675
    char pFunc[TSDB_FUNC_NAME_LEN];
4676
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pFunc));
×
4677
    if (taosArrayPush(pRsp->pFuncs, pFunc) == NULL) {
×
4678
      TAOS_CHECK_EXIT(terrno);
×
4679
    }
4680
  }
4681

4682
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->commentLen));
166!
4683
  if (pRsp->commentLen > 0) {
83!
4684
    TAOS_CHECK_EXIT(tDecodeCStrAlloc(&decoder, &pRsp->pComment));
×
4685
  } else {
4686
    pRsp->pComment = NULL;
83✔
4687
  }
4688

4689
  int32_t totalCols = pRsp->numOfTags + pRsp->numOfColumns;
83✔
4690
  pRsp->pSchemas = taosMemoryMalloc(sizeof(SSchema) * totalCols);
83!
4691
  if (pRsp->pSchemas == NULL) {
83!
4692
    TAOS_CHECK_EXIT(terrno);
×
4693
  }
4694

4695
  for (int32_t i = 0; i < totalCols; ++i) {
1,181✔
4696
    SSchema *pSchema = &pRsp->pSchemas[i];
1,098✔
4697
    TAOS_CHECK_EXIT(tDecodeSSchema(&decoder, pSchema));
1,098!
4698
  }
4699

4700
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->tagsLen));
166!
4701
  TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, (void **)&pRsp->pTags, NULL));
166!
4702

4703
  if (!tDecodeIsEnd(&decoder)) {
83!
4704
    if (withExtSchema(pRsp->tableType) && pRsp->numOfColumns > 0) {
83!
4705
      pRsp->pSchemaExt = taosMemoryMalloc(sizeof(SSchemaExt) * pRsp->numOfColumns);
78!
4706
      if (pRsp->pSchemaExt == NULL) {
78!
4707
        TAOS_CHECK_EXIT(terrno);
×
4708
      }
4709

4710
      for (int32_t i = 0; i < pRsp->numOfColumns; ++i) {
793✔
4711
        SSchemaExt *pSchemaExt = &pRsp->pSchemaExt[i];
715✔
4712
        TAOS_CHECK_EXIT(tDecodeSSchemaExt(&decoder, pSchemaExt));
715!
4713
      }
4714
    } else {
4715
      pRsp->pSchemaExt = NULL;
5✔
4716
    }
4717
  }
4718

4719
  if (!tDecodeIsEnd(&decoder)) {
83!
4720
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pRsp->virtualStb));
166!
4721
    if (hasRefCol(pRsp->tableType) && pRsp->numOfColumns > 0) {
83!
4722
      pRsp->pColRefs = taosMemoryMalloc(sizeof(SColRef) * pRsp->numOfColumns);
2!
4723
      if (pRsp->pColRefs == NULL) {
2!
4724
        TAOS_CHECK_EXIT(terrno);
×
4725
      }
4726

4727
      for (int32_t i = 0; i < pRsp->numOfColumns; ++i) {
42✔
4728
        SColRef *pColRef = &pRsp->pColRefs[i];
40✔
4729
        TAOS_CHECK_EXIT(tDecodeSColRef(&decoder, pColRef));
40!
4730
      }
4731
    } else {
4732
      pRsp->pColRefs = NULL;
81✔
4733
    }
4734
  }
4735

4736
  if (!tDecodeIsEnd(&decoder)) {
83!
4737
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->keep));
166!
4738
  } else {
4739
    pRsp->keep = 0;
×
4740
  }
4741

4742
  tEndDecode(&decoder);
83✔
4743

4744
_exit:
83✔
4745
  tDecoderClear(&decoder);
83✔
4746
  return code;
83✔
4747
}
4748

4749
void tFreeSTableCfgRsp(STableCfgRsp *pRsp) {
448✔
4750
  if (NULL == pRsp) {
448!
4751
    return;
×
4752
  }
4753

4754
  taosMemoryFreeClear(pRsp->pComment);
448!
4755
  taosMemoryFreeClear(pRsp->pSchemas);
448!
4756
  taosMemoryFreeClear(pRsp->pSchemaExt);
448!
4757
  taosMemoryFreeClear(pRsp->pColRefs);
448!
4758
  taosMemoryFreeClear(pRsp->pTags);
448!
4759

4760
  taosArrayDestroy(pRsp->pFuncs);
448✔
4761
}
4762

4763
int32_t tSerializeSCreateDbReq(void *buf, int32_t bufLen, SCreateDbReq *pReq) {
1,794✔
4764
  SEncoder encoder = {0};
1,794✔
4765
  int32_t  code = 0;
1,794✔
4766
  int32_t  lino;
4767
  int32_t  tlen;
4768

4769
  tEncoderInit(&encoder, buf, bufLen);
1,794✔
4770

4771
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
1,794!
4772
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
3,588!
4773
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfVgroups));
3,588!
4774
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfStables));
3,588!
4775
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->buffer));
3,588!
4776
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pageSize));
3,588!
4777
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pages));
3,588!
4778
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->cacheLastSize));
3,588!
4779
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysPerFile));
3,588!
4780
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep0));
3,588!
4781
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep1));
3,588!
4782
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep2));
3,588!
4783
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->minRows));
3,588!
4784
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->maxRows));
3,588!
4785
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walFsyncPeriod));
3,588!
4786
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->walLevel));
3,588!
4787
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->precision));
3,588!
4788
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->compression));
3,588!
4789
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->replications));
3,588!
4790
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->strict));
3,588!
4791
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->cacheLast));
3,588!
4792
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->schemaless));
3,588!
4793
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRetentionPeriod));
3,588!
4794
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->walRetentionSize));
3,588!
4795
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRollPeriod));
3,588!
4796
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->walSegmentSize));
3,588!
4797
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sstTrigger));
3,588!
4798
  TAOS_CHECK_EXIT(tEncodeI16(&encoder, pReq->hashPrefix));
3,588!
4799
  TAOS_CHECK_EXIT(tEncodeI16(&encoder, pReq->hashSuffix));
3,588!
4800
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ignoreExist));
3,588!
4801
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfRetensions));
3,588!
4802
  for (int32_t i = 0; i < pReq->numOfRetensions; ++i) {
1,866✔
4803
    SRetention *pRetension = taosArrayGet(pReq->pRetensions, i);
72✔
4804
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRetension->freq));
144!
4805
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRetension->keep));
144!
4806
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRetension->freqUnit));
144!
4807
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRetension->keepUnit));
144!
4808
  }
4809
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->tsdbPageSize));
3,588!
4810
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->keepTimeOffset));
3,588!
4811

4812
  ENCODESQL();
5,322!
4813

4814
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->withArbitrator));
3,588!
4815
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->encryptAlgorithm));
3,588!
4816
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssChunkSize));
3,588!
4817
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssKeepLocal));
3,588!
4818
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ssCompact));
3,588!
4819
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dnodeListStr));
3,588!
4820

4821
  // auto-compact parameters
4822
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->compactInterval));
3,588!
4823
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->compactStartTime));
3,588!
4824
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->compactEndTime));
3,588!
4825
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->compactTimeOffset));
3,588!
4826

4827
  tEndEncode(&encoder);
1,794✔
4828

4829
_exit:
1,794✔
4830
  if (code) {
1,794!
4831
    tlen = code;
×
4832
  } else {
4833
    tlen = encoder.pos;
1,794✔
4834
  }
4835
  tEncoderClear(&encoder);
1,794✔
4836
  return tlen;
1,794✔
4837
}
4838

4839
int32_t tDeserializeSCreateDbReq(void *buf, int32_t bufLen, SCreateDbReq *pReq) {
4,620✔
4840
  SDecoder decoder = {0};
4,620✔
4841
  int32_t  code = 0;
4,620✔
4842
  int32_t  lino;
4843
  tDecoderInit(&decoder, buf, bufLen);
4,620✔
4844

4845
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
4,620!
4846
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
4,620!
4847
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfVgroups));
9,240!
4848
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfStables));
9,240!
4849
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->buffer));
9,240!
4850
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pageSize));
9,240!
4851
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pages));
9,240!
4852
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->cacheLastSize));
9,240!
4853
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysPerFile));
9,240!
4854
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep0));
9,240!
4855
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep1));
9,240!
4856
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep2));
9,240!
4857
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->minRows));
9,240!
4858
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->maxRows));
9,240!
4859
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walFsyncPeriod));
9,240!
4860
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->walLevel));
9,240!
4861
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->precision));
9,240!
4862
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->compression));
9,240!
4863
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->replications));
9,240!
4864
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->strict));
9,240!
4865
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->cacheLast));
9,240!
4866
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->schemaless));
9,240!
4867
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRetentionPeriod));
9,240!
4868
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->walRetentionSize));
9,240!
4869
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRollPeriod));
9,240!
4870
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->walSegmentSize));
9,240!
4871
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sstTrigger));
9,240!
4872
  TAOS_CHECK_EXIT(tDecodeI16(&decoder, &pReq->hashPrefix));
9,240!
4873
  TAOS_CHECK_EXIT(tDecodeI16(&decoder, &pReq->hashSuffix));
9,240!
4874
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ignoreExist));
9,240!
4875
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfRetensions));
9,240!
4876
  pReq->pRetensions = taosArrayInit(pReq->numOfRetensions, sizeof(SRetention));
4,620✔
4877
  if (pReq->pRetensions == NULL) {
4,620!
4878
    TAOS_CHECK_EXIT(terrno);
×
4879
  }
4880

4881
  for (int32_t i = 0; i < pReq->numOfRetensions; ++i) {
4,638✔
4882
    SRetention rentension = {0};
18✔
4883
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &rentension.freq));
18!
4884
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &rentension.keep));
18!
4885
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &rentension.freqUnit));
18!
4886
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &rentension.keepUnit));
18!
4887
    if (taosArrayPush(pReq->pRetensions, &rentension) == NULL) {
36!
4888
      TAOS_CHECK_EXIT(terrno);
×
4889
    }
4890
  }
4891

4892
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->tsdbPageSize));
9,240!
4893

4894
  if (!tDecodeIsEnd(&decoder)) {
4,620!
4895
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->keepTimeOffset));
9,240!
4896
  } else {
4897
    pReq->keepTimeOffset = TSDB_DEFAULT_KEEP_TIME_OFFSET;
×
4898
  }
4899

4900
  DECODESQL();
13,830!
4901

4902
  if (!tDecodeIsEnd(&decoder)) {
4,620!
4903
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->withArbitrator));
9,240!
4904
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->encryptAlgorithm));
9,240!
4905
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssChunkSize));
9,240!
4906
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssKeepLocal));
9,240!
4907
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ssCompact));
9,240!
4908
  } else {
4909
    pReq->withArbitrator = TSDB_DEFAULT_DB_WITH_ARBITRATOR;
×
4910
    pReq->encryptAlgorithm = TSDB_DEFAULT_ENCRYPT_ALGO;
×
4911
    pReq->ssChunkSize = TSDB_DEFAULT_SS_CHUNK_SIZE;
×
4912
    pReq->ssKeepLocal = TSDB_DEFAULT_SS_KEEP_LOCAL;
×
4913
    pReq->ssCompact = TSDB_DEFAULT_SS_COMPACT;
×
4914
  }
4915

4916
  if (!tDecodeIsEnd(&decoder)) {
4,620!
4917
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dnodeListStr));
4,620!
4918
  }
4919

4920
  if (!tDecodeIsEnd(&decoder)) {
4,620!
4921
    TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->compactInterval));
9,240!
4922
    TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->compactStartTime));
9,240!
4923
    TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->compactEndTime));
9,240!
4924
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->compactTimeOffset));
9,240!
4925
  } else {
4926
    pReq->compactInterval = TSDB_DEFAULT_COMPACT_INTERVAL;
×
4927
    pReq->compactStartTime = TSDB_DEFAULT_COMPACT_START_TIME;
×
4928
    pReq->compactEndTime = TSDB_DEFAULT_COMPACT_END_TIME;
×
4929
    pReq->compactTimeOffset = TSDB_DEFAULT_COMPACT_TIME_OFFSET;
×
4930
  }
4931

4932
  tEndDecode(&decoder);
4,620✔
4933

4934
_exit:
4,620✔
4935
  tDecoderClear(&decoder);
4,620✔
4936
  return code;
4,620✔
4937
}
4938

4939
void tFreeSCreateDbReq(SCreateDbReq *pReq) {
5,571✔
4940
  taosArrayDestroy(pReq->pRetensions);
5,571✔
4941
  pReq->pRetensions = NULL;
5,571✔
4942
  FREESQL();
5,571!
4943
}
5,571✔
4944

4945
int32_t tSerializeSAlterDbReq(void *buf, int32_t bufLen, SAlterDbReq *pReq) {
866✔
4946
  SEncoder encoder = {0};
866✔
4947
  int32_t  code = 0;
866✔
4948
  int32_t  lino;
4949
  int32_t  tlen;
4950

4951
  tEncoderInit(&encoder, buf, bufLen);
866✔
4952

4953
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
866!
4954
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
1,732!
4955
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->buffer));
1,732!
4956
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pageSize));
1,732!
4957
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pages));
1,732!
4958
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->cacheLastSize));
1,732!
4959
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysPerFile));
1,732!
4960
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep0));
1,732!
4961
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep1));
1,732!
4962
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep2));
1,732!
4963
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walFsyncPeriod));
1,732!
4964
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->walLevel));
1,732!
4965
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->strict));
1,732!
4966
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->cacheLast));
1,732!
4967
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->replications));
1,732!
4968
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->sstTrigger));
1,732!
4969

4970
  // 1st modification
4971
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->minRows));
1,732!
4972
  // 2nd modification
4973
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRetentionPeriod));
1,732!
4974
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRetentionSize));
1,732!
4975
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->keepTimeOffset));
1,732!
4976

4977
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssKeepLocal));
1,732!
4978
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ssCompact));
1,732!
4979

4980
  ENCODESQL();
2,598!
4981
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->withArbitrator));
1,732!
4982
  // auto compact config
4983
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->compactInterval));
1,732!
4984
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->compactStartTime));
1,732!
4985
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->compactEndTime));
1,732!
4986
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->compactTimeOffset));
1,732!
4987
  tEndEncode(&encoder);
866✔
4988

4989
_exit:
866✔
4990
  if (code) {
866!
4991
    tlen = code;
×
4992
  } else {
4993
    tlen = encoder.pos;
866✔
4994
  }
4995
  tEncoderClear(&encoder);
866✔
4996
  return tlen;
866✔
4997
}
4998

4999
int32_t tDeserializeSAlterDbReq(void *buf, int32_t bufLen, SAlterDbReq *pReq) {
574✔
5000
  SDecoder decoder = {0};
574✔
5001
  int32_t  code = 0;
574✔
5002
  int32_t  lino;
5003
  tDecoderInit(&decoder, buf, bufLen);
574✔
5004

5005
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
574!
5006
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
574!
5007
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->buffer));
1,148!
5008
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pageSize));
1,148!
5009
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pages));
1,148!
5010
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->cacheLastSize));
1,148!
5011
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysPerFile));
1,148!
5012
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep0));
1,148!
5013
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep1));
1,148!
5014
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep2));
1,148!
5015
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walFsyncPeriod));
1,148!
5016
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->walLevel));
1,148!
5017
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->strict));
1,148!
5018
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->cacheLast));
1,148!
5019
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->replications));
1,148!
5020
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->sstTrigger));
1,148!
5021

5022
  // 1st modification
5023
  if (!tDecodeIsEnd(&decoder)) {
574!
5024
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->minRows));
1,148!
5025
  } else {
5026
    pReq->minRows = -1;
×
5027
  }
5028

5029
  // 2nd modification
5030
  if (!tDecodeIsEnd(&decoder)) {
574!
5031
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRetentionPeriod));
1,148!
5032
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRetentionSize));
1,148!
5033
  } else {
5034
    pReq->walRetentionPeriod = -1;
×
5035
    pReq->walRetentionSize = -1;
×
5036
  }
5037
  pReq->keepTimeOffset = TSDB_DEFAULT_KEEP_TIME_OFFSET;
574✔
5038
  if (!tDecodeIsEnd(&decoder)) {
574!
5039
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->keepTimeOffset));
1,148!
5040
  }
5041

5042
  pReq->ssKeepLocal = TSDB_DEFAULT_SS_KEEP_LOCAL;
574✔
5043
  pReq->ssCompact = TSDB_DEFAULT_SS_COMPACT;
574✔
5044
  if (!tDecodeIsEnd(&decoder)) {
574!
5045
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssKeepLocal));
1,148!
5046
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ssCompact));
1,148!
5047
  }
5048

5049
  DECODESQL();
1,722!
5050
  pReq->withArbitrator = TSDB_DEFAULT_DB_WITH_ARBITRATOR;
574✔
5051
  if (!tDecodeIsEnd(&decoder)) {
574!
5052
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->withArbitrator));
1,148!
5053
  }
5054

5055
  // auto compact config
5056
  if (!tDecodeIsEnd(&decoder)) {
574!
5057
    TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->compactInterval));
1,148!
5058
    TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->compactStartTime));
1,148!
5059
    TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->compactEndTime));
1,148!
5060
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->compactTimeOffset));
1,148!
5061
  } else {
5062
    pReq->compactInterval = TSDB_DEFAULT_COMPACT_INTERVAL;
×
5063
    pReq->compactStartTime = TSDB_DEFAULT_COMPACT_START_TIME;
×
5064
    pReq->compactEndTime = TSDB_DEFAULT_COMPACT_END_TIME;
×
5065
    pReq->compactTimeOffset = TSDB_DEFAULT_COMPACT_TIME_OFFSET;
×
5066
  }
5067
  tEndDecode(&decoder);
574✔
5068

5069
_exit:
574✔
5070
  tDecoderClear(&decoder);
574✔
5071
  return code;
574✔
5072
}
5073

5074
void tFreeSAlterDbReq(SAlterDbReq *pReq) { FREESQL(); }
1,007!
5075

5076
int32_t tSerializeSDropDbReq(void *buf, int32_t bufLen, SDropDbReq *pReq) {
1,194✔
5077
  SEncoder encoder = {0};
1,194✔
5078
  int32_t  code = 0;
1,194✔
5079
  int32_t  lino;
5080
  int32_t  tlen;
5081
  tEncoderInit(&encoder, buf, bufLen);
1,194✔
5082

5083
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
1,194!
5084
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
2,388!
5085
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ignoreNotExists));
2,388!
5086
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->force));
2,388!
5087
  ENCODESQL();
3,534!
5088
  tEndEncode(&encoder);
1,194✔
5089

5090
_exit:
1,194✔
5091
  if (code) {
1,194!
5092
    tlen = code;
×
5093
  } else {
5094
    tlen = encoder.pos;
1,194✔
5095
  }
5096
  tEncoderClear(&encoder);
1,194✔
5097
  return tlen;
1,194✔
5098
}
5099

5100
int32_t tDeserializeSDropDbReq(void *buf, int32_t bufLen, SDropDbReq *pReq) {
4,032✔
5101
  SDecoder decoder = {0};
4,032✔
5102
  int32_t  code = 0;
4,032✔
5103
  int32_t  lino;
5104
  tDecoderInit(&decoder, buf, bufLen);
4,032✔
5105

5106
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
4,032!
5107
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
4,032!
5108
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ignoreNotExists));
8,064!
5109
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->force));
8,064!
5110
  DECODESQL();
12,072!
5111
  tEndDecode(&decoder);
4,032✔
5112

5113
_exit:
4,032✔
5114
  tDecoderClear(&decoder);
4,032✔
5115
  return code;
4,032✔
5116
}
5117

5118
void tFreeSDropDbReq(SDropDbReq *pReq) { FREESQL(); }
4,605!
5119

5120
int32_t tSerializeSDropDbRsp(void *buf, int32_t bufLen, SDropDbRsp *pRsp) {
7,992✔
5121
  SEncoder encoder = {0};
7,992✔
5122
  int32_t  code = 0;
7,992✔
5123
  int32_t  lino;
5124
  int32_t  tlen;
5125
  tEncoderInit(&encoder, buf, bufLen);
7,992✔
5126

5127
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
7,992!
5128
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->db));
15,984!
5129
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->uid));
15,984!
5130
  tEndEncode(&encoder);
7,992✔
5131

5132
_exit:
7,992✔
5133
  if (code) {
7,992!
5134
    tlen = code;
×
5135
  } else {
5136
    tlen = encoder.pos;
7,992✔
5137
  }
5138
  tEncoderClear(&encoder);
7,992✔
5139
  return tlen;
7,992✔
5140
}
5141

5142
int32_t tDeserializeSDropDbRsp(void *buf, int32_t bufLen, SDropDbRsp *pRsp) {
554✔
5143
  SDecoder decoder = {0};
554✔
5144
  int32_t  code = 0;
554✔
5145
  int32_t  lino;
5146
  tDecoderInit(&decoder, buf, bufLen);
554✔
5147

5148
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
554!
5149
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->db));
554!
5150
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->uid));
1,108!
5151
  tEndDecode(&decoder);
554✔
5152

5153
_exit:
554✔
5154
  tDecoderClear(&decoder);
554✔
5155
  return code;
554✔
5156
}
5157

5158
int32_t tSerializeSUseDbReq(void *buf, int32_t bufLen, SUseDbReq *pReq) {
52,994✔
5159
  SEncoder encoder = {0};
52,994✔
5160
  int32_t  code = 0;
52,994✔
5161
  int32_t  lino;
5162
  int32_t  tlen;
5163
  tEncoderInit(&encoder, buf, bufLen);
52,994✔
5164

5165
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
53,180!
5166
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
106,410!
5167
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->dbId));
106,410!
5168
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgVersion));
106,410!
5169
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfTable));
106,410!
5170
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->stateTs));
106,410!
5171
  tEndEncode(&encoder);
53,205✔
5172

5173
_exit:
53,211✔
5174
  if (code) {
53,211!
5175
    tlen = code;
×
5176
  } else {
5177
    tlen = encoder.pos;
53,211✔
5178
  }
5179
  tEncoderClear(&encoder);
53,211✔
5180
  return tlen;
53,199✔
5181
}
5182

5183
int32_t tDeserializeSUseDbReq(void *buf, int32_t bufLen, SUseDbReq *pReq) {
3,636,912✔
5184
  SDecoder decoder = {0};
3,636,912✔
5185
  int32_t  code = 0;
3,636,912✔
5186
  int32_t  lino;
5187
  tDecoderInit(&decoder, buf, bufLen);
3,636,912✔
5188

5189
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3,636,910!
5190
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
3,636,911!
5191
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->dbId));
7,273,680!
5192
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgVersion));
7,273,630!
5193
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfTable));
7,273,586!
5194
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->stateTs));
7,273,573!
5195
  tEndDecode(&decoder);
3,636,787✔
5196

5197
_exit:
3,636,768✔
5198
  tDecoderClear(&decoder);
3,636,768✔
5199
  return code;
3,636,898✔
5200
}
5201

5202
int32_t tSerializeSVSubTablesReq(void *buf, int32_t bufLen, SVSubTablesReq *pReq) {
×
5203
  SEncoder encoder = {0};
×
5204
  int32_t  code = 0;
×
5205
  int32_t  lino;
5206
  int32_t  tlen;
5207
  tEncoderInit(&encoder, buf, bufLen);
×
5208

5209
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
5210
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->suid));
×
5211
  tEndEncode(&encoder);
×
5212

5213
_exit:
×
5214
  if (code) {
×
5215
    tlen = code;
×
5216
  } else {
5217
    tlen = encoder.pos;
×
5218
  }
5219
  tEncoderClear(&encoder);
×
5220
  return tlen;
×
5221
}
5222

5223
int32_t tDeserializeSVSubTablesReq(void *buf, int32_t bufLen, SVSubTablesReq *pReq) {
×
5224
  SDecoder decoder = {0};
×
5225
  int32_t  code = 0;
×
5226
  int32_t  lino;
5227
  tDecoderInit(&decoder, buf, bufLen);
×
5228

5229
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
5230
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->suid));
×
5231
  tEndDecode(&decoder);
×
5232

5233
_exit:
×
5234
  tDecoderClear(&decoder);
×
5235
  return code;
×
5236
}
5237

5238
int32_t tSerializeSVSubTablesRspImpl(SEncoder *pEncoder, SVSubTablesRsp *pRsp) {
×
5239
  int32_t code = 0;
×
5240
  int32_t lino;
5241
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->vgId));
×
5242
  int32_t numOfTables = taosArrayGetSize(pRsp->pTables);
×
5243
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, numOfTables));
×
5244
  for (int32_t i = 0; i < numOfTables; ++i) {
×
5245
    SVCTableRefCols *pTb = (SVCTableRefCols *)taosArrayGetP(pRsp->pTables, i);
×
5246
    TAOS_CHECK_EXIT(tEncodeU64(pEncoder, pTb->uid));
×
5247
    TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pTb->numOfSrcTbls));
×
5248
    TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pTb->numOfColRefs));
×
5249
    for (int32_t n = 0; n < pTb->numOfColRefs; ++n) {
×
5250
      SRefColInfo *pCol = pTb->refCols + n;
×
5251
      TAOS_CHECK_EXIT(tEncodeI16(pEncoder, pCol->colId));
×
5252
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pCol->refDbName));
×
5253
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pCol->refTableName));
×
5254
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pCol->refColName));
×
5255
    }
5256
  }
5257

5258
_exit:
×
5259

5260
  return code;
×
5261
}
5262

5263
int32_t tSerializeSVSubTablesRsp(void *buf, int32_t bufLen, SVSubTablesRsp *pRsp) {
×
5264
  SEncoder encoder = {0};
×
5265
  int32_t  code = 0;
×
5266
  int32_t  lino;
5267
  int32_t  tlen;
5268
  tEncoderInit(&encoder, buf, bufLen);
×
5269

5270
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
5271
  TAOS_CHECK_EXIT(tSerializeSVSubTablesRspImpl(&encoder, pRsp));
×
5272

5273
  tEndEncode(&encoder);
×
5274

5275
_exit:
×
5276
  if (code) {
×
5277
    tlen = code;
×
5278
  } else {
5279
    tlen = encoder.pos;
×
5280
  }
5281
  tEncoderClear(&encoder);
×
5282
  return tlen;
×
5283
}
5284

5285
int32_t tDeserializeSVSubTablesRspImpl(SDecoder *pDecoder, SVSubTablesRsp *pRsp) {
×
5286
  int32_t         code = 0;
×
5287
  int32_t         lino;
5288
  SVCTableRefCols tb = {0};
×
5289
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->vgId));
×
5290
  int32_t numOfTables = 0;
×
5291
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &numOfTables));
×
5292
  if (numOfTables > 0) {
×
5293
    pRsp->pTables = taosArrayInit(numOfTables, POINTER_BYTES);
×
5294
    if (NULL == pRsp->pTables) {
×
5295
      code = terrno;
×
5296
      return code;
×
5297
    }
5298

5299
    for (int32_t i = 0; i < numOfTables; ++i) {
×
5300
      TAOS_CHECK_EXIT(tDecodeU64(pDecoder, &tb.uid));
×
5301
      TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &tb.numOfSrcTbls));
×
5302
      TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &tb.numOfColRefs));
×
5303
      if (tb.numOfColRefs > 0) {
×
5304
        SVCTableRefCols *pTb = taosMemoryCalloc(1, sizeof(tb) + tb.numOfColRefs * sizeof(SRefColInfo));
×
5305
        if (NULL == pTb) {
×
5306
          code = terrno;
×
5307
          return code;
×
5308
        }
5309
        if (NULL == taosArrayPush(pRsp->pTables, &pTb)) {
×
5310
          code = terrno;
×
5311
          taosMemoryFree(pTb);
×
5312
          return code;
×
5313
        }
5314

5315
        pTb->uid = tb.uid;
×
5316
        pTb->numOfSrcTbls = tb.numOfSrcTbls;
×
5317
        pTb->numOfColRefs = tb.numOfColRefs;
×
5318
        pTb->refCols = (SRefColInfo *)(pTb + 1);
×
5319
        for (int32_t n = 0; n < tb.numOfColRefs; ++n) {
×
5320
          TAOS_CHECK_EXIT(tDecodeI16(pDecoder, &pTb->refCols[n].colId));
×
5321
          TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTb->refCols[n].refDbName));
×
5322
          TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTb->refCols[n].refTableName));
×
5323
          TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTb->refCols[n].refColName));
×
5324
        }
5325
      }
5326
    }
5327
  }
5328

5329
_exit:
×
5330

5331
  return code;
×
5332
}
5333

5334
int32_t tDeserializeSVSubTablesRsp(void *buf, int32_t bufLen, SVSubTablesRsp *pRsp) {
×
5335
  SDecoder decoder = {0};
×
5336
  int32_t  code = 0;
×
5337
  int32_t  lino;
5338
  tDecoderInit(&decoder, buf, bufLen);
×
5339

5340
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
5341
  TAOS_CHECK_EXIT(tDeserializeSVSubTablesRspImpl(&decoder, pRsp));
×
5342

5343
  tEndDecode(&decoder);
×
5344

5345
_exit:
×
5346

5347
  tDecoderClear(&decoder);
×
5348
  return code;
×
5349
}
5350

5351
void tFreeSVCTableRefCols(void *pParam) {
×
5352
  SVCTableRefCols *pCols = *(SVCTableRefCols **)pParam;
×
5353
  if (NULL == pCols) {
×
5354
    return;
×
5355
  }
5356

5357
  taosMemoryFree(pCols);
×
5358
}
5359

5360
void tDestroySVSubTablesRsp(void *rsp) {
×
5361
  if (NULL == rsp) {
×
5362
    return;
×
5363
  }
5364

5365
  SVSubTablesRsp *pRsp = (SVSubTablesRsp *)rsp;
×
5366

5367
  taosArrayDestroyEx(pRsp->pTables, tFreeSVCTableRefCols);
×
5368
}
5369

5370
int32_t tSerializeSVStbRefDbsReq(void *buf, int32_t bufLen, SVStbRefDbsReq *pReq) {
280✔
5371
  SEncoder encoder = {0};
280✔
5372
  int32_t  code = 0;
280✔
5373
  int32_t  lino;
5374
  int32_t  tlen;
5375
  tEncoderInit(&encoder, buf, bufLen);
280✔
5376

5377
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
280!
5378
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->suid));
560!
5379
  tEndEncode(&encoder);
280✔
5380

5381
_exit:
280✔
5382
  if (code) {
280!
5383
    tlen = code;
×
5384
  } else {
5385
    tlen = encoder.pos;
280✔
5386
  }
5387
  tEncoderClear(&encoder);
280✔
5388
  return tlen;
280✔
5389
}
5390

5391
int32_t tDeserializeSVStbRefDbsReq(void *buf, int32_t bufLen, SVStbRefDbsReq *pReq) {
25✔
5392
  SDecoder decoder = {0};
25✔
5393
  int32_t  code = 0;
25✔
5394
  int32_t  lino;
5395
  tDecoderInit(&decoder, buf, bufLen);
25✔
5396

5397
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
25!
5398
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->suid));
50!
5399
  tEndDecode(&decoder);
25✔
5400

5401
_exit:
25✔
5402
  tDecoderClear(&decoder);
25✔
5403
  return code;
25✔
5404
}
5405

5406
int32_t tSerializeSVStbRefDbsRspImpl(SEncoder *pEncoder, SVStbRefDbsRsp *pRsp) {
50✔
5407
  int32_t code = 0;
50✔
5408
  int32_t lino;
5409
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->vgId));
100!
5410
  int32_t numOfDbs = taosArrayGetSize(pRsp->pDbs);
50✔
5411
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, numOfDbs));
50!
5412
  for (int32_t i = 0; i < numOfDbs; ++i) {
100✔
5413
    char *pDbName = (char *)taosArrayGetP(pRsp->pDbs, i);
50✔
5414
    TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pDbName));
50!
5415
  }
5416

5417
_exit:
50✔
5418

5419
  return code;
50✔
5420
}
5421

5422
int32_t tSerializeSVStbRefDbsRsp(void *buf, int32_t bufLen, SVStbRefDbsRsp *pRsp) {
50✔
5423
  SEncoder encoder = {0};
50✔
5424
  int32_t  code = 0;
50✔
5425
  int32_t  lino;
5426
  int32_t  tlen;
5427
  tEncoderInit(&encoder, buf, bufLen);
50✔
5428

5429
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
50!
5430
  TAOS_CHECK_EXIT(tSerializeSVStbRefDbsRspImpl(&encoder, pRsp));
50!
5431

5432
  tEndEncode(&encoder);
50✔
5433

5434
_exit:
50✔
5435
  if (code) {
50!
5436
    tlen = code;
×
5437
  } else {
5438
    tlen = encoder.pos;
50✔
5439
  }
5440
  tEncoderClear(&encoder);
50✔
5441
  return tlen;
50✔
5442
}
5443

5444
int32_t tDeserializeSVStbRefDbsRspImpl(SDecoder *pDecoder, SVStbRefDbsRsp *pRsp) {
140✔
5445
  int32_t code = 0;
140✔
5446
  int32_t lino;
5447
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->vgId));
280!
5448
  int32_t numOfDbs = 0;
140✔
5449
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &numOfDbs));
140!
5450
  if (numOfDbs > 0) {
140!
5451
    pRsp->pDbs = taosArrayInit(numOfDbs, sizeof(void *));
140✔
5452
    if (NULL == pRsp->pDbs) {
140!
5453
      code = terrno;
×
5454
      return code;
×
5455
    }
5456

5457
    for (int32_t i = 0; i < numOfDbs; ++i) {
280✔
5458
      char *tbName;
5459
      TAOS_CHECK_EXIT(tDecodeCStrAlloc(pDecoder, &tbName));
140!
5460
      if (taosArrayPush(pRsp->pDbs, &tbName) == NULL) {
280!
5461
        TAOS_CHECK_EXIT(terrno);
×
5462
      }
5463
    }
5464
  }
5465

5466
_exit:
140✔
5467

5468
  return code;
140✔
5469
}
5470

5471
int32_t tDeserializeSVStbRefDbsRsp(void *buf, int32_t bufLen, SVStbRefDbsRsp *pRsp) {
140✔
5472
  SDecoder decoder = {0};
140✔
5473
  int32_t  code = 0;
140✔
5474
  int32_t  lino;
5475
  tDecoderInit(&decoder, buf, bufLen);
140✔
5476

5477
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
140!
5478
  TAOS_CHECK_EXIT(tDeserializeSVStbRefDbsRspImpl(&decoder, pRsp));
140!
5479

5480
  tEndDecode(&decoder);
140✔
5481

5482
_exit:
140✔
5483

5484
  tDecoderClear(&decoder);
140✔
5485
  return code;
140✔
5486
}
5487

5488
void tDestroySVStbRefDbsRsp(void *rsp) {
165✔
5489
  if (NULL == rsp) {
165!
5490
    return;
×
5491
  }
5492

5493
  SVStbRefDbsRsp *pRsp = (SVStbRefDbsRsp *)rsp;
165✔
5494

5495
  taosArrayDestroyP(pRsp->pDbs, NULL);
165✔
5496
}
5497

5498
int32_t tSerializeSQnodeListReq(void *buf, int32_t bufLen, SQnodeListReq *pReq) {
6✔
5499
  SEncoder encoder = {0};
6✔
5500
  int32_t  code = 0;
6✔
5501
  int32_t  lino;
5502
  int32_t  tlen;
5503

5504
  tEncoderInit(&encoder, buf, bufLen);
6✔
5505

5506
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
5507
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->rowNum));
12!
5508
  tEndEncode(&encoder);
6✔
5509

5510
_exit:
6✔
5511
  if (code) {
6!
5512
    tlen = code;
×
5513
  } else {
5514
    tlen = encoder.pos;
6✔
5515
  }
5516
  tEncoderClear(&encoder);
6✔
5517
  return tlen;
6✔
5518
}
5519

5520
int32_t tDeserializeSQnodeListReq(void *buf, int32_t bufLen, SQnodeListReq *pReq) {
7,754✔
5521
  SDecoder decoder = {0};
7,754✔
5522
  int32_t  code = 0;
7,754✔
5523
  int32_t  lino;
5524
  tDecoderInit(&decoder, buf, bufLen);
7,754✔
5525

5526
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
7,754!
5527
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->rowNum));
15,508!
5528
  tEndDecode(&decoder);
7,754✔
5529

5530
_exit:
7,754✔
5531
  tDecoderClear(&decoder);
7,754✔
5532
  return code;
7,754✔
5533
}
5534

5535
int32_t tSerializeSDnodeListReq(void *buf, int32_t bufLen, SDnodeListReq *pReq) {
28✔
5536
  SEncoder encoder = {0};
28✔
5537
  int32_t  code = 0;
28✔
5538
  int32_t  lino;
5539
  int32_t  tlen;
5540
  tEncoderInit(&encoder, buf, bufLen);
28✔
5541

5542
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
28!
5543
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->rowNum));
56!
5544
  tEndEncode(&encoder);
28✔
5545

5546
_exit:
28✔
5547
  if (code) {
28!
5548
    tlen = code;
×
5549
  } else {
5550
    tlen = encoder.pos;
28✔
5551
  }
5552
  tEncoderClear(&encoder);
28✔
5553
  return tlen;
28✔
5554
}
5555

5556
int32_t tSerializeSServerVerReq(void *buf, int32_t bufLen, SServerVerReq *pReq) {
6✔
5557
  SEncoder encoder = {0};
6✔
5558
  int32_t  code = 0;
6✔
5559
  int32_t  lino;
5560
  int32_t  tlen;
5561
  tEncoderInit(&encoder, buf, bufLen);
6✔
5562

5563
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
5564
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->useless));
12!
5565
  tEndEncode(&encoder);
6✔
5566

5567
_exit:
6✔
5568
  if (code) {
6!
5569
    tlen = code;
×
5570
  } else {
5571
    tlen = encoder.pos;
6✔
5572
  }
5573
  tEncoderClear(&encoder);
6✔
5574
  return tlen;
6✔
5575
}
5576

5577
int32_t tSerializeSServerVerRsp(void *buf, int32_t bufLen, SServerVerRsp *pRsp) {
6✔
5578
  SEncoder encoder = {0};
6✔
5579
  int32_t  code = 0;
6✔
5580
  int32_t  lino;
5581
  int32_t  tlen;
5582
  tEncoderInit(&encoder, buf, bufLen);
6✔
5583

5584
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
5585
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->ver));
12!
5586
  tEndEncode(&encoder);
6✔
5587

5588
_exit:
6✔
5589
  if (code) {
6!
5590
    tlen = code;
×
5591
  } else {
5592
    tlen = encoder.pos;
6✔
5593
  }
5594
  tEncoderClear(&encoder);
6✔
5595
  return tlen;
6✔
5596
}
5597

5598
int32_t tDeserializeSServerVerRsp(void *buf, int32_t bufLen, SServerVerRsp *pRsp) {
3✔
5599
  SDecoder decoder = {0};
3✔
5600
  int32_t  code = 0;
3✔
5601
  int32_t  lino;
5602
  tDecoderInit(&decoder, buf, bufLen);
3✔
5603

5604
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3!
5605
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->ver));
3!
5606

5607
  tEndDecode(&decoder);
3✔
5608
_exit:
3✔
5609
  tDecoderClear(&decoder);
3✔
5610
  return code;
3✔
5611
}
5612

5613
int32_t tSerializeSQnodeListRsp(void *buf, int32_t bufLen, SQnodeListRsp *pRsp) {
15,514✔
5614
  SEncoder encoder = {0};
15,514✔
5615
  int32_t  code = 0;
15,514✔
5616
  int32_t  lino;
5617
  int32_t  tlen;
5618
  tEncoderInit(&encoder, buf, bufLen);
15,514✔
5619

5620
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
15,514!
5621
  int32_t num = taosArrayGetSize(pRsp->qnodeList);
15,514✔
5622
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
15,514!
5623
  for (int32_t i = 0; i < num; ++i) {
30,660✔
5624
    SQueryNodeLoad *pLoad = taosArrayGet(pRsp->qnodeList, i);
15,146✔
5625
    TAOS_CHECK_EXIT(tEncodeSQueryNodeLoad(&encoder, pLoad));
15,146!
5626
  }
5627
  tEndEncode(&encoder);
15,514✔
5628

5629
_exit:
15,514✔
5630
  if (code) {
15,514!
5631
    tlen = code;
×
5632
  } else {
5633
    tlen = encoder.pos;
15,514✔
5634
  }
5635
  tEncoderClear(&encoder);
15,514✔
5636
  return tlen;
15,514✔
5637
}
5638

5639
int32_t tDeserializeSQnodeListRsp(void *buf, int32_t bufLen, SQnodeListRsp *pRsp) {
3✔
5640
  SDecoder decoder = {0};
3✔
5641
  int32_t  code = 0;
3✔
5642
  int32_t  lino;
5643
  tDecoderInit(&decoder, buf, bufLen);
3✔
5644

5645
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3!
5646
  int32_t num = 0;
3✔
5647
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
3!
5648
  if (NULL == pRsp->qnodeList) {
3!
5649
    pRsp->qnodeList = taosArrayInit(num, sizeof(SQueryNodeLoad));
×
5650
    if (NULL == pRsp->qnodeList) {
×
5651
      TAOS_CHECK_EXIT(terrno);
×
5652
    }
5653
  }
5654

5655
  for (int32_t i = 0; i < num; ++i) {
12✔
5656
    SQueryNodeLoad load = {0};
9✔
5657
    TAOS_CHECK_EXIT(tDecodeSQueryNodeLoad(&decoder, &load));
9!
5658
    if (taosArrayPush(pRsp->qnodeList, &load) == NULL) {
18!
5659
      TAOS_CHECK_EXIT(terrno);
×
5660
    }
5661
  }
5662
  tEndDecode(&decoder);
3✔
5663

5664
_exit:
3✔
5665
  tDecoderClear(&decoder);
3✔
5666
  return code;
3✔
5667
}
5668

5669
void tFreeSQnodeListRsp(SQnodeListRsp *pRsp) { taosArrayDestroy(pRsp->qnodeList); }
7,757✔
5670

5671
int32_t tSerializeSDnodeListRsp(void *buf, int32_t bufLen, SDnodeListRsp *pRsp) {
15,296✔
5672
  SEncoder encoder = {0};
15,296✔
5673
  int32_t  code = 0;
15,296✔
5674
  int32_t  lino;
5675
  int32_t  tlen;
5676
  tEncoderInit(&encoder, buf, bufLen);
15,296✔
5677

5678
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
15,296!
5679
  int32_t num = taosArrayGetSize(pRsp->dnodeList);
15,296✔
5680
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
15,296!
5681
  for (int32_t i = 0; i < num; ++i) {
31,258✔
5682
    SDNodeAddr *pAddr = taosArrayGet(pRsp->dnodeList, i);
15,962✔
5683
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pAddr->nodeId));
31,924!
5684
    TAOS_CHECK_EXIT(tEncodeSEpSet(&encoder, &pAddr->epSet));
15,962!
5685
  }
5686
  tEndEncode(&encoder);
15,296✔
5687

5688
_exit:
15,296✔
5689
  if (code) {
15,296!
5690
    tlen = code;
×
5691
  } else {
5692
    tlen = encoder.pos;
15,296✔
5693
  }
5694
  tEncoderClear(&encoder);
15,296✔
5695
  return tlen;
15,296✔
5696
}
5697

5698
int32_t tDeserializeSDnodeListRsp(void *buf, int32_t bufLen, SDnodeListRsp *pRsp) {
14✔
5699
  SDecoder decoder = {0};
14✔
5700
  int32_t  code = 0;
14✔
5701
  int32_t  lino;
5702
  tDecoderInit(&decoder, buf, bufLen);
14✔
5703

5704
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
14!
5705
  int32_t num = 0;
14✔
5706
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
14!
5707
  if (NULL == pRsp->dnodeList) {
14!
5708
    pRsp->dnodeList = taosArrayInit(num, sizeof(SDNodeAddr));
14✔
5709
    if (NULL == pRsp->dnodeList) {
14!
5710
      TAOS_CHECK_EXIT(terrno);
×
5711
    }
5712
  }
5713

5714
  for (int32_t i = 0; i < num; ++i) {
28✔
5715
    SDNodeAddr addr = {0};
14✔
5716
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &addr.nodeId));
14!
5717
    TAOS_CHECK_EXIT(tDecodeSEpSet(&decoder, &addr.epSet));
14!
5718
    if (taosArrayPush(pRsp->dnodeList, &addr) == NULL) {
28!
5719
      TAOS_CHECK_EXIT(terrno);
×
5720
    }
5721
  }
5722
  tEndDecode(&decoder);
14✔
5723

5724
_exit:
14✔
5725
  tDecoderClear(&decoder);
14✔
5726
  return code;
14✔
5727
}
5728

5729
void tFreeSDnodeListRsp(SDnodeListRsp *pRsp) { taosArrayDestroy(pRsp->dnodeList); }
7,648✔
5730

5731
int32_t tSerializeSCompactDbReq(void *buf, int32_t bufLen, SCompactDbReq *pReq) {
96✔
5732
  SEncoder encoder = {0};
96✔
5733
  int32_t  code = 0;
96✔
5734
  int32_t  lino;
5735
  int32_t  tlen;
5736
  tEncoderInit(&encoder, buf, bufLen);
96✔
5737

5738
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
96!
5739
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
192!
5740
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->timeRange.skey));
192!
5741
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->timeRange.ekey));
192!
5742
  ENCODESQL();
288!
5743

5744
  // encode vgroup list
5745
  int32_t numOfVgroups = taosArrayGetSize(pReq->vgroupIds);
96✔
5746
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfVgroups));
96!
5747
  if (numOfVgroups > 0) {
96!
5748
    for (int32_t i = 0; i < numOfVgroups; ++i) {
×
5749
      int64_t vgid = *(int64_t *)taosArrayGet(pReq->vgroupIds, i);
×
5750
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, vgid));
×
5751
    }
5752
  }
5753

5754
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->metaOnly));
192!
5755

5756
  tEndEncode(&encoder);
96✔
5757

5758
_exit:
96✔
5759
  if (code) {
96!
5760
    tlen = code;
×
5761
  } else {
5762
    tlen = encoder.pos;
96✔
5763
  }
5764
  tEncoderClear(&encoder);
96✔
5765
  return tlen;
96✔
5766
}
5767

5768
int32_t tDeserializeSCompactDbReq(void *buf, int32_t bufLen, SCompactDbReq *pReq) {
86✔
5769
  SDecoder decoder = {0};
86✔
5770
  int32_t  code = 0;
86✔
5771
  int32_t  lino;
5772
  tDecoderInit(&decoder, buf, bufLen);
86✔
5773

5774
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
86!
5775
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
86!
5776
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->timeRange.skey));
172!
5777
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->timeRange.ekey));
172!
5778
  DECODESQL();
258!
5779

5780
  // decode vgroup list
5781
  if (!tDecodeIsEnd(&decoder)) {
86!
5782
    int32_t numOfVgroups = 0;
86✔
5783
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfVgroups));
86!
5784
    if (numOfVgroups > 0) {
86✔
5785
      pReq->vgroupIds = taosArrayInit(numOfVgroups, sizeof(int64_t));
4✔
5786
      if (NULL == pReq->vgroupIds) {
4!
5787
        TAOS_CHECK_EXIT(terrno);
×
5788
      }
5789

5790
      for (int32_t i = 0; i < numOfVgroups; ++i) {
12✔
5791
        int64_t vgid;
5792
        TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &vgid));
8!
5793
        if (taosArrayPush(pReq->vgroupIds, &vgid) == NULL) {
16!
5794
          TAOS_CHECK_EXIT(terrno);
×
5795
        }
5796
      }
5797
    }
5798
  }
5799

5800
  if (!tDecodeIsEnd(&decoder)) {
86!
5801
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->metaOnly));
172!
5802
  } else {
5803
    pReq->metaOnly = false;
×
5804
  }
5805
  tEndDecode(&decoder);
86✔
5806

5807
_exit:
86✔
5808
  tDecoderClear(&decoder);
86✔
5809
  return code;
86✔
5810
}
5811

5812
void tFreeSCompactDbReq(SCompactDbReq *pReq) {
134✔
5813
  FREESQL();
134!
5814
  taosArrayDestroy(pReq->vgroupIds);
134✔
5815
  pReq->vgroupIds = NULL;
134✔
5816
}
134✔
5817

5818
int32_t tSerializeSCompactDbRsp(void *buf, int32_t bufLen, SCompactDbRsp *pRsp) {
112✔
5819
  SEncoder encoder = {0};
112✔
5820
  int32_t  code = 0;
112✔
5821
  int32_t  lino;
5822
  int32_t  tlen;
5823
  tEncoderInit(&encoder, buf, bufLen);
112✔
5824

5825
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
112!
5826
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->compactId));
224!
5827
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRsp->bAccepted));
224!
5828
  tEndEncode(&encoder);
112✔
5829

5830
_exit:
112✔
5831
  if (code) {
112!
5832
    tlen = code;
×
5833
  } else {
5834
    tlen = encoder.pos;
112✔
5835
  }
5836
  tEncoderClear(&encoder);
112✔
5837
  return tlen;
112✔
5838
}
5839

5840
int32_t tDeserializeSCompactDbRsp(void *buf, int32_t bufLen, SCompactDbRsp *pRsp) {
×
5841
  SDecoder decoder = {0};
×
5842
  int32_t  code = 0;
×
5843
  int32_t  lino;
5844
  tDecoderInit(&decoder, buf, bufLen);
×
5845

5846
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
5847
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->compactId));
×
5848
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pRsp->bAccepted));
×
5849
  tEndDecode(&decoder);
×
5850

5851
_exit:
×
5852
  tDecoderClear(&decoder);
×
5853
  return code;
×
5854
}
5855

5856
int32_t tSerializeSKillCompactReq(void *buf, int32_t bufLen, SKillCompactReq *pReq) {
×
5857
  SEncoder encoder = {0};
×
5858
  int32_t  code = 0;
×
5859
  int32_t  lino;
5860
  int32_t  tlen;
5861
  tEncoderInit(&encoder, buf, bufLen);
×
5862

5863
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
5864
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->compactId));
×
5865
  ENCODESQL();
×
5866

5867
  tEndEncode(&encoder);
×
5868

5869
_exit:
×
5870
  if (code) {
×
5871
    tlen = code;
×
5872
  } else {
5873
    tlen = encoder.pos;
×
5874
  }
5875
  tEncoderClear(&encoder);
×
5876
  return tlen;
×
5877
}
5878

5879
int32_t tDeserializeSKillCompactReq(void *buf, int32_t bufLen, SKillCompactReq *pReq) {
2✔
5880
  SDecoder decoder = {0};
2✔
5881
  int32_t  code = 0;
2✔
5882
  int32_t  lino;
5883
  tDecoderInit(&decoder, buf, bufLen);
2✔
5884

5885
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2!
5886
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->compactId));
4!
5887
  DECODESQL();
4!
5888

5889
  tEndDecode(&decoder);
2✔
5890

5891
_exit:
2✔
5892
  tDecoderClear(&decoder);
2✔
5893
  return code;
2✔
5894
}
5895

5896
void tFreeSKillCompactReq(SKillCompactReq *pReq) { FREESQL(); }
2!
5897

5898
int32_t tSerializeSUseDbRspImp(SEncoder *pEncoder, const SUseDbRsp *pRsp) {
7,297,536✔
5899
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pRsp->db));
14,595,072!
5900
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pRsp->uid));
14,595,072!
5901
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->vgVersion));
14,595,072!
5902
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->vgNum));
14,595,072!
5903
  TAOS_CHECK_RETURN(tEncodeI16(pEncoder, pRsp->hashPrefix));
14,595,072!
5904
  TAOS_CHECK_RETURN(tEncodeI16(pEncoder, pRsp->hashSuffix));
14,595,072!
5905
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->hashMethod));
14,595,072!
5906

5907
  for (int32_t i = 0; i < pRsp->vgNum; ++i) {
48,626,629✔
5908
    SVgroupInfo *pVgInfo = taosArrayGet(pRsp->pVgroupInfos, i);
41,329,851✔
5909
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pVgInfo->vgId));
82,583,172!
5910
    TAOS_CHECK_RETURN(tEncodeU32(pEncoder, pVgInfo->hashBegin));
82,583,172!
5911
    TAOS_CHECK_RETURN(tEncodeU32(pEncoder, pVgInfo->hashEnd));
82,583,172!
5912
    TAOS_CHECK_RETURN(tEncodeSEpSet(pEncoder, &pVgInfo->epSet));
41,291,586!
5913
    TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pVgInfo->numOfTable));
82,658,186!
5914
  }
5915

5916
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->errCode));
14,593,556!
5917
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pRsp->stateTs));
14,593,556!
5918
  TAOS_CHECK_RETURN(tEncodeU8(pEncoder, pRsp->flags));
14,593,556!
5919
  return 0;
7,296,778✔
5920
}
5921

5922
int32_t tSerializeSUseDbRsp(void *buf, int32_t bufLen, const SUseDbRsp *pRsp) {
7,290,672✔
5923
  SEncoder encoder = {0};
7,290,672✔
5924
  int32_t  code = 0;
7,290,672✔
5925
  int32_t  lino;
5926
  int32_t  tlen;
5927
  tEncoderInit(&encoder, buf, bufLen);
7,290,672✔
5928

5929
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
7,290,700!
5930
  TAOS_CHECK_EXIT(tSerializeSUseDbRspImp(&encoder, pRsp));
7,290,876!
5931
  tEndEncode(&encoder);
7,290,842✔
5932

5933
_exit:
7,290,792✔
5934
  if (code) {
7,290,792!
5935
    tlen = code;
×
5936
  } else {
5937
    tlen = encoder.pos;
7,290,792✔
5938
  }
5939
  tEncoderClear(&encoder);
7,290,792✔
5940
  return tlen;
7,290,758✔
5941
}
5942

5943
int32_t tSerializeSDbHbRspImp(SEncoder *pEncoder, const SDbHbRsp *pRsp) {
33,454✔
5944
  if (pRsp->useDbRsp) {
33,454✔
5945
    TAOS_CHECK_RETURN(tEncodeI8(pEncoder, 1));
6,670!
5946
    TAOS_CHECK_RETURN(tSerializeSUseDbRspImp(pEncoder, pRsp->useDbRsp));
6,670!
5947
  } else {
5948
    TAOS_CHECK_RETURN(tEncodeI8(pEncoder, 0));
26,784!
5949
  }
5950

5951
  if (pRsp->cfgRsp) {
33,454✔
5952
    TAOS_CHECK_RETURN(tEncodeI8(pEncoder, 1));
17,350!
5953
    TAOS_CHECK_RETURN(tSerializeSDbCfgRspImpl(pEncoder, pRsp->cfgRsp));
17,350!
5954
  } else {
5955
    TAOS_CHECK_RETURN(tEncodeI8(pEncoder, 0));
16,104!
5956
  }
5957

5958
  if (pRsp->pTsmaRsp) {
33,454✔
5959
    TAOS_CHECK_RETURN(tEncodeI8(pEncoder, 1));
29,304!
5960
    TAOS_CHECK_RETURN(tEncodeTableTSMAInfoRsp(pEncoder, pRsp->pTsmaRsp));
29,304!
5961
  } else {
5962
    TAOS_CHECK_RETURN(tEncodeI8(pEncoder, 0));
4,150!
5963
  }
5964
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->dbTsmaVersion));
66,908!
5965
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pRsp->db));
66,908!
5966
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pRsp->dbId));
66,908!
5967
  return 0;
33,454✔
5968
}
5969

5970
int32_t tSerializeSDbHbBatchRsp(void *buf, int32_t bufLen, SDbHbBatchRsp *pRsp) {
61,836✔
5971
  SEncoder encoder = {0};
61,836✔
5972
  int32_t  code = 0;
61,836✔
5973
  int32_t  lino;
5974
  int32_t  tlen;
5975
  tEncoderInit(&encoder, buf, bufLen);
61,836✔
5976

5977
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
61,836!
5978

5979
  int32_t numOfBatch = taosArrayGetSize(pRsp->pArray);
61,836✔
5980
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfBatch));
61,836!
5981
  for (int32_t i = 0; i < numOfBatch; ++i) {
95,290✔
5982
    SDbHbRsp *pDbRsp = taosArrayGet(pRsp->pArray, i);
33,454✔
5983
    TAOS_CHECK_EXIT(tSerializeSDbHbRspImp(&encoder, pDbRsp));
33,454!
5984
  }
5985
  tEndEncode(&encoder);
61,836✔
5986

5987
_exit:
61,836✔
5988
  if (code) {
61,836!
5989
    tlen = code;
×
5990
  } else {
5991
    tlen = encoder.pos;
61,836✔
5992
  }
5993
  tEncoderClear(&encoder);
61,836✔
5994
  return tlen;
61,836✔
5995
}
5996

5997
int32_t tDeserializeSUseDbRspImp(SDecoder *pDecoder, SUseDbRsp *pRsp) {
26,986✔
5998
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pRsp->db));
26,986!
5999
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pRsp->uid));
53,967!
6000
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->vgVersion));
53,965!
6001
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->vgNum));
53,966!
6002
  TAOS_CHECK_RETURN(tDecodeI16(pDecoder, &pRsp->hashPrefix));
53,965!
6003
  TAOS_CHECK_RETURN(tDecodeI16(pDecoder, &pRsp->hashSuffix));
53,963!
6004
  TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pRsp->hashMethod));
53,963!
6005

6006
  if (pRsp->vgNum > 0) {
26,981✔
6007
    pRsp->pVgroupInfos = taosArrayInit(pRsp->vgNum, sizeof(SVgroupInfo));
22,398✔
6008
    if (pRsp->pVgroupInfos == NULL) {
22,402!
6009
      TAOS_CHECK_RETURN(terrno);
×
6010
    }
6011

6012
    for (int32_t i = 0; i < pRsp->vgNum; ++i) {
167,978✔
6013
      SVgroupInfo vgInfo = {0};
145,571✔
6014
      TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &vgInfo.vgId));
145,602!
6015
      TAOS_CHECK_RETURN(tDecodeU32(pDecoder, &vgInfo.hashBegin));
145,584!
6016
      TAOS_CHECK_RETURN(tDecodeU32(pDecoder, &vgInfo.hashEnd));
145,567!
6017
      TAOS_CHECK_RETURN(tDecodeSEpSet(pDecoder, &vgInfo.epSet));
145,567!
6018
      TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &vgInfo.numOfTable));
145,563!
6019
      if (taosArrayPush(pRsp->pVgroupInfos, &vgInfo) == NULL) {
291,143!
6020
        TAOS_CHECK_RETURN(terrno);
×
6021
      }
6022
    }
6023
  }
6024

6025
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->errCode));
53,975!
6026
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pRsp->stateTs));
53,969!
6027
  if (!tDecodeIsEnd(pDecoder)) {
26,984✔
6028
    TAOS_CHECK_RETURN(tDecodeU8(pDecoder, &pRsp->flags));
53,963!
6029
  }
6030
  return 0;
26,981✔
6031
}
6032

6033
int32_t tDeserializeSUseDbRsp(void *buf, int32_t bufLen, SUseDbRsp *pRsp) {
26,592✔
6034
  SDecoder decoder = {0};
26,592✔
6035
  int32_t  code = 0;
26,592✔
6036
  int32_t  lino;
6037
  tDecoderInit(&decoder, buf, bufLen);
26,592✔
6038

6039
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
26,593✔
6040
  TAOS_CHECK_EXIT(tDeserializeSUseDbRspImp(&decoder, pRsp));
26,587!
6041
  tEndDecode(&decoder);
26,583✔
6042

6043
_exit:
26,592✔
6044
  tDecoderClear(&decoder);
26,592✔
6045
  return code;
26,592✔
6046
}
6047

6048
int32_t tDeserializeSDbHbRspImp(SDecoder *decoder, SDbHbRsp *pRsp) {
559✔
6049
  int8_t flag = 0;
559✔
6050
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &flag));
559!
6051
  if (flag) {
559✔
6052
    pRsp->useDbRsp = taosMemoryCalloc(1, sizeof(SUseDbRsp));
399!
6053
    if (NULL == pRsp->useDbRsp) {
399!
6054
      TAOS_CHECK_RETURN(terrno);
×
6055
    }
6056
    TAOS_CHECK_RETURN(tDeserializeSUseDbRspImp(decoder, pRsp->useDbRsp));
399!
6057
  }
6058
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &flag));
559!
6059
  if (flag) {
559✔
6060
    pRsp->cfgRsp = taosMemoryCalloc(1, sizeof(SDbCfgRsp));
129!
6061
    if (NULL == pRsp->cfgRsp) {
129!
6062
      TAOS_CHECK_RETURN(terrno);
×
6063
    }
6064
    TAOS_CHECK_RETURN(tDeserializeSDbCfgRspImpl(decoder, pRsp->cfgRsp));
129!
6065
  }
6066
  if (!tDecodeIsEnd(decoder)) {
559!
6067
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &flag));
559!
6068
    if (flag) {
559✔
6069
      pRsp->pTsmaRsp = taosMemoryCalloc(1, sizeof(STableTSMAInfoRsp));
371!
6070
      if (!pRsp->pTsmaRsp) {
371!
6071
        TAOS_CHECK_RETURN(terrno);
×
6072
      }
6073
      TAOS_CHECK_RETURN(tDecodeTableTSMAInfoRsp(decoder, pRsp->pTsmaRsp));
371!
6074
    }
6075
  }
6076
  if (!tDecodeIsEnd(decoder)) {
559!
6077
    TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->dbTsmaVersion));
1,118!
6078
  }
6079
  if (!tDecodeIsEnd(decoder)) {
559!
6080
    TAOS_CHECK_RETURN(tDecodeCStrTo(decoder, pRsp->db));
559!
6081
    TAOS_CHECK_RETURN(tDecodeI64(decoder, &pRsp->dbId));
1,118!
6082
  }
6083

6084
  return 0;
559✔
6085
}
6086

6087
int32_t tDeserializeSDbHbBatchRsp(void *buf, int32_t bufLen, SDbHbBatchRsp *pRsp) {
1,950✔
6088
  SDecoder decoder = {0};
1,950✔
6089
  int32_t  code = 0;
1,950✔
6090
  int32_t  lino;
6091
  tDecoderInit(&decoder, buf, bufLen);
1,950✔
6092

6093
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,950!
6094

6095
  int32_t numOfBatch = taosArrayGetSize(pRsp->pArray);
1,950✔
6096
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfBatch));
1,950!
6097

6098
  pRsp->pArray = taosArrayInit(numOfBatch, sizeof(SDbHbRsp));
1,950✔
6099
  if (pRsp->pArray == NULL) {
1,950!
6100
    TAOS_CHECK_EXIT(terrno);
×
6101
  }
6102

6103
  for (int32_t i = 0; i < numOfBatch; ++i) {
2,509✔
6104
    SDbHbRsp rsp = {0};
559✔
6105
    TAOS_CHECK_EXIT(tDeserializeSDbHbRspImp(&decoder, &rsp));
559!
6106

6107
    if (taosArrayPush(pRsp->pArray, &rsp) == NULL) {
1,118!
6108
      TAOS_CHECK_EXIT(terrno);
×
6109
    }
6110
  }
6111
  tEndDecode(&decoder);
1,950✔
6112

6113
_exit:
1,950✔
6114
  tDecoderClear(&decoder);
1,950✔
6115
  return code;
1,950✔
6116
}
6117

6118
void tFreeSUsedbRsp(SUseDbRsp *pRsp) { taosArrayDestroy(pRsp->pVgroupInfos); }
3,667,278✔
6119

6120
void tFreeSDbHbRsp(SDbHbRsp *pDbRsp) {
17,286✔
6121
  if (NULL == pDbRsp) {
17,286!
6122
    return;
×
6123
  }
6124

6125
  if (pDbRsp->useDbRsp) {
17,286✔
6126
    tFreeSUsedbRsp(pDbRsp->useDbRsp);
3,734✔
6127
    taosMemoryFree(pDbRsp->useDbRsp);
3,734!
6128
  }
6129

6130
  if (pDbRsp->cfgRsp) {
17,286✔
6131
    tFreeSDbCfgRsp(pDbRsp->cfgRsp);
8,675✔
6132
    taosMemoryFree(pDbRsp->cfgRsp);
8,675!
6133
  }
6134
  if (pDbRsp->pTsmaRsp) {
17,286✔
6135
    tFreeTableTSMAInfoRsp(pDbRsp->pTsmaRsp);
15,023✔
6136
    taosMemoryFree(pDbRsp->pTsmaRsp);
15,023!
6137
  }
6138
}
6139

6140
void tFreeSDbHbBatchRsp(SDbHbBatchRsp *pRsp) {
32,868✔
6141
  int32_t numOfBatch = taosArrayGetSize(pRsp->pArray);
32,868✔
6142
  for (int32_t i = 0; i < numOfBatch; ++i) {
50,154✔
6143
    SDbHbRsp *pDbRsp = taosArrayGet(pRsp->pArray, i);
17,286✔
6144
    tFreeSDbHbRsp(pDbRsp);
17,286✔
6145
  }
6146

6147
  taosArrayDestroy(pRsp->pArray);
32,868✔
6148
}
32,868✔
6149

6150
int32_t tSerializeSUserAuthBatchRsp(void *buf, int32_t bufLen, SUserAuthBatchRsp *pRsp) {
24,486✔
6151
  SEncoder encoder = {0};
24,486✔
6152
  int32_t  code = 0;
24,486✔
6153
  int32_t  lino;
6154
  int32_t  tlen;
6155
  tEncoderInit(&encoder, buf, bufLen);
24,486✔
6156

6157
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
24,486!
6158

6159
  int32_t numOfBatch = taosArrayGetSize(pRsp->pArray);
24,486✔
6160
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfBatch));
24,486!
6161
  for (int32_t i = 0; i < numOfBatch; ++i) {
49,108✔
6162
    SGetUserAuthRsp *pUserAuthRsp = taosArrayGet(pRsp->pArray, i);
24,622✔
6163
    TAOS_CHECK_EXIT(tSerializeSGetUserAuthRspImpl(&encoder, pUserAuthRsp));
24,622!
6164
  }
6165
  tEndEncode(&encoder);
24,486✔
6166

6167
_exit:
24,486✔
6168
  if (code) {
24,486!
6169
    tlen = code;
×
6170
  } else {
6171
    tlen = encoder.pos;
24,486✔
6172
  }
6173
  tEncoderClear(&encoder);
24,486✔
6174
  return tlen;
24,486✔
6175
}
6176

6177
int32_t tDeserializeSUserAuthBatchRsp(void *buf, int32_t bufLen, SUserAuthBatchRsp *pRsp) {
274✔
6178
  SDecoder decoder = {0};
274✔
6179
  int32_t  code = 0;
274✔
6180
  int32_t  lino;
6181
  tDecoderInit(&decoder, buf, bufLen);
274✔
6182

6183
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
274!
6184

6185
  int32_t numOfBatch = taosArrayGetSize(pRsp->pArray);
274✔
6186
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfBatch));
274!
6187

6188
  pRsp->pArray = taosArrayInit(numOfBatch, sizeof(SGetUserAuthRsp));
274✔
6189
  if (pRsp->pArray == NULL) {
274!
6190
    TAOS_CHECK_EXIT(terrno);
×
6191
  }
6192

6193
  for (int32_t i = 0; i < numOfBatch; ++i) {
612✔
6194
    SGetUserAuthRsp rsp = {0};
338✔
6195
    TAOS_CHECK_EXIT(tDeserializeSGetUserAuthRspImpl(&decoder, &rsp));
338!
6196
    if (taosArrayPush(pRsp->pArray, &rsp) == NULL) {
676!
6197
      TAOS_CHECK_EXIT(terrno);
×
6198
    }
6199
  }
6200
  tEndDecode(&decoder);
274✔
6201

6202
_exit:
274✔
6203
  tDecoderClear(&decoder);
274✔
6204
  return code;
274✔
6205
}
6206

6207
void tFreeSUserAuthBatchRsp(SUserAuthBatchRsp *pRsp) {
137,804✔
6208
  int32_t numOfBatch = taosArrayGetSize(pRsp->pArray);
137,804✔
6209
  for (int32_t i = 0; i < numOfBatch; ++i) {
150,116✔
6210
    SGetUserAuthRsp *pUserAuthRsp = taosArrayGet(pRsp->pArray, i);
12,311✔
6211
    tFreeSGetUserAuthRsp(pUserAuthRsp);
12,311✔
6212
  }
6213

6214
  taosArrayDestroy(pRsp->pArray);
137,805✔
6215
}
137,806✔
6216

6217
int32_t tSerializeSDbCfgReq(void *buf, int32_t bufLen, SDbCfgReq *pReq) {
3,884✔
6218
  SEncoder encoder = {0};
3,884✔
6219
  int32_t  code = 0;
3,884✔
6220
  int32_t  lino;
6221
  int32_t  tlen;
6222
  tEncoderInit(&encoder, buf, bufLen);
3,884✔
6223

6224
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
3,886!
6225
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
7,770!
6226
  tEndEncode(&encoder);
3,885✔
6227

6228
_exit:
3,885✔
6229
  if (code) {
3,885!
6230
    tlen = code;
×
6231
  } else {
6232
    tlen = encoder.pos;
3,885✔
6233
  }
6234
  tEncoderClear(&encoder);
3,885✔
6235
  return tlen;
3,885✔
6236
}
6237

6238
int32_t tDeserializeSDbCfgReq(void *buf, int32_t bufLen, SDbCfgReq *pReq) {
73,610✔
6239
  SDecoder decoder = {0};
73,610✔
6240
  int32_t  code = 0;
73,610✔
6241
  int32_t  lino;
6242
  tDecoderInit(&decoder, buf, bufLen);
73,610✔
6243

6244
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
73,610!
6245
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
73,610!
6246
  tEndDecode(&decoder);
73,610✔
6247

6248
_exit:
73,610✔
6249
  tDecoderClear(&decoder);
73,610✔
6250
  return code;
73,610✔
6251
}
6252

6253
int32_t tSerializeSTrimDbReq(void *buf, int32_t bufLen, STrimDbReq *pReq) {
48✔
6254
  SEncoder encoder = {0};
48✔
6255
  int32_t  code = 0;
48✔
6256
  int32_t  lino;
6257
  int32_t  tlen;
6258
  tEncoderInit(&encoder, buf, bufLen);
48✔
6259

6260
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
48!
6261
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
96!
6262
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->maxSpeed));
96!
6263
  tEndEncode(&encoder);
48✔
6264

6265
_exit:
48✔
6266
  if (code) {
48!
6267
    tlen = code;
×
6268
  } else {
6269
    tlen = encoder.pos;
48✔
6270
  }
6271
  tEncoderClear(&encoder);
48✔
6272
  return tlen;
48✔
6273
}
6274

6275
int32_t tDeserializeSTrimDbReq(void *buf, int32_t bufLen, STrimDbReq *pReq) {
21✔
6276
  SDecoder decoder = {0};
21✔
6277
  int32_t  code = 0;
21✔
6278
  int32_t  lino;
6279
  tDecoderInit(&decoder, buf, bufLen);
21✔
6280

6281
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
21!
6282
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
21!
6283
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->maxSpeed));
42!
6284
  tEndDecode(&decoder);
21✔
6285

6286
_exit:
21✔
6287
  tDecoderClear(&decoder);
21✔
6288
  return code;
21✔
6289
}
6290

6291
int32_t tSerializeSVTrimDbReq(void *buf, int32_t bufLen, SVTrimDbReq *pReq) {
150✔
6292
  SEncoder encoder = {0};
150✔
6293
  int32_t  code = 0;
150✔
6294
  int32_t  lino;
6295
  int32_t  tlen;
6296
  tEncoderInit(&encoder, buf, bufLen);
150✔
6297

6298
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
150!
6299
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->timestamp));
300!
6300
  tEndEncode(&encoder);
150✔
6301

6302
_exit:
150✔
6303
  if (code) {
150!
6304
    tlen = code;
×
6305
  } else {
6306
    tlen = encoder.pos;
150✔
6307
  }
6308
  tEncoderClear(&encoder);
150✔
6309
  return tlen;
150✔
6310
}
6311

6312
int32_t tDeserializeSVTrimDbReq(void *buf, int32_t bufLen, SVTrimDbReq *pReq) {
148✔
6313
  SDecoder decoder = {0};
148✔
6314
  int32_t  code = 0;
148✔
6315
  int32_t  lino;
6316
  tDecoderInit(&decoder, buf, bufLen);
148✔
6317

6318
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
148!
6319
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->timestamp));
296!
6320

6321
  tEndDecode(&decoder);
148✔
6322

6323
_exit:
148✔
6324
  tDecoderClear(&decoder);
148✔
6325
  return code;
148✔
6326
}
6327

6328
int32_t tSerializeSSsMigrateDbReq(void *buf, int32_t bufLen, SSsMigrateDbReq *pReq) {
×
6329
  SEncoder encoder = {0};
×
6330
  int32_t  code = 0;
×
6331
  int32_t  lino;
6332
  int32_t  tlen;
6333
  tEncoderInit(&encoder, buf, bufLen);
×
6334

6335
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6336
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
×
6337
  tEndEncode(&encoder);
×
6338

6339
_exit:
×
6340
  if (code) {
×
6341
    tlen = code;
×
6342
  } else {
6343
    tlen = encoder.pos;
×
6344
  }
6345
  tEncoderClear(&encoder);
×
6346
  return tlen;
×
6347
}
6348

6349
int32_t tDeserializeSSsMigrateDbReq(void *buf, int32_t bufLen, SSsMigrateDbReq *pReq) {
×
6350
  SDecoder decoder = {0};
×
6351
  int32_t  code = 0;
×
6352
  int32_t  lino;
6353
  tDecoderInit(&decoder, buf, bufLen);
×
6354

6355
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6356
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
×
6357
  tEndDecode(&decoder);
×
6358

6359
_exit:
×
6360
  tDecoderClear(&decoder);
×
6361
  return code;
×
6362
}
6363

6364
int32_t tSerializeSSsMigrateDbRsp(void *buf, int32_t bufLen, SSsMigrateDbRsp *pRsp) {
×
6365
  SEncoder encoder = {0};
×
6366
  int32_t  code = 0;
×
6367
  int32_t  lino;
6368
  int32_t  tlen;
6369
  tEncoderInit(&encoder, buf, bufLen);
×
6370

6371
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6372
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->ssMigrateId));
×
6373
  TAOS_CHECK_EXIT(tEncodeBool(&encoder, pRsp->bAccepted));
×
6374
  tEndEncode(&encoder);
×
6375

6376
_exit:
×
6377
  if (code) {
×
6378
    tlen = code;
×
6379
  } else {
6380
    tlen = encoder.pos;
×
6381
  }
6382
  tEncoderClear(&encoder);
×
6383
  return tlen;
×
6384
}
6385

6386
int32_t tDeserializeSSsMigrateDbRsp(void *buf, int32_t bufLen, SSsMigrateDbRsp *pRsp) {
×
6387
  SDecoder decoder = {0};
×
6388
  int32_t  code = 0;
×
6389
  int32_t  lino;
6390
  tDecoderInit(&decoder, buf, bufLen);
×
6391

6392
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6393
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->ssMigrateId));
×
6394
  TAOS_CHECK_EXIT(tDecodeBool(&decoder, &pRsp->bAccepted));
×
6395
  tEndDecode(&decoder);
×
6396

6397
_exit:
×
6398
  tDecoderClear(&decoder);
×
6399
  return code;
×
6400
}
6401

6402
// Request & Response serialization for TDMT_VND_LIST_SSMIGATE_FILESETS
6403
int32_t tSerializeSListSsMigrateFileSetsReq(void *buf, int32_t bufLen, SListSsMigrateFileSetsReq *pReq) {
×
6404
  SEncoder encoder = {0};
×
6405
  int32_t  code = 0;
×
6406
  int32_t  lino;
6407
  int32_t  tlen;
6408
  tEncoderInit(&encoder, buf, bufLen);
×
6409

6410
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6411
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssMigrateId));
×
6412
  tEndEncode(&encoder);
×
6413

6414
_exit:
×
6415
  if (code) {
×
6416
    tlen = code;
×
6417
  } else {
6418
    tlen = encoder.pos;
×
6419
  }
6420
  tEncoderClear(&encoder);
×
6421
  return tlen;
×
6422
}
6423

6424
int32_t tDeserializeSListSsMigrateFileSetsReq(void *buf, int32_t bufLen, SListSsMigrateFileSetsReq *pReq) {
×
6425
  SDecoder decoder = {0};
×
6426
  int32_t  code = 0;
×
6427
  int32_t  lino;
6428
  tDecoderInit(&decoder, buf, bufLen);
×
6429

6430
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6431
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssMigrateId));
×
6432
  tEndDecode(&decoder);
×
6433

6434
_exit:
×
6435
  tDecoderClear(&decoder);
×
6436
  return code;
×
6437
}
6438

6439
int32_t tSerializeSListSsMigrateFileSetsRsp(void* buf, int32_t bufLen, SListSsMigrateFileSetsRsp* pRsp) {
×
6440
  SEncoder encoder = {0};
×
6441
  int32_t  code = 0;
×
6442
  int32_t  lino;
6443
  int32_t  tlen;
6444
  tEncoderInit(&encoder, buf, bufLen);
×
6445

6446
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6447
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->ssMigrateId));
×
6448
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->vgId));
×
6449
  int32_t numFs = pRsp->pFileSets ? taosArrayGetSize(pRsp->pFileSets) : 0;
×
6450
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numFs));
×
6451
  for (int32_t i = 0; i < numFs; ++i) {
×
6452
    int32_t *fid = taosArrayGet(pRsp->pFileSets, i);
×
6453
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, *fid));
×
6454
  }
6455
  tEndEncode(&encoder);
×
6456

6457
_exit:
×
6458
  if (code) {
×
6459
    tlen = code;
×
6460
  } else {
6461
    tlen = encoder.pos;
×
6462
  }
6463
  tEncoderClear(&encoder);
×
6464
  return tlen;
×
6465
}
6466

6467
int32_t tDeserializeSListSsMigrateFileSetsRsp(void* buf, int32_t bufLen, SListSsMigrateFileSetsRsp* pRsp) {
×
6468
  SDecoder decoder = {0};
×
6469
  int32_t  code = 0, lino = 0;
×
6470
  int32_t numFs = 0;
×
6471
  tDecoderInit(&decoder, buf, bufLen);
×
6472

6473
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6474
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->ssMigrateId));
×
6475
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->vgId));
×
6476

6477
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numFs));
×
6478
  if (numFs > 0) {
×
6479
    pRsp->pFileSets = taosArrayInit(numFs, sizeof(int32_t));
×
6480
    if (pRsp->pFileSets == NULL) {
×
6481
      TAOS_CHECK_EXIT(terrno);
×
6482
    }
6483
  }
6484
  for (int32_t i = 0; i < numFs; ++i) {
×
6485
    int32_t fid = 0;
×
6486
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &fid));
×
6487
    if (taosArrayPush(pRsp->pFileSets, &fid) == NULL) {
×
6488
      TAOS_CHECK_EXIT(terrno);
×
6489
    }
6490
  }
6491

6492
  tEndDecode(&decoder);
×
6493

6494
_exit:
×
6495
  tDecoderClear(&decoder);
×
6496
  if (code != 0) {
×
6497
    taosArrayDestroy(pRsp->pFileSets);
×
6498
    pRsp->pFileSets = NULL;
×
6499
  }
6500
  return code;
×
6501
}
6502

6503
void tFreeSListSsMigrateFileSetsRsp(SListSsMigrateFileSetsRsp* pRsp) {
×
6504
  if (pRsp->pFileSets) {
×
6505
    taosArrayDestroy(pRsp->pFileSets);
×
6506
    pRsp->pFileSets = NULL;
×
6507
  }
6508
}
×
6509

6510

6511
// Request & Response serialization for TDMT_VND_SSMIGATE_FILESET
6512
int32_t tSerializeSSsMigrateFileSetReq(void* buf, int32_t bufLen, SSsMigrateFileSetReq* pReq) {
×
6513
  SEncoder encoder = {0};
×
6514
  int32_t  code = 0;
×
6515
  int32_t  lino;
6516
  int32_t  tlen;
6517
  tEncoderInit(&encoder, buf, bufLen);
×
6518

6519
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6520
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssMigrateId));
×
6521
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->nodeId));
×
6522
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->fid));
×
6523
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->startTimeSec));
×
6524
  tEndEncode(&encoder);
×
6525

6526
_exit:
×
6527
  if (code) {
×
6528
    tlen = code;
×
6529
  } else {
6530
    tlen = encoder.pos;
×
6531
  }
6532
  tEncoderClear(&encoder);
×
6533
  return tlen;
×
6534
}
6535

6536
int32_t tDeserializeSSsMigrateFileSetReq(void* buf, int32_t bufLen, SSsMigrateFileSetReq* pReq) {
×
6537
  SDecoder decoder = {0};
×
6538
  int32_t  code = 0;
×
6539
  int32_t  lino;
6540
  tDecoderInit(&decoder, buf, bufLen);
×
6541

6542
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6543
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssMigrateId));
×
6544
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->nodeId));
×
6545
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->fid));
×
6546
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->startTimeSec));
×
6547
  tEndDecode(&decoder);
×
6548

6549
_exit:
×
6550
  tDecoderClear(&decoder);
×
6551
  return code;
×
6552
}
6553

6554
int32_t tSerializeSSsMigrateFileSetRsp(void* buf, int32_t bufLen, SSsMigrateFileSetRsp* pRsp) {
×
6555
  SEncoder encoder = {0};
×
6556
  int32_t  code = 0;
×
6557
  int32_t  lino;
6558
  int32_t  tlen;
6559
  tEncoderInit(&encoder, buf, bufLen);
×
6560

6561
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6562
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->ssMigrateId));
×
6563
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->nodeId));
×
6564
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->vgId));
×
6565
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->fid));
×
6566
  tEndEncode(&encoder);
×
6567

6568
_exit:
×
6569
  if (code) {
×
6570
    tlen = code;
×
6571
  } else {
6572
    tlen = encoder.pos;
×
6573
  }
6574
  tEncoderClear(&encoder);
×
6575
  return tlen;
×
6576
}
6577

6578
int32_t tDeserializeSSsMigrateFileSetRsp(void* buf, int32_t bufLen, SSsMigrateFileSetRsp* pRsp) {
×
6579
  SDecoder decoder = {0};
×
6580
  int32_t  code = 0;
×
6581
  int32_t  lino;
6582
  tDecoderInit(&decoder, buf, bufLen);
×
6583

6584
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6585
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->ssMigrateId));
×
6586
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->nodeId));
×
6587
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->vgId));
×
6588
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->fid));
×
6589
  tEndDecode(&decoder);
×
6590

6591
_exit:
×
6592
  tDecoderClear(&decoder);
×
6593
  return code;
×
6594
}
6595

6596

6597
// Request and response serialization for TDMT_VND_QUERY_SSMIGRATE_PROGRESS and TDMT_VND_FOLLOWER_SSMIGRATE
6598
int tSerializeSSsMigrateProgress(void* buf, int32_t bufLen, SSsMigrateProgress* pProgress) {
×
6599
  SEncoder encoder = {0};
×
6600
  int32_t  code = 0;
×
6601
  int32_t  lino;
6602
  int32_t  tlen;
6603
  tEncoderInit(&encoder, buf, bufLen);
×
6604

6605
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6606
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pProgress->ssMigrateId));
×
6607
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pProgress->nodeId));
×
6608
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pProgress->vgId));
×
6609
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pProgress->fid));
×
6610
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pProgress->state));
×
6611
  tEndEncode(&encoder);
×
6612

6613
_exit:
×
6614
  if (code) {
×
6615
    tlen = code;
×
6616
  } else {
6617
    tlen = encoder.pos;
×
6618
  }
6619
  tEncoderClear(&encoder);
×
6620
  return tlen;
×
6621
}
6622

6623

6624
int tDeserializeSSsMigrateProgress(void* buf, int32_t bufLen, SSsMigrateProgress* pProgress) {
×
6625
  SDecoder decoder = {0};
×
6626
  int32_t  code = 0;
×
6627
  int32_t  lino;
6628
  tDecoderInit(&decoder, buf, bufLen);
×
6629

6630
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6631
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pProgress->ssMigrateId));
×
6632
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pProgress->nodeId));
×
6633
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pProgress->vgId));
×
6634
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pProgress->fid));
×
6635
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pProgress->state));
×
6636
  tEndDecode(&decoder);
×
6637

6638
_exit:
×
6639
  tDecoderClear(&decoder);
×
6640
  return code;
×
6641
}
6642

6643

6644
int32_t tSerializeSVDropTtlTableReq(void *buf, int32_t bufLen, SVDropTtlTableReq *pReq) {
73,924✔
6645
  SEncoder encoder = {0};
73,924✔
6646
  int32_t  code = 0;
73,924✔
6647
  int32_t  lino;
6648
  int32_t  tlen;
6649
  tEncoderInit(&encoder, buf, bufLen);
73,924✔
6650

6651
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
73,924!
6652
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->timestampSec));
147,848!
6653
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ttlDropMaxCount));
147,848!
6654
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->nUids));
147,848!
6655
  for (int32_t i = 0; i < pReq->nUids; ++i) {
74,174✔
6656
    tb_uid_t *pTbUid = taosArrayGet(pReq->pTbUids, i);
250✔
6657
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, *pTbUid));
500!
6658
  }
6659
  tEndEncode(&encoder);
73,924✔
6660

6661
_exit:
73,924✔
6662
  if (code) {
73,924!
6663
    tlen = code;
×
6664
  } else {
6665
    tlen = encoder.pos;
73,924✔
6666
  }
6667
  tEncoderClear(&encoder);
73,924✔
6668
  return tlen;
73,924✔
6669
}
6670

6671
int32_t tDeserializeSVDropTtlTableReq(void *buf, int32_t bufLen, SVDropTtlTableReq *pReq) {
66,547✔
6672
  SDecoder decoder = {0};
66,547✔
6673
  int32_t  code = 0;
66,547✔
6674
  int32_t  lino;
6675
  tDecoderInit(&decoder, buf, bufLen);
66,547✔
6676

6677
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
66,538!
6678
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->timestampSec));
133,546!
6679
  pReq->ttlDropMaxCount = INT32_MAX;
66,775✔
6680
  pReq->nUids = 0;
66,775✔
6681
  pReq->pTbUids = NULL;
66,775✔
6682
  if (!tDecodeIsEnd(&decoder)) {
66,775!
6683
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ttlDropMaxCount));
133,545!
6684
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->nUids));
133,468!
6685

6686
    if (pReq->nUids > 0) {
66,715✔
6687
      pReq->pTbUids = taosArrayInit(pReq->nUids, sizeof(tb_uid_t));
31✔
6688
      if (pReq->pTbUids == NULL) {
31!
6689
        TAOS_CHECK_EXIT(terrno);
47!
6690
      }
6691
    }
6692

6693
    tb_uid_t tbUid = 0;
66,668✔
6694
    for (int32_t i = 0; i < pReq->nUids; ++i) {
66,793✔
6695
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &tbUid));
125!
6696
      if (taosArrayPush(pReq->pTbUids, &tbUid) == NULL) {
250!
6697
        TAOS_CHECK_EXIT(terrno);
×
6698
      }
6699
    }
6700
  }
6701
  tEndDecode(&decoder);
66,651✔
6702

6703
_exit:
66,640✔
6704
  tDecoderClear(&decoder);
66,640✔
6705
  return code;
66,776✔
6706
}
6707

6708
int32_t tSerializeSDbCfgRspImpl(SEncoder *encoder, const SDbCfgRsp *pRsp) {
162,962✔
6709
  TAOS_CHECK_RETURN(tEncodeCStr(encoder, pRsp->db));
325,924!
6710
  TAOS_CHECK_RETURN(tEncodeI64(encoder, pRsp->dbId));
325,924!
6711
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->cfgVersion));
325,924!
6712
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->numOfVgroups));
325,924!
6713
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->numOfStables));
325,924!
6714
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->buffer));
325,924!
6715
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->cacheSize));
325,924!
6716
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->pageSize));
325,924!
6717
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->pages));
325,924!
6718
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->daysPerFile));
325,924!
6719
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->daysToKeep0));
325,924!
6720
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->daysToKeep1));
325,924!
6721
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->daysToKeep2));
325,924!
6722
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->minRows));
325,924!
6723
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->maxRows));
325,924!
6724
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->walFsyncPeriod));
325,924!
6725
  TAOS_CHECK_RETURN(tEncodeI16(encoder, pRsp->hashPrefix));
325,924!
6726
  TAOS_CHECK_RETURN(tEncodeI16(encoder, pRsp->hashSuffix));
325,924!
6727
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->walLevel));
325,924!
6728
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->precision));
325,924!
6729
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->compression));
325,924!
6730
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->replications));
325,924!
6731
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->strict));
325,924!
6732
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->cacheLast));
325,924!
6733
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->tsdbPageSize));
325,924!
6734
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->walRetentionPeriod));
325,924!
6735
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->walRollPeriod));
325,924!
6736
  TAOS_CHECK_RETURN(tEncodeI64(encoder, pRsp->walRetentionSize));
325,924!
6737
  TAOS_CHECK_RETURN(tEncodeI64(encoder, pRsp->walSegmentSize));
325,924!
6738
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->numOfRetensions));
325,924!
6739
  for (int32_t i = 0; i < pRsp->numOfRetensions; ++i) {
162,962!
6740
    SRetention *pRetension = taosArrayGet(pRsp->pRetensions, i);
×
6741
    TAOS_CHECK_RETURN(tEncodeI64(encoder, pRetension->freq));
×
6742
    TAOS_CHECK_RETURN(tEncodeI64(encoder, pRetension->keep));
×
6743
    TAOS_CHECK_RETURN(tEncodeI8(encoder, pRetension->freqUnit));
×
6744
    TAOS_CHECK_RETURN(tEncodeI8(encoder, pRetension->keepUnit));
×
6745
  }
6746
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->schemaless));
325,924!
6747
  TAOS_CHECK_RETURN(tEncodeI16(encoder, pRsp->sstTrigger));
325,924!
6748
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->keepTimeOffset));
325,924!
6749
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->withArbitrator));
325,924!
6750
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->encryptAlgorithm));
325,924!
6751
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->ssChunkSize));
325,924!
6752
  TAOS_CHECK_RETURN(tEncodeI32(encoder, pRsp->ssKeepLocal));
325,924!
6753
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->ssCompact));
325,924!
6754
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->hashMethod));
325,924!
6755
  TAOS_CHECK_RETURN(tEncodeI32v(encoder, pRsp->compactInterval));
325,924!
6756
  TAOS_CHECK_RETURN(tEncodeI32v(encoder, pRsp->compactStartTime));
325,924!
6757
  TAOS_CHECK_RETURN(tEncodeI32v(encoder, pRsp->compactEndTime));
325,924!
6758
  TAOS_CHECK_RETURN(tEncodeI8(encoder, pRsp->compactTimeOffset));
325,924!
6759
  TAOS_CHECK_RETURN(tEncodeU8(encoder, pRsp->flags));
325,924!
6760

6761
  return 0;
162,962✔
6762
}
6763

6764
int32_t tSerializeSDbCfgRsp(void *buf, int32_t bufLen, const SDbCfgRsp *pRsp) {
145,611✔
6765
  SEncoder encoder = {0};
145,611✔
6766
  int32_t  code = 0;
145,611✔
6767
  int32_t  lino;
6768
  int32_t  tlen;
6769
  tEncoderInit(&encoder, buf, bufLen);
145,611✔
6770

6771
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
145,612!
6772
  TAOS_CHECK_EXIT(tSerializeSDbCfgRspImpl(&encoder, pRsp));
145,612!
6773
  tEndEncode(&encoder);
145,611✔
6774

6775
_exit:
145,611✔
6776
  if (code) {
145,611!
6777
    tlen = code;
×
6778
  } else {
6779
    tlen = encoder.pos;
145,611✔
6780
  }
6781
  tEncoderClear(&encoder);
145,611✔
6782
  return tlen;
145,611✔
6783
}
6784

6785
int32_t tDeserializeSDbCfgRspImpl(SDecoder *decoder, SDbCfgRsp *pRsp) {
2,059✔
6786
  TAOS_CHECK_RETURN(tDecodeCStrTo(decoder, pRsp->db));
2,059!
6787
  TAOS_CHECK_RETURN(tDecodeI64(decoder, &pRsp->dbId));
4,120!
6788
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->cfgVersion));
4,119!
6789
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->numOfVgroups));
4,120!
6790
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->numOfStables));
4,122!
6791
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->buffer));
4,122!
6792
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->cacheSize));
4,122!
6793
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->pageSize));
4,121!
6794
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->pages));
4,121!
6795
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->daysPerFile));
4,122!
6796
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->daysToKeep0));
4,122!
6797
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->daysToKeep1));
4,122!
6798
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->daysToKeep2));
4,122!
6799
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->minRows));
4,122!
6800
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->maxRows));
4,122!
6801
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->walFsyncPeriod));
4,122!
6802
  TAOS_CHECK_RETURN(tDecodeI16(decoder, &pRsp->hashPrefix));
4,122!
6803
  TAOS_CHECK_RETURN(tDecodeI16(decoder, &pRsp->hashSuffix));
4,122!
6804
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->walLevel));
4,121!
6805
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->precision));
4,120!
6806
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->compression));
4,121!
6807
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->replications));
4,122!
6808
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->strict));
4,121!
6809
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->cacheLast));
4,121!
6810
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->tsdbPageSize));
4,120!
6811
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->walRetentionPeriod));
4,118!
6812
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->walRollPeriod));
4,119!
6813
  TAOS_CHECK_RETURN(tDecodeI64(decoder, &pRsp->walRetentionSize));
4,121!
6814
  TAOS_CHECK_RETURN(tDecodeI64(decoder, &pRsp->walSegmentSize));
4,122!
6815
  TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->numOfRetensions));
4,121!
6816
  if (pRsp->numOfRetensions > 0) {
2,060!
6817
    pRsp->pRetensions = taosArrayInit(pRsp->numOfRetensions, sizeof(SRetention));
×
6818
    if (pRsp->pRetensions == NULL) {
×
6819
      TAOS_CHECK_RETURN(terrno);
×
6820
    }
6821
  }
6822

6823
  for (int32_t i = 0; i < pRsp->numOfRetensions; ++i) {
2,059!
6824
    SRetention rentension = {0};
×
6825
    TAOS_CHECK_RETURN(tDecodeI64(decoder, &rentension.freq));
×
6826
    TAOS_CHECK_RETURN(tDecodeI64(decoder, &rentension.keep));
×
6827
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &rentension.freqUnit));
×
6828
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &rentension.keepUnit));
×
6829
    if (taosArrayPush(pRsp->pRetensions, &rentension) == NULL) {
×
6830
      TAOS_CHECK_RETURN(terrno);
×
6831
    }
6832
  }
6833
  TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->schemaless));
4,118!
6834
  TAOS_CHECK_RETURN(tDecodeI16(decoder, &pRsp->sstTrigger));
4,119!
6835
  if (!tDecodeIsEnd(decoder)) {
2,060!
6836
    TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->keepTimeOffset));
4,120!
6837
  } else {
6838
    pRsp->keepTimeOffset = TSDB_DEFAULT_KEEP_TIME_OFFSET;
×
6839
  }
6840
  if (!tDecodeIsEnd(decoder)) {
2,060!
6841
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->withArbitrator));
4,120!
6842
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->encryptAlgorithm));
4,120!
6843
    TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->ssChunkSize));
4,121!
6844
    TAOS_CHECK_RETURN(tDecodeI32(decoder, &pRsp->ssKeepLocal));
4,122!
6845
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->ssCompact));
4,122!
6846
  } else {
6847
    pRsp->withArbitrator = TSDB_DEFAULT_DB_WITH_ARBITRATOR;
×
6848
    pRsp->encryptAlgorithm = TSDB_DEFAULT_ENCRYPT_ALGO;
×
6849
    pRsp->ssChunkSize = TSDB_DEFAULT_SS_CHUNK_SIZE;
×
6850
    pRsp->ssKeepLocal = TSDB_DEFAULT_SS_KEEP_LOCAL;
×
6851
    pRsp->ssCompact = TSDB_DEFAULT_SS_COMPACT;
×
6852
  }
6853
  if (!tDecodeIsEnd(decoder)) {
2,061✔
6854
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->hashMethod));
4,121!
6855
  } else {
6856
    pRsp->hashMethod = 1;  // default value
1✔
6857
  }
6858
  if (!tDecodeIsEnd(decoder)) {
2,062✔
6859
    TAOS_CHECK_RETURN(tDecodeI32v(decoder, &pRsp->compactInterval));
4,121!
6860
    TAOS_CHECK_RETURN(tDecodeI32v(decoder, &pRsp->compactStartTime));
4,119!
6861
    TAOS_CHECK_RETURN(tDecodeI32v(decoder, &pRsp->compactEndTime));
4,119!
6862
    TAOS_CHECK_RETURN(tDecodeI8(decoder, &pRsp->compactTimeOffset));
4,120!
6863
  } else {
6864
    pRsp->compactInterval = TSDB_DEFAULT_COMPACT_INTERVAL;
1✔
6865
    pRsp->compactStartTime = TSDB_DEFAULT_COMPACT_START_TIME;
1✔
6866
    pRsp->compactEndTime = TSDB_DEFAULT_COMPACT_END_TIME;
1✔
6867
    pRsp->compactTimeOffset = TSDB_DEFAULT_COMPACT_TIME_OFFSET;
1✔
6868
  }
6869

6870
  if (!tDecodeIsEnd(decoder)) {
2,061✔
6871
    TAOS_CHECK_RETURN(tDecodeU8(decoder, &pRsp->flags));
4,119!
6872
  }
6873

6874
  return 0;
2,062✔
6875
}
6876

6877
int32_t tDeserializeSDbCfgRsp(void *buf, int32_t bufLen, SDbCfgRsp *pRsp) {
1,926✔
6878
  SDecoder decoder = {0};
1,926✔
6879
  int32_t  code = 0;
1,926✔
6880
  int32_t  lino;
6881
  tDecoderInit(&decoder, buf, bufLen);
1,926✔
6882

6883
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,932!
6884
  TAOS_CHECK_EXIT(tDeserializeSDbCfgRspImpl(&decoder, pRsp));
1,932!
6885
  tEndDecode(&decoder);
1,929✔
6886

6887
_exit:
1,929✔
6888
  tDecoderClear(&decoder);
1,929✔
6889
  return code;
1,932✔
6890
}
6891

6892
void tFreeSDbCfgRsp(SDbCfgRsp *pRsp) {
82,284✔
6893
  if (NULL == pRsp) {
82,284!
6894
    return;
×
6895
  }
6896

6897
  taosArrayDestroy(pRsp->pRetensions);
82,284✔
6898
}
6899

6900
int32_t tSerializeSUserIndexReq(void *buf, int32_t bufLen, SUserIndexReq *pReq) {
6✔
6901
  SEncoder encoder = {0};
6✔
6902
  int32_t  code = 0;
6✔
6903
  int32_t  lino;
6904
  int32_t  tlen;
6905
  tEncoderInit(&encoder, buf, bufLen);
6✔
6906

6907
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
6908
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->indexFName));
12!
6909
  tEndEncode(&encoder);
6✔
6910

6911
_exit:
6✔
6912
  if (code) {
6!
6913
    tlen = code;
×
6914
  } else {
6915
    tlen = encoder.pos;
6✔
6916
  }
6917
  tEncoderClear(&encoder);
6✔
6918
  return tlen;
6✔
6919
}
6920

6921
int32_t tDeserializeSUserIndexReq(void *buf, int32_t bufLen, SUserIndexReq *pReq) {
×
6922
  SDecoder decoder = {0};
×
6923
  int32_t  code = 0;
×
6924
  int32_t  lino;
6925
  tDecoderInit(&decoder, buf, bufLen);
×
6926

6927
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6928
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->indexFName));
×
6929
  tEndDecode(&decoder);
×
6930

6931
_exit:
×
6932
  tDecoderClear(&decoder);
×
6933
  return code;
×
6934
}
6935

6936
int32_t tSerializeSUserIndexRsp(void *buf, int32_t bufLen, const SUserIndexRsp *pRsp) {
×
6937
  SEncoder encoder = {0};
×
6938
  int32_t  code = 0;
×
6939
  int32_t  lino;
6940
  int32_t  tlen;
6941
  tEncoderInit(&encoder, buf, bufLen);
×
6942

6943
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
6944
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->dbFName));
×
6945
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->tblFName));
×
6946
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->colName));
×
6947
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->indexType));
×
6948
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->indexExts));
×
6949
  tEndEncode(&encoder);
×
6950

6951
_exit:
×
6952
  if (code) {
×
6953
    tlen = code;
×
6954
  } else {
6955
    tlen = encoder.pos;
×
6956
  }
6957
  tEncoderClear(&encoder);
×
6958
  return tlen;
×
6959
}
6960

6961
int32_t tDeserializeSUserIndexRsp(void *buf, int32_t bufLen, SUserIndexRsp *pRsp) {
×
6962
  SDecoder decoder = {0};
×
6963
  int32_t  code = 0;
×
6964
  int32_t  lino;
6965
  tDecoderInit(&decoder, buf, bufLen);
×
6966

6967
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
6968
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->dbFName));
×
6969
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->tblFName));
×
6970
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->colName));
×
6971
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->indexType));
×
6972
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->indexExts));
×
6973
  tEndDecode(&decoder);
×
6974

6975
_exit:
×
6976
  tDecoderClear(&decoder);
×
6977
  return code;
×
6978
}
6979

6980
int32_t tSerializeSTableIndexReq(void *buf, int32_t bufLen, STableIndexReq *pReq) {
6✔
6981
  SEncoder encoder = {0};
6✔
6982
  int32_t  code = 0;
6✔
6983
  int32_t  lino;
6984
  int32_t  tlen;
6985
  tEncoderInit(&encoder, buf, bufLen);
6✔
6986

6987
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
6988
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->tbFName));
12!
6989
  tEndEncode(&encoder);
6✔
6990

6991
_exit:
6✔
6992
  if (code) {
6!
6993
    tlen = code;
×
6994
  } else {
6995
    tlen = encoder.pos;
6✔
6996
  }
6997
  tEncoderClear(&encoder);
6✔
6998
  return tlen;
6✔
6999
}
7000

7001
int32_t tDeserializeSTableIndexReq(void *buf, int32_t bufLen, STableIndexReq *pReq) {
×
7002
  SDecoder decoder = {0};
×
7003
  int32_t  code = 0;
×
7004
  int32_t  lino;
7005
  tDecoderInit(&decoder, buf, bufLen);
×
7006

7007
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
7008
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->tbFName));
×
7009
  tEndDecode(&decoder);
×
7010

7011
_exit:
×
7012
  tDecoderClear(&decoder);
×
7013
  return code;
×
7014
}
7015

7016
int32_t tSerializeSTableIndexInfo(SEncoder *pEncoder, STableIndexInfo *pInfo) {
18✔
7017
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pInfo->intervalUnit));
36!
7018
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pInfo->slidingUnit));
36!
7019
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pInfo->interval));
36!
7020
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pInfo->offset));
36!
7021
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pInfo->sliding));
36!
7022
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pInfo->dstTbUid));
36!
7023
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pInfo->dstVgId));
36!
7024
  TAOS_CHECK_RETURN(tEncodeSEpSet(pEncoder, &pInfo->epSet));
18!
7025
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pInfo->expr));
36!
7026
  return 0;
18✔
7027
}
7028

7029
int32_t tSerializeSTableIndexRsp(void *buf, int32_t bufLen, const STableIndexRsp *pRsp) {
6✔
7030
  SEncoder encoder = {0};
6✔
7031
  int32_t  code = 0;
6✔
7032
  int32_t  lino;
7033
  int32_t  tlen;
7034
  tEncoderInit(&encoder, buf, bufLen);
6✔
7035

7036
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
7037
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->tbName));
12!
7038
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->dbFName));
12!
7039
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pRsp->suid));
12!
7040
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->version));
12!
7041
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->indexSize));
12!
7042
  int32_t num = taosArrayGetSize(pRsp->pIndex);
6✔
7043
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
6!
7044
  if (num > 0) {
6!
7045
    for (int32_t i = 0; i < num; ++i) {
24✔
7046
      STableIndexInfo *pInfo = (STableIndexInfo *)taosArrayGet(pRsp->pIndex, i);
18✔
7047
      TAOS_CHECK_EXIT(tSerializeSTableIndexInfo(&encoder, pInfo));
18!
7048
    }
7049
  }
7050
  tEndEncode(&encoder);
6✔
7051

7052
_exit:
6✔
7053
  if (code) {
6!
7054
    tlen = code;
×
7055
  } else {
7056
    tlen = encoder.pos;
6✔
7057
  }
7058
  tEncoderClear(&encoder);
6✔
7059
  return tlen;
6✔
7060
}
7061

7062
void tFreeSerializeSTableIndexRsp(STableIndexRsp *pRsp) {
×
7063
  if (pRsp->pIndex != NULL) {
×
7064
    tFreeSTableIndexRsp(pRsp);
×
7065
    pRsp->pIndex = NULL;
×
7066
  }
7067
}
×
7068

7069
int32_t tDeserializeSTableIndexInfo(SDecoder *pDecoder, STableIndexInfo *pInfo) {
9✔
7070
  TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pInfo->intervalUnit));
18!
7071
  TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pInfo->slidingUnit));
18!
7072
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pInfo->interval));
18!
7073
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pInfo->offset));
18!
7074
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pInfo->sliding));
18!
7075
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pInfo->dstTbUid));
18!
7076
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pInfo->dstVgId));
18!
7077
  TAOS_CHECK_RETURN(tDecodeSEpSet(pDecoder, &pInfo->epSet));
9!
7078
  TAOS_CHECK_RETURN(tDecodeCStrAlloc(pDecoder, &pInfo->expr));
18!
7079
  return 0;
9✔
7080
}
7081

7082
int32_t tDeserializeSTableIndexRsp(void *buf, int32_t bufLen, STableIndexRsp *pRsp) {
3✔
7083
  SDecoder decoder = {0};
3✔
7084
  int32_t  code = 0;
3✔
7085
  int32_t  lino;
7086
  tDecoderInit(&decoder, buf, bufLen);
3✔
7087

7088
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3!
7089
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->tbName));
3!
7090
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->dbFName));
3!
7091
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pRsp->suid));
6!
7092
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->version));
6!
7093
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->indexSize));
6!
7094
  int32_t num = 0;
3✔
7095
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
3!
7096
  if (num > 0) {
3!
7097
    pRsp->pIndex = taosArrayInit(num, sizeof(STableIndexInfo));
3✔
7098
    if (NULL == pRsp->pIndex) {
3!
7099
      TAOS_CHECK_EXIT(terrno);
×
7100
    }
7101
    STableIndexInfo info;
7102
    for (int32_t i = 0; i < num; ++i) {
12✔
7103
      TAOS_CHECK_EXIT(tDeserializeSTableIndexInfo(&decoder, &info));
9!
7104
      if (NULL == taosArrayPush(pRsp->pIndex, &info)) {
18!
7105
        taosMemoryFree(info.expr);
×
7106
        TAOS_CHECK_EXIT(terrno);
×
7107
      }
7108
    }
7109
  }
7110
  tEndDecode(&decoder);
3✔
7111

7112
_exit:
3✔
7113
  tDecoderClear(&decoder);
3✔
7114
  return code;
3✔
7115
}
7116

7117
void tFreeSTableIndexInfo(void *info) {
27✔
7118
  if (NULL == info) {
27!
7119
    return;
×
7120
  }
7121

7122
  STableIndexInfo *pInfo = (STableIndexInfo *)info;
27✔
7123

7124
  taosMemoryFree(pInfo->expr);
27!
7125
}
7126

7127
int32_t tSerializeSShowVariablesReq(void *buf, int32_t bufLen, SShowVariablesReq *pReq) {
232✔
7128
  SEncoder encoder = {0};
232✔
7129
  int32_t  code = 0;
232✔
7130
  int32_t  lino;
7131
  int32_t  tlen;
7132
  tEncoderInit(&encoder, buf, bufLen);
232✔
7133

7134
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
232!
7135
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->opType));
464!
7136
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->valLen));
464!
7137
  if (pReq->valLen > 0) {
232!
7138
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)pReq->val, pReq->valLen));
×
7139
  }
7140
  tEndEncode(&encoder);
232✔
7141

7142
_exit:
232✔
7143
  if (code) {
232!
7144
    tlen = code;
×
7145
  } else {
7146
    tlen = encoder.pos;
232✔
7147
  }
7148
  tEncoderClear(&encoder);
232✔
7149
  return tlen;
232✔
7150
}
7151

7152
int32_t tDeserializeSShowVariablesReq(void *buf, int32_t bufLen, SShowVariablesReq *pReq) {
142✔
7153
  SDecoder decoder = {0};
142✔
7154
  int32_t  code = 0;
142✔
7155
  int32_t  lino;
7156
  tDecoderInit(&decoder, buf, bufLen);
142✔
7157

7158
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
142!
7159
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->opType));
284!
7160
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->valLen));
284!
7161

7162
  if (pReq->valLen > 0) {
142✔
7163
    pReq->val = taosMemoryCalloc(1, pReq->valLen + 1);
21!
7164
    if (pReq->val == NULL) {
21!
7165
      TAOS_CHECK_EXIT(terrno);
×
7166
    }
7167
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->val));
21!
7168
  }
7169

7170
  tEndDecode(&decoder);
142✔
7171
_exit:
142✔
7172
  tDecoderClear(&decoder);
142✔
7173
  return code;
142✔
7174
}
7175

7176
void tFreeSShowVariablesReq(SShowVariablesReq *pReq) {
258✔
7177
  if (NULL != pReq && NULL != pReq->val) {
258!
7178
    taosMemoryFree(pReq->val);
21!
7179
    pReq->val = NULL;
21✔
7180
  }
7181
}
258✔
7182

7183
int32_t tEncodeSVariablesInfo(SEncoder *pEncoder, SVariablesInfo *pInfo) {
23,096✔
7184
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pInfo->name));
46,192!
7185
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pInfo->value));
46,192!
7186
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pInfo->scope));
46,192!
7187
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pInfo->category));
46,192!
7188
  return 0;
23,096✔
7189
}
7190

7191
int32_t tDecodeSVariablesInfo(SDecoder *pDecoder, SVariablesInfo *pInfo) {
9,880✔
7192
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pInfo->name));
9,880!
7193
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pInfo->value));
9,880!
7194
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pInfo->scope));
9,880!
7195
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pInfo->category));
9,880!
7196
  return 0;
9,880✔
7197
}
7198

7199
int32_t tSerializeSShowVariablesRsp(void *buf, int32_t bufLen, SShowVariablesRsp *pRsp) {
284✔
7200
  SEncoder encoder = {0};
284✔
7201
  int32_t  code = 0;
284✔
7202
  int32_t  lino;
7203
  int32_t  tlen;
7204
  tEncoderInit(&encoder, buf, bufLen);
284✔
7205

7206
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
284!
7207
  int32_t varNum = taosArrayGetSize(pRsp->variables);
284✔
7208
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, varNum));
284!
7209
  for (int32_t i = 0; i < varNum; ++i) {
23,380✔
7210
    SVariablesInfo *pInfo = taosArrayGet(pRsp->variables, i);
23,096✔
7211
    TAOS_CHECK_EXIT(tEncodeSVariablesInfo(&encoder, pInfo));
23,096!
7212
  }
7213

7214
  for (int32_t i = 0; i < varNum; ++i) {
23,380✔
7215
    SVariablesInfo *pInfo = taosArrayGet(pRsp->variables, i);
23,096✔
7216
    TAOS_CHECK_RETURN(tEncodeCStr(&encoder, pInfo->info));
46,192!
7217
  }
7218

7219
  tEndEncode(&encoder);
284✔
7220

7221
_exit:
284✔
7222
  if (code) {
284!
7223
    tlen = code;
×
7224
  } else {
7225
    tlen = encoder.pos;
284✔
7226
  }
7227
  tEncoderClear(&encoder);
284✔
7228
  return tlen;
284✔
7229
}
7230

7231
int32_t tDeserializeSShowVariablesRsp(void *buf, int32_t bufLen, SShowVariablesRsp *pRsp) {
104✔
7232
  SDecoder decoder = {0};
104✔
7233
  int32_t  code = 0;
104✔
7234
  int32_t  lino;
7235
  tDecoderInit(&decoder, buf, bufLen);
104✔
7236

7237
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
104!
7238
  int32_t varNum = 0;
104✔
7239
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &varNum));
104!
7240
  if (varNum > 0) {
104!
7241
    pRsp->variables = taosArrayInit(varNum, sizeof(SVariablesInfo));
104✔
7242
    if (NULL == pRsp->variables) {
104!
7243
      TAOS_CHECK_EXIT(terrno);
×
7244
    }
7245
    for (int32_t i = 0; i < varNum; ++i) {
9,984✔
7246
      SVariablesInfo info = {0};
9,880✔
7247
      TAOS_CHECK_EXIT(tDecodeSVariablesInfo(&decoder, &info));
9,880!
7248
      if (NULL == taosArrayPush(pRsp->variables, &info)) {
19,760!
7249
        TAOS_CHECK_EXIT(terrno);
×
7250
      }
7251
    }
7252

7253
    if (!tDecodeIsEnd(&decoder)) {
104!
7254
      for (int32_t i = 0; i < varNum; ++i) {
9,984✔
7255
        SVariablesInfo *pInfo = taosArrayGet(pRsp->variables, i);
9,880✔
7256
        TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pInfo->info));
9,880!
7257
      }
7258
    }
7259
  }
7260

7261
  tEndDecode(&decoder);
104✔
7262
_exit:
104✔
7263
  tDecoderClear(&decoder);
104✔
7264
  return code;
104✔
7265
}
7266

7267
void tFreeSShowVariablesRsp(SShowVariablesRsp *pRsp) {
246✔
7268
  if (NULL == pRsp) {
246!
7269
    return;
×
7270
  }
7271

7272
  taosArrayDestroy(pRsp->variables);
246✔
7273
}
7274

7275
int32_t tSerializeSShowReq(void *buf, int32_t bufLen, SShowReq *pReq) {
12✔
7276
  SEncoder encoder = {0};
12✔
7277
  int32_t  code = 0;
12✔
7278
  int32_t  lino;
7279
  int32_t  tlen;
7280
  tEncoderInit(&encoder, buf, bufLen);
12✔
7281

7282
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
12!
7283
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->type));
24!
7284
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
24!
7285
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->payloadLen));
24!
7286
  if (pReq->payloadLen > 0) {
12!
7287
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->payload, pReq->payloadLen));
×
7288
  }
7289
  tEndEncode(&encoder);
12✔
7290

7291
_exit:
12✔
7292
  if (code) {
12!
7293
    tlen = code;
×
7294
  } else {
7295
    tlen = encoder.pos;
12✔
7296
  }
7297
  tEncoderClear(&encoder);
12✔
7298
  return tlen;
12✔
7299
}
7300

7301
void tFreeSShowReq(SShowReq *pReq) { taosMemoryFreeClear(pReq->payload); }
6!
7302

7303
int32_t tSerializeSRetrieveTableReq(void *buf, int32_t bufLen, SRetrieveTableReq *pReq) {
472,865✔
7304
  SEncoder encoder = {0};
472,865✔
7305
  int32_t  code = 0;
472,865✔
7306
  int32_t  lino;
7307
  int32_t  tlen;
7308
  tEncoderInit(&encoder, buf, bufLen);
472,865✔
7309

7310
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
472,995!
7311
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->showId));
946,192!
7312
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
946,192!
7313
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->tb));
946,192!
7314
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->filterTb));
946,192!
7315
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->user));
946,192!
7316
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->compactId));
946,192!
7317
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->withFull));
946,192!
7318
  tEndEncode(&encoder);
473,096✔
7319

7320
_exit:
472,802✔
7321
  if (code) {
472,802!
7322
    tlen = code;
×
7323
  } else {
7324
    tlen = encoder.pos;
472,802✔
7325
  }
7326
  tEncoderClear(&encoder);
472,802✔
7327
  return tlen;
472,542✔
7328
}
7329

7330
int32_t tDeserializeSRetrieveTableReq(void *buf, int32_t bufLen, SRetrieveTableReq *pReq) {
236,965✔
7331
  SDecoder decoder = {0};
236,965✔
7332
  int32_t  code = 0;
236,965✔
7333
  int32_t  lino;
7334

7335
  tDecoderInit(&decoder, buf, bufLen);
236,965✔
7336

7337
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
236,984!
7338
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->showId));
474,136!
7339
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
237,057!
7340
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->tb));
237,029!
7341
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->filterTb));
237,047✔
7342
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->user));
237,046!
7343
  if (!tDecodeIsEnd(&decoder)) {
236,979!
7344
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->compactId));
474,031!
7345
  } else {
7346
    pReq->compactId = -1;
×
7347
  }
7348
  if (!tDecodeIsEnd(&decoder)) {
236,986!
7349
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, (int8_t *)&pReq->withFull));
474,004!
7350
  }
7351
  tEndDecode(&decoder);
236,960✔
7352
_exit:
236,913✔
7353
  tDecoderClear(&decoder);
236,913✔
7354
  return code;
237,009✔
7355
}
7356

7357
static int32_t tEncodeSTableMetaRsp(SEncoder *pEncoder, STableMetaRsp *pRsp) {
9,130,080✔
7358
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pRsp->tbName));
18,260,160!
7359
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pRsp->stbName));
18,260,160!
7360
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pRsp->dbFName));
18,260,160!
7361
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pRsp->dbId));
18,260,160!
7362
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->numOfTags));
18,260,160!
7363
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->numOfColumns));
18,260,160!
7364
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->precision));
18,260,160!
7365
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->tableType));
18,260,160!
7366
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->sversion));
18,260,160!
7367
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->tversion));
18,260,160!
7368
  TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pRsp->suid));
18,260,160!
7369
  TAOS_CHECK_RETURN(tEncodeU64(pEncoder, pRsp->tuid));
18,260,160!
7370
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->vgId));
18,260,160!
7371
  for (int32_t i = 0; i < pRsp->numOfColumns + pRsp->numOfTags; ++i) {
337,625,882✔
7372
    SSchema *pSchema = &pRsp->pSchemas[i];
328,495,802✔
7373
    TAOS_CHECK_RETURN(tEncodeSSchema(pEncoder, pSchema));
328,495,802!
7374
  }
7375

7376
  if (withExtSchema(pRsp->tableType)) {
9,130,080✔
7377
    for (int32_t i = 0; i < pRsp->numOfColumns; ++i) {
212,538,709✔
7378
      SSchemaExt *pSchemaExt = &pRsp->pSchemaExt[i];
203,954,987✔
7379
      TAOS_CHECK_RETURN(tEncodeSSchemaExt(pEncoder, pSchemaExt));
203,954,987!
7380
    }
7381
  }
7382

7383
  TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pRsp->virtualStb));
18,262,842!
7384
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->numOfColRefs));
18,262,842!
7385
  if (hasRefCol(pRsp->tableType)) {
9,131,421✔
7386
    for (int32_t i = 0; i < pRsp->numOfColRefs; ++i) {
18,518✔
7387
      SColRef *pColRef = &pRsp->pColRefs[i];
16,614✔
7388
      TAOS_CHECK_RETURN(tEncodeSColRef(pEncoder, pColRef));
16,614!
7389
    }
7390
  }
7391
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pRsp->rversion));
18,261,990!
7392

7393
  return 0;
9,130,995✔
7394
}
7395

7396
static int32_t tDecodeSTableMetaRsp(SDecoder *pDecoder, STableMetaRsp *pRsp) {
112,502✔
7397
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pRsp->tbName));
112,502!
7398
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pRsp->stbName));
112,518!
7399
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pRsp->dbFName));
112,512!
7400
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pRsp->dbId));
225,027!
7401
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->numOfTags));
225,009!
7402
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->numOfColumns));
224,987!
7403
  TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pRsp->precision));
224,970!
7404
  TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pRsp->tableType));
224,958!
7405
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->sversion));
224,957!
7406
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->tversion));
224,951!
7407
  TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pRsp->suid));
224,926!
7408
  TAOS_CHECK_RETURN(tDecodeU64(pDecoder, &pRsp->tuid));
224,926!
7409
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->vgId));
224,928!
7410

7411
  int32_t totalCols = pRsp->numOfTags + pRsp->numOfColumns;
112,460✔
7412
  if (totalCols > 0) {
112,460✔
7413
    pRsp->pSchemas = taosMemoryMalloc(sizeof(SSchema) * totalCols);
50,262!
7414
    if (pRsp->pSchemas == NULL) {
50,264!
7415
      TAOS_CHECK_RETURN(terrno);
×
7416
    }
7417

7418
    for (int32_t i = 0; i < totalCols; ++i) {
669,159✔
7419
      SSchema *pSchema = &pRsp->pSchemas[i];
618,902✔
7420
      TAOS_CHECK_RETURN(tDecodeSSchema(pDecoder, pSchema));
618,895!
7421
    }
7422
  } else {
7423
    pRsp->pSchemas = NULL;
62,198✔
7424
  }
7425

7426
  if (!tDecodeIsEnd(pDecoder)) {
112,455✔
7427
    if (withExtSchema(pRsp->tableType) && pRsp->numOfColumns > 0) {
112,452✔
7428
      pRsp->pSchemaExt = taosMemoryMalloc(sizeof(SSchemaExt) * pRsp->numOfColumns);
48,476!
7429
      if (pRsp->pSchemaExt == NULL) {
48,476!
7430
        TAOS_CHECK_RETURN(terrno);
×
7431
      }
7432

7433
      for (int32_t i = 0; i < pRsp->numOfColumns; ++i) {
463,472✔
7434
        SSchemaExt *pSchemaExt = &pRsp->pSchemaExt[i];
415,005✔
7435
        TAOS_CHECK_RETURN(tDecodeSSchemaExt(pDecoder, pSchemaExt));
414,996!
7436
      }
7437
    } else {
7438
      pRsp->pSchemaExt = NULL;
63,995✔
7439
    }
7440
  }
7441
  if (!tDecodeIsEnd(pDecoder)) {
112,465✔
7442
    TAOS_CHECK_RETURN(tDecodeI8(pDecoder, &pRsp->virtualStb));
224,924!
7443
    TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->numOfColRefs));
224,922!
7444
    if (hasRefCol(pRsp->tableType) && pRsp->numOfColRefs > 0) {
112,457!
7445
      pRsp->pColRefs = taosMemoryMalloc(sizeof(SColRef) * pRsp->numOfColRefs);
481!
7446
      if (pRsp->pColRefs == NULL) {
481!
7447
        TAOS_CHECK_RETURN(terrno);
×
7448
      }
7449

7450
      for (int32_t i = 0; i < pRsp->numOfColRefs; ++i) {
5,091✔
7451
        SColRef *pColRef = &pRsp->pColRefs[i];
4,610✔
7452
        TAOS_CHECK_RETURN(tDecodeSColRef(pDecoder, pColRef));
4,610!
7453
      }
7454
    } else {
7455
      pRsp->pColRefs = NULL;
111,989✔
7456
    }
7457
  }
7458
  if (!tDecodeIsEnd(pDecoder)) {
112,476✔
7459
    TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pRsp->rversion));
224,923!
7460
  }
7461

7462
  return 0;
112,489✔
7463
}
7464

7465
int32_t tSerializeSTableMetaRsp(void *buf, int32_t bufLen, STableMetaRsp *pRsp) {
8,736,147✔
7466
  SEncoder encoder = {0};
8,736,147✔
7467
  int32_t  code = 0;
8,736,147✔
7468
  int32_t  lino;
7469
  int32_t  tlen;
7470
  tEncoderInit(&encoder, buf, bufLen);
8,736,147✔
7471

7472
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
8,736,595!
7473
  TAOS_CHECK_EXIT(tEncodeSTableMetaRsp(&encoder, pRsp));
8,738,195!
7474
  tEndEncode(&encoder);
8,737,347✔
7475

7476
_exit:
8,737,121✔
7477
  if (code) {
8,737,121!
7478
    tlen = code;
×
7479
  } else {
7480
    tlen = encoder.pos;
8,737,121✔
7481
  }
7482
  tEncoderClear(&encoder);
8,737,121✔
7483
  return tlen;
8,736,867✔
7484
}
7485

7486
int32_t tSerializeSSTbHbRsp(void *buf, int32_t bufLen, SSTbHbRsp *pRsp) {
53,857✔
7487
  SEncoder encoder = {0};
53,857✔
7488
  int32_t  code = 0;
53,857✔
7489
  int32_t  lino;
7490
  int32_t  tlen;
7491

7492
  tEncoderInit(&encoder, buf, bufLen);
53,857✔
7493

7494
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
53,858!
7495

7496
  int32_t numOfMeta = taosArrayGetSize(pRsp->pMetaRsp);
53,857✔
7497
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfMeta));
53,857!
7498
  for (int32_t i = 0; i < numOfMeta; ++i) {
54,765✔
7499
    STableMetaRsp *pMetaRsp = taosArrayGet(pRsp->pMetaRsp, i);
908✔
7500
    TAOS_CHECK_EXIT(tEncodeSTableMetaRsp(&encoder, pMetaRsp));
908!
7501
  }
7502

7503
  int32_t numOfIndex = taosArrayGetSize(pRsp->pIndexRsp);
53,857✔
7504
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfIndex));
53,858!
7505
  for (int32_t i = 0; i < numOfIndex; ++i) {
53,858!
7506
    STableIndexRsp *pIndexRsp = taosArrayGet(pRsp->pIndexRsp, i);
×
7507
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pIndexRsp->tbName));
×
7508
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pIndexRsp->dbFName));
×
7509
    TAOS_CHECK_EXIT(tEncodeU64(&encoder, pIndexRsp->suid));
×
7510
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pIndexRsp->version));
×
7511
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pIndexRsp->indexSize));
×
7512
    int32_t num = taosArrayGetSize(pIndexRsp->pIndex);
×
7513
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
×
7514
    for (int32_t j = 0; j < num; ++j) {
×
7515
      STableIndexInfo *pInfo = (STableIndexInfo *)taosArrayGet(pIndexRsp->pIndex, j);
×
7516
      TAOS_CHECK_EXIT(tSerializeSTableIndexInfo(&encoder, pInfo));
×
7517
    }
7518
  }
7519

7520
  tEndEncode(&encoder);
53,858✔
7521

7522
_exit:
53,857✔
7523
  if (code) {
53,857!
7524
    tlen = code;
×
7525
  } else {
7526
    tlen = encoder.pos;
53,857✔
7527
  }
7528
  tEncoderClear(&encoder);
53,857✔
7529
  return tlen;
53,857✔
7530
}
7531

7532
int32_t tDeserializeSTableMetaRsp(void *buf, int32_t bufLen, STableMetaRsp *pRsp) {
46,317✔
7533
  SDecoder decoder = {0};
46,317✔
7534
  int32_t  code = 0;
46,317✔
7535
  int32_t  lino;
7536

7537
  tDecoderInit(&decoder, buf, bufLen);
46,317✔
7538

7539
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
46,318!
7540
  TAOS_CHECK_EXIT(tDecodeSTableMetaRsp(&decoder, pRsp));
46,321!
7541

7542
  tEndDecode(&decoder);
46,316✔
7543
_exit:
46,319✔
7544
  tDecoderClear(&decoder);
46,319✔
7545
  return code;
46,318✔
7546
}
7547

7548
int32_t tDeserializeSSTbHbRsp(void *buf, int32_t bufLen, SSTbHbRsp *pRsp) {
1,621✔
7549
  SDecoder decoder = {0};
1,621✔
7550
  int32_t  code = 0;
1,621✔
7551
  int32_t  lino;
7552

7553
  tDecoderInit(&decoder, buf, bufLen);
1,621✔
7554

7555
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,621!
7556

7557
  int32_t numOfMeta = 0;
1,621✔
7558
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfMeta));
1,621!
7559
  pRsp->pMetaRsp = taosArrayInit(numOfMeta, sizeof(STableMetaRsp));
1,621✔
7560
  if (pRsp->pMetaRsp == NULL) {
1,621!
7561
    TAOS_CHECK_EXIT(terrno);
×
7562
  }
7563

7564
  for (int32_t i = 0; i < numOfMeta; ++i) {
1,624✔
7565
    STableMetaRsp tableMetaRsp = {0};
3✔
7566
    TAOS_CHECK_EXIT(tDecodeSTableMetaRsp(&decoder, &tableMetaRsp));
3!
7567
    if (taosArrayPush(pRsp->pMetaRsp, &tableMetaRsp) == NULL) {
6!
7568
      taosMemoryFree(tableMetaRsp.pSchemas);
×
7569
      taosMemoryFree(tableMetaRsp.pSchemaExt);
×
7570
      taosMemoryFree(tableMetaRsp.pColRefs);
×
7571
      TAOS_CHECK_EXIT(terrno);
×
7572
    }
7573
  }
7574

7575
  int32_t numOfIndex = 0;
1,621✔
7576
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfIndex));
1,621!
7577

7578
  pRsp->pIndexRsp = taosArrayInit(numOfIndex, sizeof(STableIndexRsp));
1,621✔
7579
  if (pRsp->pIndexRsp == NULL) {
1,621!
7580
    TAOS_CHECK_EXIT(terrno);
×
7581
  }
7582

7583
  for (int32_t i = 0; i < numOfIndex; ++i) {
1,621!
7584
    STableIndexRsp tableIndexRsp = {0};
×
7585
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, tableIndexRsp.tbName));
×
7586
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, tableIndexRsp.dbFName));
×
7587
    TAOS_CHECK_EXIT(tDecodeU64(&decoder, &tableIndexRsp.suid));
×
7588
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &tableIndexRsp.version));
×
7589
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &tableIndexRsp.indexSize));
×
7590
    int32_t num = 0;
×
7591
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
×
7592
    if (num > 0) {
×
7593
      tableIndexRsp.pIndex = taosArrayInit(num, sizeof(STableIndexInfo));
×
7594
      if (NULL == tableIndexRsp.pIndex) {
×
7595
        TAOS_CHECK_EXIT(terrno);
×
7596
      }
7597
      STableIndexInfo info;
7598
      for (int32_t j = 0; j < num; ++j) {
×
7599
        TAOS_CHECK_EXIT(tDeserializeSTableIndexInfo(&decoder, &info));
×
7600
        if (NULL == taosArrayPush(tableIndexRsp.pIndex, &info)) {
×
7601
          taosMemoryFree(info.expr);
×
7602
          TAOS_CHECK_EXIT(terrno);
×
7603
        }
7604
      }
7605
    }
7606
    if (taosArrayPush(pRsp->pIndexRsp, &tableIndexRsp) == NULL) {
×
7607
      taosArrayDestroyEx(tableIndexRsp.pIndex, tFreeSTableIndexInfo);
×
7608
      TAOS_CHECK_EXIT(terrno);
×
7609
    }
7610
  }
7611

7612
  tEndDecode(&decoder);
1,621✔
7613

7614
_exit:
1,621✔
7615
  tDecoderClear(&decoder);
1,621✔
7616
  return code;
1,621✔
7617
}
7618

7619
void tFreeSTableMetaRsp(void *pRsp) {
2,384,604✔
7620
  if (NULL == pRsp) {
2,384,604!
7621
    return;
×
7622
  }
7623

7624
  taosMemoryFreeClear(((STableMetaRsp *)pRsp)->pSchemas);
2,384,604!
7625
  taosMemoryFreeClear(((STableMetaRsp *)pRsp)->pSchemaExt);
2,384,579!
7626
  taosMemoryFreeClear(((STableMetaRsp *)pRsp)->pColRefs);
2,384,555!
7627
}
7628

7629
void tFreeSTableIndexRsp(void *info) {
3✔
7630
  if (NULL == info) {
3!
7631
    return;
×
7632
  }
7633

7634
  STableIndexRsp *pInfo = (STableIndexRsp *)info;
3✔
7635

7636
  taosArrayDestroyEx(pInfo->pIndex, tFreeSTableIndexInfo);
3✔
7637
}
7638

7639
void tFreeSSTbHbRsp(SSTbHbRsp *pRsp) {
28,549✔
7640
  int32_t numOfMeta = taosArrayGetSize(pRsp->pMetaRsp);
28,549✔
7641
  for (int32_t i = 0; i < numOfMeta; ++i) {
29,006✔
7642
    STableMetaRsp *pMetaRsp = taosArrayGet(pRsp->pMetaRsp, i);
457✔
7643
    tFreeSTableMetaRsp(pMetaRsp);
457✔
7644
  }
7645

7646
  taosArrayDestroy(pRsp->pMetaRsp);
28,549✔
7647

7648
  int32_t numOfIndex = taosArrayGetSize(pRsp->pIndexRsp);
28,550✔
7649
  for (int32_t i = 0; i < numOfIndex; ++i) {
28,550!
7650
    STableIndexRsp *pIndexRsp = taosArrayGet(pRsp->pIndexRsp, i);
×
7651
    tFreeSTableIndexRsp(pIndexRsp);
×
7652
  }
7653

7654
  taosArrayDestroy(pRsp->pIndexRsp);
28,550✔
7655
}
28,550✔
7656

7657
int32_t tSerializeSTableInfoReq(void *buf, int32_t bufLen, STableInfoReq *pReq) {
103,419✔
7658
  int32_t headLen = sizeof(SMsgHead);
103,419✔
7659
  int32_t code = 0;
103,419✔
7660
  int32_t lino;
7661
  if (buf != NULL) {
103,419✔
7662
    buf = (char *)buf + headLen;
51,730✔
7663
    bufLen -= headLen;
51,730✔
7664
  }
7665

7666
  SEncoder encoder = {0};
103,419✔
7667
  tEncoderInit(&encoder, buf, bufLen);
103,419✔
7668

7669
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
103,447!
7670
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dbFName));
206,908!
7671
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->tbName));
206,908!
7672
  TAOS_CHECK_EXIT(tEncodeU8(&encoder, pReq->option));
206,908!
7673
  TAOS_CHECK_EXIT(tEncodeU8(&encoder, pReq->autoCreateCtb));
206,908!
7674
  tEndEncode(&encoder);
103,454✔
7675

7676
_exit:
103,444✔
7677
  if (code) {
103,444!
7678
    tEncoderClear(&encoder);
×
7679
    return code;
×
7680
  } else {
7681
    int32_t tlen = encoder.pos;
103,444✔
7682
    tEncoderClear(&encoder);
103,444✔
7683

7684
    if (buf != NULL) {
103,446✔
7685
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
51,731✔
7686
      pHead->vgId = htonl(pReq->header.vgId);
51,731✔
7687
      pHead->contLen = htonl(tlen + headLen);
51,731✔
7688
    }
7689

7690
    return tlen + headLen;
103,446✔
7691
  }
7692
}
7693

7694
int32_t tDeserializeSTableInfoReq(void *buf, int32_t bufLen, STableInfoReq *pReq) {
4,423,202✔
7695
  int32_t   headLen = sizeof(SMsgHead);
4,423,202✔
7696
  int32_t   code = 0;
4,423,202✔
7697
  int32_t   lino;
7698
  SMsgHead *pHead = buf;
4,423,202✔
7699
  pHead->vgId = pReq->header.vgId;
4,423,202✔
7700
  pHead->contLen = pReq->header.contLen;
4,423,202✔
7701

7702
  SDecoder decoder = {0};
4,423,202✔
7703
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
4,423,202✔
7704

7705
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
4,423,498!
7706
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dbFName));
4,424,066!
7707
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->tbName));
4,423,637!
7708
  if (!tDecodeIsEnd(&decoder)) {
4,423,713✔
7709
    TAOS_CHECK_EXIT(tDecodeU8(&decoder, &pReq->option));
8,846,643!
7710
  } else {
7711
    pReq->option = 0;
355✔
7712
  }
7713
  if (!tDecodeIsEnd(&decoder)) {
4,423,640✔
7714
    TAOS_CHECK_EXIT(tDecodeU8(&decoder, &pReq->autoCreateCtb));
8,846,623!
7715
  } else {
7716
    pReq->autoCreateCtb = 0;
223✔
7717
  }
7718

7719
  tEndDecode(&decoder);
4,423,429✔
7720
_exit:
4,423,103✔
7721
  tDecoderClear(&decoder);
4,423,103✔
7722
  return code;
4,424,073✔
7723
}
7724

7725
int32_t tSerializeSMDropTopicReq(void *buf, int32_t bufLen, SMDropTopicReq *pReq) {
182✔
7726
  SEncoder encoder = {0};
182✔
7727
  int32_t  code = 0;
182✔
7728
  int32_t  lino;
7729
  int32_t  tlen;
7730
  tEncoderInit(&encoder, buf, bufLen);
182✔
7731

7732
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
182!
7733
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
364!
7734
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists));
364!
7735
  ENCODESQL();
546!
7736
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->force));
364!
7737

7738
  tEndEncode(&encoder);
182✔
7739

7740
_exit:
182✔
7741
  if (code) {
182!
7742
    tlen = code;
×
7743
  } else {
7744
    tlen = encoder.pos;
182✔
7745
  }
7746
  tEncoderClear(&encoder);
182✔
7747
  return tlen;
182✔
7748
}
7749

7750
int32_t tDeserializeSMDropTopicReq(void *buf, int32_t bufLen, SMDropTopicReq *pReq) {
342✔
7751
  SDecoder decoder = {0};
342✔
7752
  int32_t  code = 0;
342✔
7753
  int32_t  lino;
7754

7755
  tDecoderInit(&decoder, buf, bufLen);
342✔
7756

7757
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
342!
7758
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
342!
7759
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists));
684!
7760
  DECODESQL();
1,026!
7761
  if (!tDecodeIsEnd(&decoder)) {
342!
7762
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->force));
684!
7763
  }
7764
  tEndDecode(&decoder);
342✔
7765

7766
_exit:
342✔
7767
  tDecoderClear(&decoder);
342✔
7768
  return code;
342✔
7769
}
7770

7771
void tFreeSMDropTopicReq(SMDropTopicReq *pReq) { FREESQL(); }
433!
7772

7773
int32_t tSerializeSMDropCgroupReq(void *buf, int32_t bufLen, SMDropCgroupReq *pReq) {
50✔
7774
  SEncoder encoder = {0};
50✔
7775
  int32_t  code = 0;
50✔
7776
  int32_t  lino;
7777
  int32_t  tlen;
7778
  tEncoderInit(&encoder, buf, bufLen);
50✔
7779

7780
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
50!
7781
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->topic));
100!
7782
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->cgroup));
100!
7783
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists));
100!
7784
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->force));
100!
7785
  tEndEncode(&encoder);
50✔
7786

7787
_exit:
50✔
7788
  if (code) {
50!
7789
    tlen = code;
×
7790
  } else {
7791
    tlen = encoder.pos;
50✔
7792
  }
7793
  tEncoderClear(&encoder);
50✔
7794
  return tlen;
50✔
7795
}
7796

7797
int32_t tDeserializeSMDropCgroupReq(void *buf, int32_t bufLen, SMDropCgroupReq *pReq) {
13✔
7798
  SDecoder decoder = {0};
13✔
7799
  int32_t  code = 0;
13✔
7800
  int32_t  lino;
7801
  tDecoderInit(&decoder, buf, bufLen);
13✔
7802

7803
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
13!
7804
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->topic));
13!
7805
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->cgroup));
13!
7806
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists));
26!
7807
  if (!tDecodeIsEnd(&decoder)) {
13!
7808
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->force));
26!
7809
  }
7810
  tEndDecode(&decoder);
13✔
7811

7812
_exit:
13✔
7813
  tDecoderClear(&decoder);
13✔
7814
  return code;
13✔
7815
}
7816

7817
int32_t tSerializeSCMCreateTopicReq(void *buf, int32_t bufLen, const SCMCreateTopicReq *pReq) {
322✔
7818
  SEncoder encoder = {0};
322✔
7819
  int32_t  code = 0;
322✔
7820
  int32_t  lino;
7821
  int32_t  tlen;
7822
  tEncoderInit(&encoder, buf, bufLen);
322✔
7823

7824
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
322!
7825
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
644!
7826
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igExists));
644!
7827
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->subType));
644!
7828
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->withMeta));
644!
7829
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->subDbName));
644!
7830
  if (TOPIC_SUB_TYPE__DB == pReq->subType) {
322✔
7831
  } else {
7832
    if (TOPIC_SUB_TYPE__TABLE == pReq->subType) {
212✔
7833
      TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->subStbName));
224!
7834
    }
7835
    if (pReq->ast && strlen(pReq->ast) > 0) {
212!
7836
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, strlen(pReq->ast)));
296!
7837
      TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->ast));
296!
7838
    } else {
7839
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, 0));
64!
7840
    }
7841
  }
7842
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, strlen(pReq->sql)));
644!
7843
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->sql));
644!
7844

7845
  tEndEncode(&encoder);
322✔
7846

7847
_exit:
322✔
7848
  if (code) {
322!
7849
    tlen = code;
×
7850
  } else {
7851
    tlen = encoder.pos;
322✔
7852
  }
7853
  tEncoderClear(&encoder);
322✔
7854
  return tlen;
322✔
7855
}
7856

7857
int32_t tDeserializeSCMCreateTopicReq(void *buf, int32_t bufLen, SCMCreateTopicReq *pReq) {
449✔
7858
  int32_t  sqlLen = 0;
449✔
7859
  int32_t  astLen = 0;
449✔
7860
  int32_t  code = 0;
449✔
7861
  int32_t  lino;
7862
  SDecoder decoder = {0};
449✔
7863
  tDecoderInit(&decoder, buf, bufLen);
449✔
7864

7865
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
449!
7866
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
449!
7867
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igExists));
898!
7868
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->subType));
898!
7869
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->withMeta));
898!
7870
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->subDbName));
449!
7871
  if (TOPIC_SUB_TYPE__DB == pReq->subType) {
449✔
7872
  } else {
7873
    if (TOPIC_SUB_TYPE__TABLE == pReq->subType) {
371✔
7874
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->subStbName));
49!
7875
    }
7876
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &astLen));
371!
7877
    if (astLen > 0) {
371✔
7878
      pReq->ast = taosMemoryCalloc(1, astLen + 1);
346!
7879
      if (pReq->ast == NULL) {
346!
7880
        TAOS_CHECK_EXIT(terrno);
×
7881
      }
7882
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->ast));
346!
7883
    }
7884
  }
7885
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &sqlLen));
449!
7886
  if (sqlLen > 0) {
449!
7887
    pReq->sql = taosMemoryCalloc(1, sqlLen + 1);
449!
7888
    if (pReq->sql == NULL) {
449!
7889
      TAOS_CHECK_EXIT(terrno);
×
7890
    }
7891
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->sql));
449!
7892
  }
7893

7894
  tEndDecode(&decoder);
449✔
7895

7896
_exit:
449✔
7897
  tDecoderClear(&decoder);
449✔
7898
  return code;
449✔
7899
}
7900

7901
void tFreeSCMCreateTopicReq(SCMCreateTopicReq *pReq) {
619✔
7902
  taosMemoryFreeClear(pReq->sql);
619!
7903
  if (TOPIC_SUB_TYPE__DB != pReq->subType) {
619✔
7904
    taosMemoryFreeClear(pReq->ast);
486!
7905
  }
7906
}
619✔
7907

7908
int32_t tSerializeSConnectReq(void *buf, int32_t bufLen, SConnectReq *pReq) {
20,293✔
7909
  SEncoder encoder = {0};
20,293✔
7910
  int32_t  code = 0;
20,293✔
7911
  int32_t  lino;
7912
  int32_t  tlen;
7913
  tEncoderInit(&encoder, buf, bufLen);
20,293✔
7914

7915
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
20,336!
7916
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->connType));
40,686!
7917
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pid));
40,686!
7918
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->app));
40,686!
7919
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
40,686!
7920
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->user));
40,686!
7921
  TAOS_CHECK_EXIT(tEncodeCStrWithLen(&encoder, pReq->passwd, TSDB_PASSWORD_LEN));
40,686!
7922
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->startTime));
40,686!
7923
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->sVer));
40,686!
7924
  tEndEncode(&encoder);
20,343✔
7925

7926
_exit:
20,331✔
7927
  if (code) {
20,331!
7928
    tlen = code;
×
7929
  } else {
7930
    tlen = encoder.pos;
20,331✔
7931
  }
7932
  tEncoderClear(&encoder);
20,331✔
7933
  return tlen;
20,320✔
7934
}
7935

7936
int32_t tDeserializeSConnectReq(void *buf, int32_t bufLen, SConnectReq *pReq) {
89,742✔
7937
  SDecoder decoder = {0};
89,742✔
7938
  int32_t  code = 0;
89,742✔
7939
  int32_t  lino;
7940
  tDecoderInit(&decoder, buf, bufLen);
89,742✔
7941

7942
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
89,741!
7943
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->connType));
179,485!
7944
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pid));
179,482!
7945
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->app));
89,740!
7946
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
89,742!
7947
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->user));
89,739!
7948
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->passwd));
89,742!
7949
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->startTime));
179,489!
7950
  // Check the client version from version 3.0.3.0
7951
  if (tDecodeIsEnd(&decoder)) {
89,744!
7952
    tDecoderClear(&decoder);
×
7953
    TAOS_CHECK_EXIT(TSDB_CODE_VERSION_NOT_COMPATIBLE);
×
7954
  }
7955
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->sVer));
89,744!
7956
  tEndDecode(&decoder);
89,739✔
7957

7958
_exit:
89,738✔
7959
  tDecoderClear(&decoder);
89,738✔
7960
  return code;
89,741✔
7961
}
7962

7963
int32_t tSerializeSConnectRsp(void *buf, int32_t bufLen, SConnectRsp *pRsp) {
179,422✔
7964
  SEncoder encoder = {0};
179,422✔
7965
  int32_t  code = 0;
179,422✔
7966
  int32_t  lino;
7967
  int32_t  tlen;
7968
  tEncoderInit(&encoder, buf, bufLen);
179,422✔
7969

7970
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
179,430!
7971
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->acctId));
358,876!
7972
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->clusterId));
358,876!
7973
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pRsp->connId));
358,876!
7974
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->dnodeNum));
358,876!
7975
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRsp->superUser));
358,876!
7976
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRsp->sysInfo));
358,876!
7977
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRsp->connType));
358,876!
7978
  TAOS_CHECK_EXIT(tEncodeSEpSet(&encoder, &pRsp->epSet));
179,438!
7979
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->svrTimestamp));
358,866!
7980
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->sVer));
358,866!
7981
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->sDetailVer));
358,866!
7982
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->passVer));
358,866!
7983
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->authVer));
358,866!
7984
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->whiteListVer));
358,866!
7985
  TAOS_CHECK_EXIT(tSerializeSMonitorParas(&encoder, &pRsp->monitorParas));
179,433!
7986
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRsp->enableAuditDelete));
358,850!
7987
  tEndEncode(&encoder);
179,425✔
7988

7989
_exit:
179,429✔
7990
  if (code) {
179,429!
7991
    tlen = code;
×
7992
  } else {
7993
    tlen = encoder.pos;
179,429✔
7994
  }
7995
  tEncoderClear(&encoder);
179,429✔
7996
  return tlen;
179,425✔
7997
}
7998

7999
int32_t tDeserializeSConnectRsp(void *buf, int32_t bufLen, SConnectRsp *pRsp) {
10,123✔
8000
  SDecoder decoder = {0};
10,123✔
8001
  int32_t  code = 0;
10,123✔
8002
  int32_t  lino;
8003
  tDecoderInit(&decoder, buf, bufLen);
10,123✔
8004

8005
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
10,120!
8006
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->acctId));
20,242!
8007
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->clusterId));
20,238!
8008
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pRsp->connId));
20,231!
8009
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->dnodeNum));
20,224!
8010
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pRsp->superUser));
20,225!
8011
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pRsp->sysInfo));
20,226!
8012
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pRsp->connType));
20,221!
8013
  TAOS_CHECK_EXIT(tDecodeSEpSet(&decoder, &pRsp->epSet));
10,109!
8014
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->svrTimestamp));
20,240!
8015
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->sVer));
10,120!
8016
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->sDetailVer));
10,122!
8017

8018
  if (!tDecodeIsEnd(&decoder)) {
10,121!
8019
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->passVer));
20,244!
8020
  } else {
8021
    pRsp->passVer = 0;
×
8022
  }
8023
  // since 3.0.7.0
8024
  if (!tDecodeIsEnd(&decoder)) {
10,121!
8025
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->authVer));
20,242!
8026
  } else {
8027
    pRsp->authVer = 0;
×
8028
  }
8029

8030
  if (!tDecodeIsEnd(&decoder)) {
10,119!
8031
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->whiteListVer));
20,240!
8032
  } else {
8033
    pRsp->whiteListVer = 0;
×
8034
  }
8035
  if (!tDecodeIsEnd(&decoder)) {
10,119!
8036
    TAOS_CHECK_EXIT(tDeserializeSMonitorParas(&decoder, &pRsp->monitorParas));
10,122!
8037
  }
8038
  if (!tDecodeIsEnd(&decoder)) {
10,120!
8039
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pRsp->enableAuditDelete));
20,245!
8040
  } else {
8041
    pRsp->enableAuditDelete = 0;
×
8042
  }
8043
  tEndDecode(&decoder);
10,119✔
8044

8045
_exit:
10,116✔
8046
  tDecoderClear(&decoder);
10,116✔
8047
  return code;
10,120✔
8048
}
8049

8050
int32_t tSerializeSMTimerMsg(void *buf, int32_t bufLen, SMTimerReq *pReq) {
301,174✔
8051
  SEncoder encoder = {0};
301,174✔
8052
  int32_t  code = 0;
301,174✔
8053
  int32_t  lino;
8054
  int32_t  tlen;
8055
  tEncoderInit(&encoder, buf, bufLen);
301,174✔
8056

8057
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
301,178!
8058
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->reserved));
602,310!
8059
  tEndEncode(&encoder);
301,155✔
8060

8061
_exit:
301,174✔
8062
  if (code) {
301,174!
8063
    tlen = code;
×
8064
  } else {
8065
    tlen = encoder.pos;
301,174✔
8066
  }
8067
  tEncoderClear(&encoder);
301,174✔
8068
  return tlen;
301,192✔
8069
}
8070

8071
int32_t tSerializeDropOrphanTaskMsg(void *buf, int32_t bufLen, SMStreamDropOrphanMsg *pMsg) {
×
8072
  SEncoder encoder = {0};
×
8073
  int32_t  code = 0;
×
8074
  int32_t  lino;
8075
  int32_t  tlen;
8076
  tEncoderInit(&encoder, buf, bufLen);
×
8077

8078
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
8079

8080
  int32_t size = taosArrayGetSize(pMsg->pList);
×
8081
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, size));
×
8082

8083
  for (int32_t i = 0; i < size; i++) {
×
8084
    SOrphanTask *pTask = taosArrayGet(pMsg->pList, i);
×
8085
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pTask->streamId));
×
8086
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pTask->taskId));
×
8087
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pTask->nodeId));
×
8088
  }
8089

8090
  tEndEncode(&encoder);
×
8091

8092
_exit:
×
8093
  if (code) {
×
8094
    tlen = code;
×
8095
  } else {
8096
    tlen = encoder.pos;
×
8097
  }
8098
  tEncoderClear(&encoder);
×
8099
  return tlen;
×
8100
}
8101

8102
int32_t tDeserializeDropOrphanTaskMsg(void *buf, int32_t bufLen, SMStreamDropOrphanMsg *pMsg) {
×
8103
  SDecoder decoder = {0};
×
8104
  int32_t  code = 0;
×
8105
  int32_t  lino;
8106
  tDecoderInit(&decoder, buf, bufLen);
×
8107

8108
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
8109

8110
  int32_t num = 0;
×
8111
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
×
8112

8113
  if (num > 0) {
×
8114
    pMsg->pList = taosArrayInit(num, sizeof(SOrphanTask));
×
8115
    if (NULL == pMsg->pList) {
×
8116
      TAOS_CHECK_EXIT(terrno);
×
8117
    }
8118
    for (int32_t i = 0; i < num; ++i) {
×
8119
      SOrphanTask info = {0};
×
8120
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &info.streamId));
×
8121
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &info.taskId));
×
8122
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &info.nodeId));
×
8123

8124
      if (taosArrayPush(pMsg->pList, &info) == NULL) {
×
8125
        TAOS_CHECK_EXIT(terrno);
×
8126
      }
8127
    }
8128
  }
8129

8130
  tEndDecode(&decoder);
×
8131
_exit:
×
8132
  tDecoderClear(&decoder);
×
8133
  return code;
×
8134
}
8135

8136
void tDestroyDropOrphanTaskMsg(SMStreamDropOrphanMsg *pMsg) {
×
8137
  if (pMsg == NULL) {
×
8138
    return;
×
8139
  }
8140

8141
  taosArrayDestroy(pMsg->pList);
×
8142
}
8143

8144
int32_t tEncodeSReplica(SEncoder *pEncoder, SReplica *pReplica) {
357,030✔
8145
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pReplica->id));
714,060!
8146
  TAOS_CHECK_RETURN(tEncodeU16(pEncoder, pReplica->port));
714,060!
8147
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pReplica->fqdn));
714,060!
8148
  return 0;
357,030✔
8149
}
8150

8151
int32_t tDecodeSReplica(SDecoder *pDecoder, SReplica *pReplica) {
238,712✔
8152
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pReplica->id));
477,294!
8153
  TAOS_CHECK_RETURN(tDecodeU16(pDecoder, &pReplica->port));
476,823!
8154
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pReplica->fqdn));
238,241!
8155
  return 0;
238,888✔
8156
}
8157

8158
int32_t tSerializeSCreateVnodeReq(void *buf, int32_t bufLen, SCreateVnodeReq *pReq) {
20,202✔
8159
  SEncoder encoder = {0};
20,202✔
8160
  int32_t  code = 0;
20,202✔
8161
  int32_t  lino;
8162
  int32_t  tlen;
8163
  tEncoderInit(&encoder, buf, bufLen);
20,202✔
8164

8165
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
20,202!
8166
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
40,404!
8167
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
40,404!
8168
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->dbUid));
40,404!
8169
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgVersion));
40,404!
8170
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfStables));
40,404!
8171
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->buffer));
40,404!
8172
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pageSize));
40,404!
8173
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pages));
40,404!
8174
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->cacheLastSize));
40,404!
8175
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysPerFile));
40,404!
8176
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep0));
40,404!
8177
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep1));
40,404!
8178
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep2));
40,404!
8179
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->minRows));
40,404!
8180
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->maxRows));
40,404!
8181
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walFsyncPeriod));
40,404!
8182
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->hashBegin));
40,404!
8183
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->hashEnd));
40,404!
8184
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->hashMethod));
40,404!
8185
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->walLevel));
40,404!
8186
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->precision));
40,404!
8187
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->compression));
40,404!
8188
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->strict));
40,404!
8189
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->cacheLast));
40,404!
8190
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->replica));
40,404!
8191
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->selfIndex));
40,404!
8192
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; ++i) {
121,212✔
8193
    SReplica *pReplica = &pReq->replicas[i];
101,010✔
8194
    TAOS_CHECK_EXIT(tEncodeSReplica(&encoder, pReplica));
101,010!
8195
  }
8196
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfRetensions));
40,404!
8197
  for (int32_t i = 0; i < pReq->numOfRetensions; ++i) {
20,202!
8198
    SRetention *pRetension = taosArrayGet(pReq->pRetensions, i);
×
8199
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRetension->freq));
×
8200
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRetension->keep));
×
8201
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRetension->freqUnit));
×
8202
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pRetension->keepUnit));
×
8203
  }
8204

8205
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->isTsma));
40,404!
8206
  if (pReq->isTsma) {
20,202!
8207
    uint32_t tsmaLen = (uint32_t)(htonl(((SMsgHead *)pReq->pTsma)->contLen));
×
8208
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)pReq->pTsma, tsmaLen));
×
8209
  }
8210
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRetentionPeriod));
40,404!
8211
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->walRetentionSize));
40,404!
8212
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRollPeriod));
40,404!
8213
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->walSegmentSize));
40,404!
8214
  TAOS_CHECK_EXIT(tEncodeI16(&encoder, pReq->sstTrigger));
40,404!
8215
  TAOS_CHECK_EXIT(tEncodeI16(&encoder, pReq->hashPrefix));
40,404!
8216
  TAOS_CHECK_EXIT(tEncodeI16(&encoder, pReq->hashSuffix));
40,404!
8217
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->tsdbPageSize));
40,404!
8218
  for (int32_t i = 0; i < 6; ++i) {
141,414✔
8219
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->reserved[i]));
242,424!
8220
  }
8221
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->learnerReplica));
40,404!
8222
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->learnerSelfIndex));
40,404!
8223
  for (int32_t i = 0; i < TSDB_MAX_LEARNER_REPLICA; ++i) {
222,222✔
8224
    SReplica *pReplica = &pReq->learnerReplicas[i];
202,020✔
8225
    TAOS_CHECK_EXIT(tEncodeSReplica(&encoder, pReplica));
202,020!
8226
  }
8227
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->changeVersion));
40,404!
8228
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->keepTimeOffset));
40,404!
8229
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->encryptAlgorithm));
40,404!
8230
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssChunkSize));
40,404!
8231
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssKeepLocal));
40,404!
8232
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ssCompact));
40,404!
8233

8234
  tEndEncode(&encoder);
20,202✔
8235

8236
_exit:
20,202✔
8237
  if (code) {
20,202!
8238
    tlen = code;
×
8239
  } else {
8240
    tlen = encoder.pos;
20,202✔
8241
  }
8242
  tEncoderClear(&encoder);
20,202✔
8243
  return tlen;
20,202✔
8244
}
8245

8246
int32_t tDeserializeSCreateVnodeReq(void *buf, int32_t bufLen, SCreateVnodeReq *pReq) {
10,214✔
8247
  SDecoder decoder = {0};
10,214✔
8248
  int32_t  code = 0;
10,214✔
8249
  int32_t  lino;
8250

8251
  tDecoderInit(&decoder, buf, bufLen);
10,214✔
8252

8253
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
10,218!
8254
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
20,418!
8255
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
10,205!
8256
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->dbUid));
20,406!
8257
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgVersion));
20,402!
8258
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfStables));
20,408!
8259
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->buffer));
20,408!
8260
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pageSize));
20,407!
8261
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pages));
20,408!
8262
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->cacheLastSize));
20,397!
8263
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysPerFile));
20,387!
8264
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep0));
20,376!
8265
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep1));
20,374!
8266
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep2));
20,386!
8267
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->minRows));
20,390!
8268
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->maxRows));
20,394!
8269
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walFsyncPeriod));
20,392!
8270
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->hashBegin));
20,391!
8271
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->hashEnd));
20,392!
8272
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->hashMethod));
20,377!
8273
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->walLevel));
20,373!
8274
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->precision));
20,388!
8275
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->compression));
20,392!
8276
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->strict));
20,391!
8277
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->cacheLast));
20,391!
8278
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->replica));
20,392!
8279
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->selfIndex));
20,392!
8280
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; ++i) {
61,023✔
8281
    SReplica *pReplica = &pReq->replicas[i];
50,773✔
8282
    TAOS_CHECK_EXIT(tDecodeSReplica(&decoder, pReplica));
50,773!
8283
  }
8284
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfRetensions));
20,461!
8285
  pReq->pRetensions = taosArrayInit(pReq->numOfRetensions, sizeof(SRetention));
10,211✔
8286
  if (pReq->pRetensions == NULL) {
10,207✔
8287
    TAOS_CHECK_EXIT(terrno);
14!
8288
  }
8289

8290
  for (int32_t i = 0; i < pReq->numOfRetensions; ++i) {
10,193!
8291
    SRetention rentension = {0};
×
8292
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &rentension.freq));
×
8293
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &rentension.keep));
×
8294
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &rentension.freqUnit));
×
8295
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &rentension.keepUnit));
×
8296
    if (taosArrayPush(pReq->pRetensions, &rentension) == NULL) {
×
8297
      TAOS_CHECK_EXIT(terrno);
×
8298
    }
8299
  }
8300

8301
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->isTsma));
20,385!
8302
  if (pReq->isTsma) {
10,192!
8303
    TAOS_CHECK_EXIT(tDecodeBinary(&decoder, (uint8_t **)&pReq->pTsma, NULL));
×
8304
  }
8305

8306
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRetentionPeriod));
20,381!
8307
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->walRetentionSize));
20,385!
8308
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRollPeriod));
20,388!
8309
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->walSegmentSize));
20,383!
8310
  TAOS_CHECK_EXIT(tDecodeI16(&decoder, &pReq->sstTrigger));
20,376!
8311
  TAOS_CHECK_EXIT(tDecodeI16(&decoder, &pReq->hashPrefix));
20,365!
8312
  TAOS_CHECK_EXIT(tDecodeI16(&decoder, &pReq->hashSuffix));
20,354!
8313
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->tsdbPageSize));
20,349!
8314
  for (int32_t i = 0; i < 6; ++i) {
70,909✔
8315
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->reserved[i]));
121,455!
8316
  }
8317
  if (!tDecodeIsEnd(&decoder)) {
10,188✔
8318
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->learnerReplica));
20,334!
8319
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->learnerSelfIndex));
20,339!
8320
    for (int32_t i = 0; i < TSDB_MAX_LEARNER_REPLICA; ++i) {
111,626✔
8321
      SReplica *pReplica = &pReq->learnerReplicas[i];
101,338✔
8322
      TAOS_CHECK_EXIT(tDecodeSReplica(&decoder, pReplica));
101,338!
8323
    }
8324
  }
8325
  if (!tDecodeIsEnd(&decoder)) {
10,309✔
8326
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->changeVersion));
20,415!
8327
  }
8328
  pReq->keepTimeOffset = TSDB_DEFAULT_KEEP_TIME_OFFSET;
10,304✔
8329
  if (!tDecodeIsEnd(&decoder)) {
10,304✔
8330
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->keepTimeOffset));
20,407!
8331
  }
8332
  pReq->encryptAlgorithm = TSDB_DEFAULT_ENCRYPT_ALGO;
10,297✔
8333
  pReq->ssChunkSize = TSDB_DEFAULT_SS_CHUNK_SIZE;
10,297✔
8334
  pReq->ssKeepLocal = TSDB_DEFAULT_SS_KEEP_LOCAL;
10,297✔
8335
  pReq->ssCompact = TSDB_DEFAULT_SS_COMPACT;
10,297✔
8336
  if (!tDecodeIsEnd(&decoder)) {
10,297✔
8337
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->encryptAlgorithm));
20,384!
8338
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssChunkSize));
20,368!
8339
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssKeepLocal));
20,369!
8340
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ssCompact));
20,369!
8341
  }
8342

8343
  tEndDecode(&decoder);
10,281✔
8344

8345
_exit:
10,177✔
8346
  tDecoderClear(&decoder);
10,177✔
8347
  return code;
10,189✔
8348
}
8349

8350
int32_t tFreeSCreateVnodeReq(SCreateVnodeReq *pReq) {
10,221✔
8351
  taosArrayDestroy(pReq->pRetensions);
10,221✔
8352
  pReq->pRetensions = NULL;
10,221✔
8353
  return 0;
10,221✔
8354
}
8355

8356
int32_t tSerializeSQueryCompactProgressReq(void *buf, int32_t bufLen, SQueryCompactProgressReq *pReq) {
362✔
8357
  SEncoder encoder = {0};
362✔
8358
  int32_t  code = 0;
362✔
8359
  int32_t  lino;
8360
  int32_t  tlen;
8361
  tEncoderInit(&encoder, buf, bufLen);
362✔
8362

8363
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
362!
8364

8365
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->compactId));
724!
8366
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
724!
8367
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
724!
8368

8369
  tEndEncode(&encoder);
362✔
8370

8371
_exit:
362✔
8372
  if (code) {
362!
8373
    tlen = code;
×
8374
  } else {
8375
    tlen = encoder.pos;
362✔
8376
  }
8377
  tEncoderClear(&encoder);
362✔
8378
  return tlen;
362✔
8379
}
8380

8381
int32_t tDeserializeSQueryCompactProgressReq(void *buf, int32_t bufLen, SQueryCompactProgressReq *pReq) {
181✔
8382
  int32_t  headLen = sizeof(SMsgHead);
181✔
8383
  SDecoder decoder = {0};
181✔
8384
  int32_t  code = 0;
181✔
8385
  int32_t  lino;
8386
  tDecoderInit(&decoder, ((uint8_t *)buf) + headLen, bufLen - headLen);
181✔
8387

8388
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
181!
8389
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->compactId));
362!
8390
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
362!
8391
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
362!
8392

8393
  tEndDecode(&decoder);
181✔
8394
_exit:
181✔
8395
  tDecoderClear(&decoder);
181✔
8396
  return code;
181✔
8397
}
8398

8399
int32_t tSerializeSQueryCompactProgressRsp(void *buf, int32_t bufLen, SQueryCompactProgressRsp *pReq) {
362✔
8400
  SEncoder encoder = {0};
362✔
8401
  int32_t  code = 0;
362✔
8402
  int32_t  lino;
8403
  int32_t  tlen;
8404
  tEncoderInit(&encoder, buf, bufLen);
362✔
8405

8406
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
362!
8407
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->compactId));
724!
8408
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
724!
8409
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
724!
8410
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numberFileset));
724!
8411
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->finished));
724!
8412
  // 1. add progress and remaining time
8413
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->progress));
724!
8414
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->remainingTime));
724!
8415

8416
  tEndEncode(&encoder);
362✔
8417

8418
_exit:
362✔
8419
  if (code) {
362!
8420
    tlen = code;
×
8421
  } else {
8422
    tlen = encoder.pos;
362✔
8423
  }
8424
  tEncoderClear(&encoder);
362✔
8425
  return tlen;
362✔
8426
}
8427
int32_t tDeserializeSQueryCompactProgressRsp(void *buf, int32_t bufLen, SQueryCompactProgressRsp *pReq) {
180✔
8428
  SDecoder decoder = {0};
180✔
8429
  int32_t  code = 0;
180✔
8430
  int32_t  lino;
8431
  tDecoderInit(&decoder, buf, bufLen);
180✔
8432

8433
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
180!
8434
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->compactId));
362!
8435
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
362!
8436
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
362!
8437
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numberFileset));
362!
8438
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->finished));
362!
8439
  // 1. decode progress and remaining time
8440
  if (!tDecodeIsEnd(&decoder)) {
181!
8441
    TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->progress));
362!
8442
    TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->remainingTime));
362!
8443
  } else {
8444
    pReq->progress = 0;
×
8445
    pReq->remainingTime = 0;
×
8446
  }
8447

8448
  tEndDecode(&decoder);
181✔
8449
_exit:
181✔
8450
  tDecoderClear(&decoder);
181✔
8451
  return code;
181✔
8452
}
8453

8454
int32_t tSerializeSDropVnodeReq(void *buf, int32_t bufLen, SDropVnodeReq *pReq) {
28,538✔
8455
  SEncoder encoder = {0};
28,538✔
8456
  int32_t  code = 0;
28,538✔
8457
  int32_t  lino;
8458
  int32_t  tlen;
8459
  tEncoderInit(&encoder, buf, bufLen);
28,538✔
8460

8461
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
28,538!
8462
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
57,076!
8463
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
57,076!
8464
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->dbUid));
57,076!
8465
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
57,076!
8466
  for (int32_t i = 0; i < 8; ++i) {
256,842✔
8467
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->reserved[i]));
456,608!
8468
  }
8469
  tEndEncode(&encoder);
28,538✔
8470

8471
_exit:
28,538✔
8472
  if (code) {
28,538!
8473
    tlen = code;
×
8474
  } else {
8475
    tlen = encoder.pos;
28,538✔
8476
  }
8477
  tEncoderClear(&encoder);
28,538✔
8478
  return tlen;
28,538✔
8479
}
8480

8481
int32_t tDeserializeSDropVnodeReq(void *buf, int32_t bufLen, SDropVnodeReq *pReq) {
4,495✔
8482
  SDecoder decoder = {0};
4,495✔
8483
  int32_t  code = 0;
4,495✔
8484
  int32_t  lino;
8485
  tDecoderInit(&decoder, buf, bufLen);
4,495✔
8486

8487
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
4,495!
8488
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
8,990!
8489
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
8,990!
8490
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->dbUid));
8,990!
8491
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
4,495!
8492
  for (int32_t i = 0; i < 8; ++i) {
40,455✔
8493
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->reserved[i]));
71,920!
8494
  }
8495
  tEndDecode(&decoder);
4,495✔
8496

8497
_exit:
4,495✔
8498
  tDecoderClear(&decoder);
4,495✔
8499
  return code;
4,495✔
8500
}
8501
int32_t tSerializeSDropIdxReq(void *buf, int32_t bufLen, SDropIndexReq *pReq) {
4,264✔
8502
  SEncoder encoder = {0};
4,264✔
8503
  int32_t  code = 0;
4,264✔
8504
  int32_t  lino;
8505
  int32_t  tlen;
8506
  tEncoderInit(&encoder, buf, bufLen);
4,264✔
8507

8508
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4,264!
8509
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->colName));
8,528!
8510
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->stb));
8,528!
8511
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->stbUid));
8,528!
8512
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->dbUid));
8,528!
8513
  for (int32_t i = 0; i < 8; ++i) {
38,376✔
8514
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->reserved[i]));
68,224!
8515
  }
8516
  tEndEncode(&encoder);
4,264✔
8517

8518
_exit:
4,264✔
8519
  if (code) {
4,264!
8520
    tlen = code;
×
8521
  } else {
8522
    tlen = encoder.pos;
4,264✔
8523
  }
8524
  tEncoderClear(&encoder);
4,264✔
8525
  return tlen;
4,264✔
8526
}
8527

8528
int32_t tDeserializeSDropIdxReq(void *buf, int32_t bufLen, SDropIndexReq *pReq) {
2,132✔
8529
  SDecoder decoder = {0};
2,132✔
8530
  int32_t  code = 0;
2,132✔
8531
  int32_t  lino;
8532
  tDecoderInit(&decoder, buf, bufLen);
2,132✔
8533

8534
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,132!
8535
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->colName));
2,132!
8536
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->stb));
2,132!
8537
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->stbUid));
4,264!
8538
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->dbUid));
4,264!
8539
  for (int32_t i = 0; i < 8; ++i) {
19,188✔
8540
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->reserved[i]));
34,112!
8541
  }
8542
  tEndDecode(&decoder);
2,132✔
8543

8544
_exit:
2,132✔
8545
  tDecoderClear(&decoder);
2,132✔
8546
  return code;
2,132✔
8547
}
8548

8549
int32_t tSerializeSCompactVnodeReq(void *buf, int32_t bufLen, SCompactVnodeReq *pReq) {
224✔
8550
  SEncoder encoder = {0};
224✔
8551
  int32_t  code = 0;
224✔
8552
  int32_t  lino;
8553
  int32_t  tlen;
8554
  tEncoderInit(&encoder, buf, bufLen);
224✔
8555

8556
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
224!
8557
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->dbUid));
448!
8558
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
448!
8559
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->compactStartTime));
448!
8560

8561
  // 1.1 add tw.skey and tw.ekey
8562
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->tw.skey));
448!
8563
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->tw.ekey));
448!
8564

8565
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->compactId));
448!
8566
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->metaOnly));
448!
8567

8568
  tEndEncode(&encoder);
224✔
8569

8570
_exit:
224✔
8571
  if (code) {
224!
8572
    tlen = code;
×
8573
  } else {
8574
    tlen = encoder.pos;
224✔
8575
  }
8576
  tEncoderClear(&encoder);
224✔
8577
  return tlen;
224✔
8578
}
8579

8580
int32_t tDeserializeSCompactVnodeReq(void *buf, int32_t bufLen, SCompactVnodeReq *pReq) {
127✔
8581
  SDecoder decoder = {0};
127✔
8582
  int32_t  code = 0;
127✔
8583
  int32_t  lino;
8584
  tDecoderInit(&decoder, buf, bufLen);
127✔
8585

8586
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
127!
8587
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->dbUid));
254!
8588
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
127!
8589
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->compactStartTime));
254!
8590

8591
  // 1.1
8592
  if (tDecodeIsEnd(&decoder)) {
127!
8593
    pReq->tw.skey = TSKEY_MIN;
×
8594
    pReq->tw.ekey = TSKEY_MAX;
×
8595
  } else {
8596
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->tw.skey));
254!
8597
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->tw.ekey));
254!
8598
  }
8599

8600
  if (!tDecodeIsEnd(&decoder)) {
127!
8601
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->compactId));
254!
8602
  }
8603

8604
  if (!tDecodeIsEnd(&decoder)) {
127!
8605
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->metaOnly));
254!
8606
  } else {
8607
    pReq->metaOnly = false;
×
8608
  }
8609

8610
  tEndDecode(&decoder);
127✔
8611
_exit:
127✔
8612
  tDecoderClear(&decoder);
127✔
8613
  return code;
127✔
8614
}
8615

8616
int32_t tSerializeSVKillCompactReq(void *buf, int32_t bufLen, SVKillCompactReq *pReq) {
4✔
8617
  SEncoder encoder = {0};
4✔
8618
  int32_t  code = 0;
4✔
8619
  int32_t  lino;
8620
  int32_t  tlen;
8621
  tEncoderInit(&encoder, buf, bufLen);
4✔
8622

8623
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4!
8624
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->compactId));
8!
8625
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
8!
8626
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
8!
8627

8628
  tEndEncode(&encoder);
4✔
8629

8630
_exit:
4✔
8631
  if (code) {
4!
8632
    tlen = code;
×
8633
  } else {
8634
    tlen = encoder.pos;
4✔
8635
  }
8636
  tEncoderClear(&encoder);
4✔
8637
  return tlen;
4✔
8638
}
8639

8640
int32_t tDeserializeSVKillCompactReq(void *buf, int32_t bufLen, SVKillCompactReq *pReq) {
2✔
8641
  int32_t  code = 0;
2✔
8642
  int32_t  lino;
8643
  SDecoder decoder = {0};
2✔
8644

8645
  tDecoderInit(&decoder, buf, bufLen);
2✔
8646

8647
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2!
8648
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->compactId));
4!
8649
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
4!
8650
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
4!
8651
  tEndDecode(&decoder);
2✔
8652

8653
_exit:
2✔
8654
  tDecoderClear(&decoder);
2✔
8655
  return code;
2✔
8656
}
8657

8658
int32_t tSerializeSAlterVnodeConfigReq(void *buf, int32_t bufLen, SAlterVnodeConfigReq *pReq) {
1,402✔
8659
  int32_t  code = 0;
1,402✔
8660
  int32_t  lino;
8661
  int32_t  tlen;
8662
  SEncoder encoder = {0};
1,402✔
8663

8664
  tEncoderInit(&encoder, buf, bufLen);
1,402✔
8665

8666
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
1,402!
8667
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgVersion));
2,804!
8668
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->buffer));
2,804!
8669
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pageSize));
2,804!
8670
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->pages));
2,804!
8671
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->cacheLastSize));
2,804!
8672
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysPerFile));
2,804!
8673
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep0));
2,804!
8674
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep1));
2,804!
8675
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->daysToKeep2));
2,804!
8676
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walFsyncPeriod));
2,804!
8677
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->walLevel));
2,804!
8678
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->strict));
2,804!
8679
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->cacheLast));
2,804!
8680
  for (int32_t i = 0; i < 7; ++i) {
11,216✔
8681
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->reserved[i]));
19,628!
8682
  }
8683

8684
  // 1st modification
8685
  TAOS_CHECK_EXIT(tEncodeI16(&encoder, pReq->sttTrigger));
2,804!
8686
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->minRows));
2,804!
8687
  // 2nd modification
8688
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRetentionPeriod));
2,804!
8689
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->walRetentionSize));
2,804!
8690
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->keepTimeOffset));
2,804!
8691

8692
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->ssKeepLocal));
2,804!
8693
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ssCompact));
2,804!
8694

8695
  tEndEncode(&encoder);
1,402✔
8696

8697
_exit:
1,402✔
8698
  if (code) {
1,402!
8699
    tlen = code;
×
8700
  } else {
8701
    tlen = encoder.pos;
1,402✔
8702
  }
8703
  tEncoderClear(&encoder);
1,402✔
8704
  return tlen;
1,402✔
8705
}
8706

8707
int32_t tDeserializeSAlterVnodeConfigReq(void *buf, int32_t bufLen, SAlterVnodeConfigReq *pReq) {
896✔
8708
  SDecoder decoder = {0};
896✔
8709
  int32_t  code = 0;
896✔
8710
  int32_t  lino;
8711
  tDecoderInit(&decoder, buf, bufLen);
896✔
8712

8713
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
895!
8714
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgVersion));
1,794!
8715
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->buffer));
1,794!
8716
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pageSize));
1,794!
8717
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->pages));
1,793!
8718
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->cacheLastSize));
1,792!
8719
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysPerFile));
1,792!
8720
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep0));
1,791!
8721
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep1));
1,790!
8722
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->daysToKeep2));
1,790!
8723
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walFsyncPeriod));
1,791!
8724
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->walLevel));
1,792!
8725
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->strict));
1,792!
8726
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->cacheLast));
1,792!
8727
  for (int32_t i = 0; i < 7; ++i) {
7,159✔
8728
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->reserved[i]));
12,526!
8729
  }
8730

8731
  // 1st modification
8732
  if (tDecodeIsEnd(&decoder)) {
896!
8733
    pReq->sttTrigger = -1;
×
8734
    pReq->minRows = -1;
×
8735
  } else {
8736
    TAOS_CHECK_EXIT(tDecodeI16(&decoder, &pReq->sttTrigger));
1,793!
8737
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->minRows));
1,794!
8738
  }
8739

8740
  // 2n modification
8741
  if (tDecodeIsEnd(&decoder)) {
897!
8742
    pReq->walRetentionPeriod = -1;
×
8743
    pReq->walRetentionSize = -1;
×
8744
  } else {
8745
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRetentionPeriod));
1,794!
8746
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->walRetentionSize));
1,794!
8747
  }
8748
  pReq->keepTimeOffset = TSDB_DEFAULT_KEEP_TIME_OFFSET;
897✔
8749
  if (!tDecodeIsEnd(&decoder)) {
897!
8750
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->keepTimeOffset));
1,794!
8751
  }
8752

8753
  pReq->ssKeepLocal = TSDB_DEFAULT_SS_KEEP_LOCAL;
897✔
8754
  pReq->ssCompact = TSDB_DEFAULT_SS_COMPACT;
897✔
8755
  if (!tDecodeIsEnd(&decoder)) {
897!
8756
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->ssKeepLocal) < 0);
1,794!
8757
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ssCompact) < 0);
1,794!
8758
  }
8759

8760
  tEndDecode(&decoder);
897✔
8761

8762
_exit:
897✔
8763
  tDecoderClear(&decoder);
897✔
8764
  return code;
897✔
8765
}
8766

8767
int32_t tSerializeSAlterVnodeReplicaReq(void *buf, int32_t bufLen, SAlterVnodeReplicaReq *pReq) {
3,232✔
8768
  SEncoder encoder = {0};
3,232✔
8769
  int32_t  code = 0;
3,232✔
8770
  int32_t  lino;
8771
  int32_t  tlen;
8772
  tEncoderInit(&encoder, buf, bufLen);
3,232✔
8773

8774
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
3,232!
8775
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
6,464!
8776
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->strict));
6,464!
8777
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->selfIndex));
6,464!
8778
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->replica));
6,464!
8779
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; ++i) {
19,392✔
8780
    SReplica *pReplica = &pReq->replicas[i];
16,160✔
8781
    TAOS_CHECK_EXIT(tEncodeSReplica(&encoder, pReplica));
16,160!
8782
  }
8783
  for (int32_t i = 0; i < 8; ++i) {
29,088✔
8784
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->reserved[i]));
51,712!
8785
  }
8786
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->learnerSelfIndex));
6,464!
8787
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->learnerReplica));
6,464!
8788
  for (int32_t i = 0; i < TSDB_MAX_LEARNER_REPLICA; ++i) {
35,552✔
8789
    SReplica *pReplica = &pReq->learnerReplicas[i];
32,320✔
8790
    TAOS_CHECK_EXIT(tEncodeSReplica(&encoder, pReplica));
32,320!
8791
  }
8792
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->changeVersion));
6,464!
8793
  tEndEncode(&encoder);
3,232✔
8794

8795
_exit:
3,232✔
8796
  if (code) {
3,232!
8797
    tlen = code;
×
8798
  } else {
8799
    tlen = encoder.pos;
3,232✔
8800
  }
8801
  tEncoderClear(&encoder);
3,232✔
8802
  return tlen;
3,232✔
8803
}
8804

8805
int32_t tDeserializeSAlterVnodeReplicaReq(void *buf, int32_t bufLen, SAlterVnodeReplicaReq *pReq) {
5,607✔
8806
  SDecoder decoder = {0};
5,607✔
8807
  int32_t  code = 0;
5,607✔
8808
  int32_t  lino;
8809
  tDecoderInit(&decoder, buf, bufLen);
5,607✔
8810

8811
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
5,607!
8812
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
11,214!
8813
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->strict));
11,214!
8814
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->selfIndex));
11,214!
8815
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->replica));
11,214!
8816
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; ++i) {
33,642✔
8817
    SReplica *pReplica = &pReq->replicas[i];
28,035✔
8818
    TAOS_CHECK_EXIT(tDecodeSReplica(&decoder, pReplica));
28,035!
8819
  }
8820
  for (int32_t i = 0; i < 8; ++i) {
50,463✔
8821
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->reserved[i]));
89,712!
8822
  }
8823
  if (!tDecodeIsEnd(&decoder)) {
5,607!
8824
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->learnerSelfIndex));
11,214!
8825
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->learnerReplica));
11,214!
8826
    for (int32_t i = 0; i < TSDB_MAX_LEARNER_REPLICA; ++i) {
61,677✔
8827
      SReplica *pReplica = &pReq->learnerReplicas[i];
56,070✔
8828
      TAOS_CHECK_EXIT(tDecodeSReplica(&decoder, pReplica));
56,070!
8829
    }
8830
  }
8831
  if (!tDecodeIsEnd(&decoder)) {
5,607!
8832
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->changeVersion));
11,214!
8833
  }
8834

8835
  tEndDecode(&decoder);
5,607✔
8836
_exit:
5,607✔
8837
  tDecoderClear(&decoder);
5,607✔
8838
  return code;
5,607✔
8839
}
8840

8841
int32_t tSerializeSDisableVnodeWriteReq(void *buf, int32_t bufLen, SDisableVnodeWriteReq *pReq) {
200✔
8842
  SEncoder encoder = {0};
200✔
8843
  int32_t  code = 0;
200✔
8844
  int32_t  lino;
8845
  int32_t  tlen;
8846
  tEncoderInit(&encoder, buf, bufLen);
200✔
8847

8848
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
200!
8849
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
400!
8850
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->disable));
400!
8851

8852
  tEndEncode(&encoder);
200✔
8853

8854
_exit:
200✔
8855
  if (code) {
200!
8856
    tlen = code;
×
8857
  } else {
8858
    tlen = encoder.pos;
200✔
8859
  }
8860
  tEncoderClear(&encoder);
200✔
8861
  return tlen;
200✔
8862
}
8863

8864
int32_t tDeserializeSDisableVnodeWriteReq(void *buf, int32_t bufLen, SDisableVnodeWriteReq *pReq) {
76✔
8865
  SDecoder decoder = {0};
76✔
8866
  int32_t  code = 0;
76✔
8867
  int32_t  lino;
8868
  tDecoderInit(&decoder, buf, bufLen);
76✔
8869

8870
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
76!
8871
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
152!
8872
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->disable));
152!
8873

8874
  tEndDecode(&decoder);
76✔
8875
_exit:
76✔
8876
  tDecoderClear(&decoder);
76✔
8877
  return code;
76✔
8878
}
8879

8880
int32_t tSerializeSAlterVnodeHashRangeReq(void *buf, int32_t bufLen, SAlterVnodeHashRangeReq *pReq) {
200✔
8881
  SEncoder encoder = {0};
200✔
8882
  int32_t  code = 0;
200✔
8883
  int32_t  lino;
8884
  int32_t  tlen;
8885
  tEncoderInit(&encoder, buf, bufLen);
200✔
8886

8887
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
200!
8888
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->srcVgId));
400!
8889
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dstVgId));
400!
8890
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->hashBegin));
400!
8891
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->hashEnd));
400!
8892
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->changeVersion));
400!
8893
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->reserved));
400!
8894

8895
  tEndEncode(&encoder);
200✔
8896

8897
_exit:
200✔
8898
  if (code) {
200!
8899
    tlen = code;
×
8900
  } else {
8901
    tlen = encoder.pos;
200✔
8902
  }
8903
  tEncoderClear(&encoder);
200✔
8904
  return tlen;
200✔
8905
}
8906

8907
int32_t tDeserializeSAlterVnodeHashRangeReq(void *buf, int32_t bufLen, SAlterVnodeHashRangeReq *pReq) {
76✔
8908
  SDecoder decoder = {0};
76✔
8909
  int32_t  code = 0;
76✔
8910
  int32_t  lino;
8911
  tDecoderInit(&decoder, buf, bufLen);
76✔
8912

8913
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
76!
8914
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->srcVgId));
152!
8915
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dstVgId));
152!
8916
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->hashBegin));
152!
8917
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->hashEnd));
152!
8918
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->changeVersion));
152!
8919
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->reserved));
152!
8920

8921
  tEndDecode(&decoder);
76✔
8922
_exit:
76✔
8923
  tDecoderClear(&decoder);
76✔
8924
  return code;
76✔
8925
}
8926

8927
int32_t tSerializeSKillQueryReq(void *buf, int32_t bufLen, SKillQueryReq *pReq) {
6✔
8928
  SEncoder encoder = {0};
6✔
8929
  int32_t  code = 0;
6✔
8930
  int32_t  lino;
8931
  int32_t  tlen;
8932
  tEncoderInit(&encoder, buf, bufLen);
6✔
8933

8934
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
8935
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->queryStrId));
12!
8936
  tEndEncode(&encoder);
6✔
8937

8938
_exit:
6✔
8939
  if (code) {
6!
8940
    tlen = code;
×
8941
  } else {
8942
    tlen = encoder.pos;
6✔
8943
  }
8944
  tEncoderClear(&encoder);
6✔
8945
  return tlen;
6✔
8946
}
8947

8948
int32_t tDeserializeSKillQueryReq(void *buf, int32_t bufLen, SKillQueryReq *pReq) {
3✔
8949
  SDecoder decoder = {0};
3✔
8950
  int32_t  code = 0;
3✔
8951
  int32_t  lino;
8952
  tDecoderInit(&decoder, buf, bufLen);
3✔
8953

8954
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3!
8955
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->queryStrId));
3!
8956
  tEndDecode(&decoder);
3✔
8957

8958
_exit:
3✔
8959
  tDecoderClear(&decoder);
3✔
8960
  return code;
3✔
8961
}
8962

8963
int32_t tSerializeSKillConnReq(void *buf, int32_t bufLen, SKillConnReq *pReq) {
6✔
8964
  SEncoder encoder = {0};
6✔
8965
  int32_t  code = 0;
6✔
8966
  int32_t  lino;
8967
  int32_t  tlen;
8968
  tEncoderInit(&encoder, buf, bufLen);
6✔
8969

8970
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6!
8971
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->connId));
12!
8972
  tEndEncode(&encoder);
6✔
8973

8974
_exit:
6✔
8975
  if (code) {
6!
8976
    tlen = code;
×
8977
  } else {
8978
    tlen = encoder.pos;
6✔
8979
  }
8980
  tEncoderClear(&encoder);
6✔
8981
  return tlen;
6✔
8982
}
8983

8984
int32_t tDeserializeSKillConnReq(void *buf, int32_t bufLen, SKillConnReq *pReq) {
4✔
8985
  SDecoder decoder = {0};
4✔
8986
  int32_t  code = 0;
4✔
8987
  int32_t  lino;
8988
  tDecoderInit(&decoder, buf, bufLen);
4✔
8989

8990
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
4!
8991
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->connId));
8!
8992
  tEndDecode(&decoder);
4✔
8993

8994
_exit:
4✔
8995
  tDecoderClear(&decoder);
4✔
8996
  return code;
4✔
8997
}
8998

8999
int32_t tSerializeSKillTransReq(void *buf, int32_t bufLen, SKillTransReq *pReq) {
×
9000
  SEncoder encoder = {0};
×
9001
  int32_t  code = 0;
×
9002
  int32_t  lino;
9003
  int32_t  tlen;
9004
  tEncoderInit(&encoder, buf, bufLen);
×
9005

9006
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
9007
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->transId));
×
9008
  tEndEncode(&encoder);
×
9009

9010
_exit:
×
9011
  if (code) {
×
9012
    tlen = code;
×
9013
  } else {
9014
    tlen = encoder.pos;
×
9015
  }
9016
  tEncoderClear(&encoder);
×
9017
  return tlen;
×
9018
}
9019

9020
int32_t tDeserializeSKillTransReq(void *buf, int32_t bufLen, SKillTransReq *pReq) {
1✔
9021
  SDecoder decoder = {0};
1✔
9022
  int32_t  code = 0;
1✔
9023
  int32_t  lino;
9024
  tDecoderInit(&decoder, buf, bufLen);
1✔
9025

9026
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1!
9027
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->transId));
2!
9028
  tEndDecode(&decoder);
1✔
9029

9030
_exit:
1✔
9031
  tDecoderClear(&decoder);
1✔
9032
  return code;
1✔
9033
}
9034

9035
int32_t tSerializeSBalanceVgroupReq(void *buf, int32_t bufLen, SBalanceVgroupReq *pReq) {
24✔
9036
  SEncoder encoder = {0};
24✔
9037
  int32_t  code = 0;
24✔
9038
  int32_t  lino;
9039
  int32_t  tlen;
9040
  tEncoderInit(&encoder, buf, bufLen);
24✔
9041

9042
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
24!
9043
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->useless));
48!
9044
  ENCODESQL();
72!
9045
  tEndEncode(&encoder);
24✔
9046

9047
_exit:
24✔
9048
  if (code) {
24!
9049
    tlen = code;
×
9050
  } else {
9051
    tlen = encoder.pos;
24✔
9052
  }
9053
  tEncoderClear(&encoder);
24✔
9054
  return tlen;
24✔
9055
}
9056

9057
int32_t tDeserializeSBalanceVgroupReq(void *buf, int32_t bufLen, SBalanceVgroupReq *pReq) {
34✔
9058
  SDecoder decoder = {0};
34✔
9059
  int32_t  code = 0;
34✔
9060
  int32_t  lino;
9061
  tDecoderInit(&decoder, buf, bufLen);
34✔
9062

9063
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
34!
9064
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->useless));
68!
9065
  DECODESQL();
102!
9066
  tEndDecode(&decoder);
34✔
9067

9068
_exit:
34✔
9069
  tDecoderClear(&decoder);
34✔
9070
  return code;
34✔
9071
}
9072

9073
void tFreeSBalanceVgroupReq(SBalanceVgroupReq *pReq) { FREESQL(); }
46!
9074

9075
int32_t tSerializeSAssignLeaderReq(void *buf, int32_t bufLen, SAssignLeaderReq *pReq) {
×
9076
  SEncoder encoder = {0};
×
9077
  int32_t  code = 0;
×
9078
  int32_t  lino;
9079
  int32_t  tlen;
9080
  tEncoderInit(&encoder, buf, bufLen);
×
9081

9082
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
9083
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->useless));
×
9084
  ENCODESQL();
×
9085
  tEndEncode(&encoder);
×
9086

9087
_exit:
×
9088
  if (code) {
×
9089
    tlen = code;
×
9090
  } else {
9091
    tlen = encoder.pos;
×
9092
  }
9093
  tEncoderClear(&encoder);
×
9094
  return tlen;
×
9095
}
9096

9097
int32_t tDeserializeSAssignLeaderReq(void *buf, int32_t bufLen, SAssignLeaderReq *pReq) {
1✔
9098
  SDecoder decoder = {0};
1✔
9099
  int32_t  code = 0;
1✔
9100
  int32_t  lino;
9101
  tDecoderInit(&decoder, buf, bufLen);
1✔
9102

9103
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1!
9104
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->useless));
2!
9105
  DECODESQL();
3!
9106
  tEndDecode(&decoder);
1✔
9107

9108
_exit:
1✔
9109
  tDecoderClear(&decoder);
1✔
9110
  return code;
1✔
9111
}
9112

9113
void tFreeSAssignLeaderReq(SAssignLeaderReq *pReq) { FREESQL(); }
1!
9114

9115
int32_t tSerializeSBalanceVgroupLeaderReq(void *buf, int32_t bufLen, SBalanceVgroupLeaderReq *pReq) {
26✔
9116
  SEncoder encoder = {0};
26✔
9117
  int32_t  code = 0;
26✔
9118
  int32_t  lino;
9119
  int32_t  tlen;
9120
  tEncoderInit(&encoder, buf, bufLen);
26✔
9121

9122
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
26!
9123
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->reserved));
52!
9124
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
52!
9125
  ENCODESQL();
78!
9126
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->db));
52!
9127

9128
  tEndEncode(&encoder);
26✔
9129

9130
_exit:
26✔
9131
  if (code) {
26!
9132
    tlen = code;
×
9133
  } else {
9134
    tlen = encoder.pos;
26✔
9135
  }
9136
  tEncoderClear(&encoder);
26✔
9137
  return tlen;
26✔
9138
}
9139

9140
int32_t tDeserializeSBalanceVgroupLeaderReq(void *buf, int32_t bufLen, SBalanceVgroupLeaderReq *pReq) {
18✔
9141
  SDecoder decoder = {0};
18✔
9142
  int32_t  code = 0;
18✔
9143
  int32_t  lino;
9144
  tDecoderInit(&decoder, buf, bufLen);
18✔
9145

9146
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
18!
9147
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->reserved));
36!
9148
  if (!tDecodeIsEnd(&decoder)) {
18!
9149
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
36!
9150
  }
9151
  DECODESQL();
54!
9152
  if (!tDecodeIsEnd(&decoder)) {
18!
9153
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->db));
18!
9154
  }
9155

9156
  tEndDecode(&decoder);
18✔
9157

9158
_exit:
18✔
9159
  tDecoderClear(&decoder);
18✔
9160
  return code;
18✔
9161
}
9162

9163
void tFreeSBalanceVgroupLeaderReq(SBalanceVgroupLeaderReq *pReq) { FREESQL(); }
31!
9164

9165
int32_t tSerializeSMergeVgroupReq(void *buf, int32_t bufLen, SMergeVgroupReq *pReq) {
24✔
9166
  SEncoder encoder = {0};
24✔
9167
  int32_t  code = 0;
24✔
9168
  int32_t  lino;
9169
  int32_t  tlen;
9170
  tEncoderInit(&encoder, buf, bufLen);
24✔
9171

9172
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
24!
9173
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId1));
48!
9174
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId2));
48!
9175
  tEndEncode(&encoder);
24✔
9176

9177
_exit:
24✔
9178
  if (code) {
24!
9179
    tlen = code;
×
9180
  } else {
9181
    tlen = encoder.pos;
24✔
9182
  }
9183
  tEncoderClear(&encoder);
24✔
9184
  return tlen;
24✔
9185
}
9186

9187
int32_t tDeserializeSMergeVgroupReq(void *buf, int32_t bufLen, SMergeVgroupReq *pReq) {
6✔
9188
  SDecoder decoder = {0};
6✔
9189
  int32_t  code = 0;
6✔
9190
  int32_t  lino;
9191
  tDecoderInit(&decoder, buf, bufLen);
6✔
9192

9193
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
6!
9194
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId1));
12!
9195
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId2));
12!
9196
  tEndDecode(&decoder);
6✔
9197

9198
_exit:
6✔
9199
  tDecoderClear(&decoder);
6✔
9200
  return code;
6✔
9201
}
9202

9203
int32_t tSerializeSRedistributeVgroupReq(void *buf, int32_t bufLen, SRedistributeVgroupReq *pReq) {
50✔
9204
  SEncoder encoder = {0};
50✔
9205
  int32_t  code = 0;
50✔
9206
  int32_t  lino;
9207
  int32_t  tlen;
9208
  tEncoderInit(&encoder, buf, bufLen);
50✔
9209

9210
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
50!
9211
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
100!
9212
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId1));
100!
9213
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId2));
100!
9214
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId3));
100!
9215
  ENCODESQL();
150!
9216
  tEndEncode(&encoder);
50✔
9217

9218
_exit:
50✔
9219
  if (code) {
50!
9220
    tlen = code;
×
9221
  } else {
9222
    tlen = encoder.pos;
50✔
9223
  }
9224
  tEncoderClear(&encoder);
50✔
9225
  return tlen;
50✔
9226
}
9227

9228
int32_t tDeserializeSRedistributeVgroupReq(void *buf, int32_t bufLen, SRedistributeVgroupReq *pReq) {
112✔
9229
  SDecoder decoder = {0};
112✔
9230
  int32_t  code = 0;
112✔
9231
  int32_t  lino;
9232
  tDecoderInit(&decoder, buf, bufLen);
112✔
9233

9234
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
112!
9235
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
224!
9236
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId1));
224!
9237
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId2));
224!
9238
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId3));
224!
9239
  DECODESQL();
336!
9240
  tEndDecode(&decoder);
112✔
9241

9242
_exit:
112✔
9243
  tDecoderClear(&decoder);
112✔
9244
  return code;
112✔
9245
}
9246

9247
void tFreeSRedistributeVgroupReq(SRedistributeVgroupReq *pReq) { FREESQL(); }
137!
9248

9249
int32_t tSerializeSSplitVgroupReq(void *buf, int32_t bufLen, SSplitVgroupReq *pReq) {
24✔
9250
  SEncoder encoder = {0};
24✔
9251
  int32_t  code = 0;
24✔
9252
  int32_t  lino;
9253
  int32_t  tlen;
9254
  tEncoderInit(&encoder, buf, bufLen);
24✔
9255

9256
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
24!
9257
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
48!
9258
  TAOS_CHECK_EXIT(tEncodeBool(&encoder, pReq->force));
24!
9259
  tEndEncode(&encoder);
24✔
9260

9261
_exit:
24✔
9262
  if (code) {
24!
9263
    tlen = code;
×
9264
  } else {
9265
    tlen = encoder.pos;
24✔
9266
  }
9267
  tEncoderClear(&encoder);
24✔
9268
  return tlen;
24✔
9269
}
9270

9271
int32_t tDeserializeSSplitVgroupReq(void *buf, int32_t bufLen, SSplitVgroupReq *pReq) {
59✔
9272
  SDecoder decoder = {0};
59✔
9273
  int32_t  code = 0;
59✔
9274
  int32_t  lino;
9275
  tDecoderInit(&decoder, buf, bufLen);
59✔
9276

9277
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
59!
9278
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->vgId));
118!
9279
  TAOS_CHECK_EXIT(tDecodeBool(&decoder, &pReq->force));
59!
9280
  tEndDecode(&decoder);
59✔
9281

9282
_exit:
59✔
9283
  tDecoderClear(&decoder);
59✔
9284
  return code;
59✔
9285
}
9286

9287
int32_t tSerializeSForceBecomeFollowerReq(void *buf, int32_t bufLen, SForceBecomeFollowerReq *pReq) {
36✔
9288
  SEncoder encoder = {0};
36✔
9289
  int32_t  code = 0;
36✔
9290
  int32_t  lino;
9291
  int32_t  tlen;
9292
  tEncoderInit(&encoder, buf, bufLen);
36✔
9293

9294
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
36!
9295
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->vgId));
72!
9296
  tEndEncode(&encoder);
36✔
9297

9298
_exit:
36✔
9299
  if (code) {
36!
9300
    tlen = code;
×
9301
  } else {
9302
    tlen = encoder.pos;
36✔
9303
  }
9304
  tEncoderClear(&encoder);
36✔
9305
  return tlen;
36✔
9306
}
9307

9308
int32_t tSerializeSDCreateMnodeReq(void *buf, int32_t bufLen, SDCreateMnodeReq *pReq) {
368✔
9309
  SEncoder encoder = {0};
368✔
9310
  int32_t  code = 0;
368✔
9311
  int32_t  lino;
9312
  int32_t  tlen;
9313
  tEncoderInit(&encoder, buf, bufLen);
368✔
9314

9315
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
368!
9316
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->replica));
736!
9317
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; ++i) {
2,208✔
9318
    SReplica *pReplica = &pReq->replicas[i];
1,840✔
9319
    TAOS_CHECK_EXIT(tEncodeSReplica(&encoder, pReplica));
1,840!
9320
  }
9321
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->learnerReplica));
736!
9322
  for (int32_t i = 0; i < TSDB_MAX_LEARNER_REPLICA; ++i) {
4,048✔
9323
    SReplica *pReplica = &pReq->learnerReplicas[i];
3,680✔
9324
    TAOS_CHECK_EXIT(tEncodeSReplica(&encoder, pReplica));
3,680!
9325
  }
9326
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->lastIndex));
736!
9327
  tEndEncode(&encoder);
368✔
9328

9329
_exit:
368✔
9330
  if (code) {
368!
9331
    tlen = code;
×
9332
  } else {
9333
    tlen = encoder.pos;
368✔
9334
  }
9335
  tEncoderClear(&encoder);
368✔
9336
  return tlen;
368✔
9337
}
9338

9339
int32_t tDeserializeSDCreateMnodeReq(void *buf, int32_t bufLen, SDCreateMnodeReq *pReq) {
186✔
9340
  SDecoder decoder = {0};
186✔
9341
  int32_t  code = 0;
186✔
9342
  int32_t  lino;
9343
  tDecoderInit(&decoder, buf, bufLen);
186✔
9344

9345
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
186!
9346
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->replica));
372!
9347
  for (int32_t i = 0; i < TSDB_MAX_REPLICA; ++i) {
1,116✔
9348
    SReplica *pReplica = &pReq->replicas[i];
930✔
9349
    TAOS_CHECK_EXIT(tDecodeSReplica(&decoder, pReplica));
930!
9350
  }
9351
  if (!tDecodeIsEnd(&decoder)) {
186!
9352
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->learnerReplica));
372!
9353
    for (int32_t i = 0; i < TSDB_MAX_LEARNER_REPLICA; ++i) {
2,046✔
9354
      SReplica *pReplica = &pReq->learnerReplicas[i];
1,860✔
9355
      TAOS_CHECK_EXIT(tDecodeSReplica(&decoder, pReplica));
1,860!
9356
    }
9357
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->lastIndex));
372!
9358
  }
9359
  tEndDecode(&decoder);
186✔
9360

9361
_exit:
186✔
9362
  tDecoderClear(&decoder);
186✔
9363
  return code;
186✔
9364
}
9365

9366
int32_t tSerializeSVArbHeartBeatReq(void *buf, int32_t bufLen, SVArbHeartBeatReq *pReq) {
304✔
9367
  SEncoder encoder = {0};
304✔
9368
  int32_t  code = 0;
304✔
9369
  int32_t  lino;
9370
  int32_t  tlen;
9371
  tEncoderInit(&encoder, buf, bufLen);
304✔
9372

9373
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
304!
9374
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->dnodeId));
608!
9375
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->arbToken));
608!
9376
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->arbTerm));
608!
9377

9378
  int32_t size = taosArrayGetSize(pReq->hbMembers);
304✔
9379
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, size));
304!
9380
  for (int32_t i = 0; i < size; i++) {
640✔
9381
    SVArbHbReqMember *pMember = taosArrayGet(pReq->hbMembers, i);
336✔
9382
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMember->vgId));
672!
9383
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMember->hbSeq));
672!
9384
  }
9385

9386
  tEndEncode(&encoder);
304✔
9387

9388
_exit:
304✔
9389
  if (code) {
304!
9390
    tlen = code;
×
9391
  } else {
9392
    tlen = encoder.pos;
304✔
9393
  }
9394
  tEncoderClear(&encoder);
304✔
9395
  return tlen;
304✔
9396
}
9397

9398
int32_t tDeserializeSVArbHeartBeatReq(void *buf, int32_t bufLen, SVArbHeartBeatReq *pReq) {
139✔
9399
  SDecoder decoder = {0};
139✔
9400
  int32_t  code = 0;
139✔
9401
  int32_t  lino;
9402
  tDecoderInit(&decoder, buf, bufLen);
139✔
9403

9404
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
139!
9405
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->dnodeId));
278!
9406
  if ((pReq->arbToken = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
139!
9407
    TAOS_CHECK_EXIT(terrno);
×
9408
  }
9409
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->arbToken));
139!
9410
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->arbTerm));
278!
9411

9412
  if ((pReq->hbMembers = taosArrayInit(16, sizeof(SVArbHbReqMember))) == NULL) {
139!
9413
    TAOS_CHECK_EXIT(terrno);
×
9414
  }
9415
  int32_t size = 0;
139✔
9416
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &size));
139!
9417
  for (int32_t i = 0; i < size; i++) {
294✔
9418
    SVArbHbReqMember member = {0};
155✔
9419
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &member.vgId));
155!
9420
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &member.hbSeq));
155!
9421
    if (taosArrayPush(pReq->hbMembers, &member) == NULL) {
310!
9422
      TAOS_CHECK_EXIT(terrno);
×
9423
    }
9424
  }
9425

9426
  tEndDecode(&decoder);
139✔
9427

9428
_exit:
139✔
9429
  tDecoderClear(&decoder);
139✔
9430
  return code;
139✔
9431
}
9432

9433
void tFreeSVArbHeartBeatReq(SVArbHeartBeatReq *pReq) {
139✔
9434
  if (!pReq) return;
139!
9435
  taosMemoryFree(pReq->arbToken);
139!
9436
  taosArrayDestroy(pReq->hbMembers);
139✔
9437
}
9438

9439
int32_t tSerializeSVArbHeartBeatRsp(void *buf, int32_t bufLen, SVArbHeartBeatRsp *pRsp) {
278✔
9440
  SEncoder encoder = {0};
278✔
9441
  int32_t  code = 0;
278✔
9442
  int32_t  lino;
9443
  int32_t  tlen;
9444
  tEncoderInit(&encoder, buf, bufLen);
278✔
9445

9446
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
278!
9447
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->arbToken));
556!
9448
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->dnodeId));
556!
9449
  int32_t sz = taosArrayGetSize(pRsp->hbMembers);
278✔
9450
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, sz));
278!
9451
  for (int32_t i = 0; i < sz; i++) {
588✔
9452
    SVArbHbRspMember *pMember = taosArrayGet(pRsp->hbMembers, i);
310✔
9453
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMember->vgId));
620!
9454
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMember->hbSeq));
620!
9455
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pMember->memberToken));
620!
9456
  }
9457
  tEndEncode(&encoder);
278✔
9458

9459
_exit:
278✔
9460
  if (code) {
278!
9461
    tlen = code;
×
9462
  } else {
9463
    tlen = encoder.pos;
278✔
9464
  }
9465
  tEncoderClear(&encoder);
278✔
9466
  return tlen;
278✔
9467
}
9468

9469
int32_t tDeserializeSVArbHeartBeatRsp(void *buf, int32_t bufLen, SVArbHeartBeatRsp *pRsp) {
149✔
9470
  SDecoder decoder = {0};
149✔
9471
  int32_t  code = 0;
149✔
9472
  int32_t  lino;
9473
  tDecoderInit(&decoder, buf, bufLen);
149✔
9474

9475
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
149!
9476
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->arbToken));
149!
9477
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->dnodeId));
298!
9478
  int32_t sz = 0;
149✔
9479
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &sz));
149!
9480
  if ((pRsp->hbMembers = taosArrayInit(sz, sizeof(SVArbHbRspMember))) == NULL) {
149!
9481
    TAOS_CHECK_EXIT(terrno);
×
9482
  }
9483
  for (int32_t i = 0; i < sz; i++) {
314✔
9484
    SVArbHbRspMember hbMember = {0};
165✔
9485
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &hbMember.vgId));
165!
9486
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &hbMember.hbSeq));
165!
9487
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, hbMember.memberToken));
165!
9488
    if (taosArrayPush(pRsp->hbMembers, &hbMember) == NULL) {
330!
9489
      TAOS_CHECK_EXIT(terrno);
×
9490
    }
9491
  }
9492
  tEndDecode(&decoder);
149✔
9493

9494
_exit:
149✔
9495
  tDecoderClear(&decoder);
149✔
9496
  return code;
149✔
9497
}
9498

9499
void tFreeSVArbHeartBeatRsp(SVArbHeartBeatRsp *pRsp) {
288✔
9500
  if (NULL == pRsp) {
288!
9501
    return;
×
9502
  }
9503
  taosArrayDestroy(pRsp->hbMembers);
288✔
9504
}
9505

9506
int32_t tSerializeSVArbCheckSyncReq(void *buf, int32_t bufLen, SVArbCheckSyncReq *pReq) {
48✔
9507
  SEncoder encoder = {0};
48✔
9508
  int32_t  code = 0;
48✔
9509
  int32_t  lino;
9510
  int32_t  tlen;
9511
  tEncoderInit(&encoder, buf, bufLen);
48✔
9512

9513
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
48!
9514
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->arbToken));
96!
9515
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->arbTerm));
96!
9516
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->member0Token));
96!
9517
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->member1Token));
96!
9518

9519
  tEndEncode(&encoder);
48✔
9520

9521
_exit:
48✔
9522
  if (code) {
48!
9523
    tlen = code;
×
9524
  } else {
9525
    tlen = encoder.pos;
48✔
9526
  }
9527
  tEncoderClear(&encoder);
48✔
9528
  return tlen;
48✔
9529
}
9530

9531
int32_t tDeserializeSVArbCheckSyncReq(void *buf, int32_t bufLen, SVArbCheckSyncReq *pReq) {
26✔
9532
  SDecoder decoder = {0};
26✔
9533
  int32_t  code = 0;
26✔
9534
  int32_t  lino;
9535
  tDecoderInit(&decoder, buf, bufLen);
26✔
9536

9537
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
26!
9538
  if ((pReq->arbToken = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
26!
9539
    TAOS_CHECK_EXIT(terrno);
×
9540
  }
9541
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->arbToken));
26!
9542
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->arbTerm));
52!
9543
  if ((pReq->member0Token = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
26!
9544
    TAOS_CHECK_EXIT(terrno);
×
9545
  }
9546
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->member0Token));
26!
9547
  if ((pReq->member1Token = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
26!
9548
    TAOS_CHECK_EXIT(terrno);
×
9549
  }
9550
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->member1Token));
26!
9551

9552
  tEndDecode(&decoder);
26✔
9553

9554
_exit:
26✔
9555
  tDecoderClear(&decoder);
26✔
9556
  return code;
26✔
9557
}
9558

9559
void tFreeSVArbCheckSyncReq(SVArbCheckSyncReq *pRsp) {
26✔
9560
  if (NULL == pRsp) {
26!
9561
    return;
×
9562
  }
9563
  taosMemoryFreeClear(pRsp->arbToken);
26!
9564
  taosMemoryFreeClear(pRsp->member0Token);
26!
9565
  taosMemoryFreeClear(pRsp->member1Token);
26!
9566
}
9567

9568
int32_t tSerializeSVArbCheckSyncRsp(void *buf, int32_t bufLen, SVArbCheckSyncRsp *pRsp) {
10✔
9569
  SEncoder encoder = {0};
10✔
9570
  int32_t  code = 0;
10✔
9571
  int32_t  lino;
9572
  int32_t  tlen;
9573
  tEncoderInit(&encoder, buf, bufLen);
10✔
9574

9575
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
10!
9576
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->arbToken));
20!
9577
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->member0Token));
20!
9578
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->member1Token));
20!
9579
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->vgId));
20!
9580
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->errCode));
20!
9581

9582
  tEndEncode(&encoder);
10✔
9583

9584
_exit:
10✔
9585
  if (code) {
10!
9586
    tlen = code;
×
9587
  } else {
9588
    tlen = encoder.pos;
10✔
9589
  }
9590
  tEncoderClear(&encoder);
10✔
9591
  return tlen;
10✔
9592
}
9593

9594
int32_t tDeserializeSVArbCheckSyncRsp(void *buf, int32_t bufLen, SVArbCheckSyncRsp *pRsp) {
6✔
9595
  SDecoder decoder = {0};
6✔
9596
  int32_t  code = 0;
6✔
9597
  int32_t  lino;
9598
  tDecoderInit(&decoder, buf, bufLen);
6✔
9599

9600
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
6!
9601
  if ((pRsp->arbToken = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
6!
9602
    TAOS_CHECK_EXIT(terrno);
×
9603
  }
9604
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->arbToken));
6!
9605
  if ((pRsp->member0Token = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
6!
9606
    TAOS_CHECK_EXIT(terrno);
×
9607
  }
9608
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->member0Token));
6!
9609
  if ((pRsp->member1Token = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
6!
9610
    TAOS_CHECK_EXIT(terrno);
×
9611
  }
9612
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->member1Token));
6!
9613
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->vgId));
12!
9614
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->errCode));
12!
9615

9616
  tEndDecode(&decoder);
6✔
9617

9618
_exit:
6✔
9619
  tDecoderClear(&decoder);
6✔
9620
  return code;
6✔
9621
}
9622

9623
void tFreeSVArbCheckSyncRsp(SVArbCheckSyncRsp *pRsp) {
6✔
9624
  if (NULL == pRsp) {
6!
9625
    return;
×
9626
  }
9627
  taosMemoryFreeClear(pRsp->arbToken);
6!
9628
  taosMemoryFreeClear(pRsp->member0Token);
6!
9629
  taosMemoryFreeClear(pRsp->member1Token);
6!
9630
}
9631

9632
int32_t tSerializeSVArbSetAssignedLeaderReq(void *buf, int32_t bufLen, SVArbSetAssignedLeaderReq *pReq) {
10✔
9633
  SEncoder encoder = {0};
10✔
9634
  int32_t  code = 0;
10✔
9635
  int32_t  lino;
9636
  int32_t  tlen;
9637
  tEncoderInit(&encoder, buf, bufLen);
10✔
9638

9639
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
10!
9640
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->arbToken));
20!
9641
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->arbTerm));
20!
9642
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->memberToken));
20!
9643
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->force));
20!
9644

9645
  tEndEncode(&encoder);
10✔
9646

9647
_exit:
10✔
9648
  if (code) {
10!
9649
    tlen = code;
×
9650
  } else {
9651
    tlen = encoder.pos;
10✔
9652
  }
9653
  tEncoderClear(&encoder);
10✔
9654
  return tlen;
10✔
9655
}
9656

9657
int32_t tDeserializeSVArbSetAssignedLeaderReq(void *buf, int32_t bufLen, SVArbSetAssignedLeaderReq *pReq) {
5✔
9658
  SDecoder decoder = {0};
5✔
9659
  int32_t  code = 0;
5✔
9660
  int32_t  lino;
9661
  tDecoderInit(&decoder, buf, bufLen);
5✔
9662

9663
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
5!
9664
  if ((pReq->arbToken = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
5!
9665
    TAOS_CHECK_EXIT(terrno);
×
9666
  }
9667
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->arbToken));
5!
9668
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->arbTerm));
10!
9669
  if ((pReq->memberToken = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
5!
9670
    TAOS_CHECK_EXIT(terrno);
×
9671
  }
9672
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->memberToken));
5!
9673
  if (!tDecodeIsEnd(&decoder)) {
5!
9674
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->force));
10!
9675
  }
9676

9677
  tEndDecode(&decoder);
5✔
9678

9679
_exit:
5✔
9680
  tDecoderClear(&decoder);
5✔
9681
  return code;
5✔
9682
}
9683

9684
void tFreeSVArbSetAssignedLeaderReq(SVArbSetAssignedLeaderReq *pReq) {
5✔
9685
  if (NULL == pReq) {
5!
9686
    return;
×
9687
  }
9688
  taosMemoryFreeClear(pReq->arbToken);
5!
9689
  taosMemoryFreeClear(pReq->memberToken);
5!
9690
}
9691

9692
int32_t tSerializeSVArbSetAssignedLeaderRsp(void *buf, int32_t bufLen, SVArbSetAssignedLeaderRsp *pRsp) {
4✔
9693
  SEncoder encoder = {0};
4✔
9694
  int32_t  code = 0;
4✔
9695
  int32_t  lino;
9696
  int32_t  tlen;
9697
  tEncoderInit(&encoder, buf, bufLen);
4✔
9698

9699
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4!
9700
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->arbToken));
8!
9701
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->memberToken));
8!
9702
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->vgId));
8!
9703

9704
  tEndEncode(&encoder);
4✔
9705

9706
_exit:
4✔
9707
  if (code) {
4!
9708
    tlen = code;
×
9709
  } else {
9710
    tlen = encoder.pos;
4✔
9711
  }
9712
  tEncoderClear(&encoder);
4✔
9713
  return tlen;
4✔
9714
}
9715

9716
int32_t tDeserializeSVArbSetAssignedLeaderRsp(void *buf, int32_t bufLen, SVArbSetAssignedLeaderRsp *pRsp) {
2✔
9717
  SDecoder decoder = {0};
2✔
9718
  int32_t  code = 0;
2✔
9719
  int32_t  lino;
9720
  tDecoderInit(&decoder, buf, bufLen);
2✔
9721

9722
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2!
9723
  if ((pRsp->arbToken = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
2!
9724
    TAOS_CHECK_EXIT(terrno);
×
9725
  }
9726
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->arbToken));
2!
9727
  if ((pRsp->memberToken = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
2!
9728
    TAOS_CHECK_EXIT(terrno);
×
9729
  }
9730
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->memberToken));
2!
9731
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->vgId));
4!
9732

9733
  tEndDecode(&decoder);
2✔
9734

9735
_exit:
2✔
9736
  tDecoderClear(&decoder);
2✔
9737
  return code;
2✔
9738
}
9739

9740
void tFreeSVArbSetAssignedLeaderRsp(SVArbSetAssignedLeaderRsp *pRsp) {
2✔
9741
  if (NULL == pRsp) {
2!
9742
    return;
×
9743
  }
9744
  taosMemoryFreeClear(pRsp->arbToken);
2!
9745
  taosMemoryFreeClear(pRsp->memberToken);
2!
9746
}
9747

9748
int32_t tSerializeSMArbUpdateGroupBatchReq(void *buf, int32_t bufLen, SMArbUpdateGroupBatchReq *pReq) {
46✔
9749
  SEncoder encoder = {0};
46✔
9750
  int32_t  code = 0;
46✔
9751
  int32_t  lino;
9752
  int32_t  tlen;
9753
  tEncoderInit(&encoder, buf, bufLen);
46✔
9754

9755
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
46!
9756

9757
  int32_t sz = taosArrayGetSize(pReq->updateArray);
46✔
9758
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, sz));
46!
9759

9760
  for (int32_t i = 0; i < sz; i++) {
96✔
9761
    SMArbUpdateGroup *pGroup = taosArrayGet(pReq->updateArray, i);
50✔
9762
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pGroup->vgId));
100!
9763
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pGroup->dbUid));
100!
9764
    for (int j = 0; j < TSDB_ARB_GROUP_MEMBER_NUM; j++) {
150✔
9765
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pGroup->members[j].dnodeId));
200!
9766
      TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pGroup->members[j].token));
200!
9767
    }
9768
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pGroup->isSync));
100!
9769
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pGroup->assignedLeader.dnodeId));
100!
9770
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pGroup->assignedLeader.token));
100!
9771
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pGroup->version));
100!
9772
  }
9773

9774
  for (int32_t i = 0; i < sz; i++) {
96✔
9775
    SMArbUpdateGroup *pGroup = taosArrayGet(pReq->updateArray, i);
50✔
9776
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, pGroup->assignedLeader.acked));
100!
9777
  }
9778

9779
  for (int32_t i = 0; i < sz; i++) {
96✔
9780
    SMArbUpdateGroup *pGroup = taosArrayGet(pReq->updateArray, i);
50✔
9781
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pGroup->code));
100!
9782
    TAOS_CHECK_EXIT(tEncodeI64(&encoder, pGroup->updateTimeMs));
100!
9783
  }
9784

9785
  tEndEncode(&encoder);
46✔
9786

9787
_exit:
46✔
9788
  if (code) {
46!
9789
    tlen = code;
×
9790
  } else {
9791
    tlen = encoder.pos;
46✔
9792
  }
9793
  tEncoderClear(&encoder);
46✔
9794
  return tlen;
46✔
9795
}
9796

9797
int32_t tDeserializeSMArbUpdateGroupBatchReq(void *buf, int32_t bufLen, SMArbUpdateGroupBatchReq *pReq) {
23✔
9798
  SDecoder decoder = {0};
23✔
9799
  int32_t  code = 0;
23✔
9800
  int32_t  lino;
9801
  tDecoderInit(&decoder, buf, bufLen);
23✔
9802

9803
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
23!
9804
  int32_t sz = 0;
23✔
9805
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &sz));
23!
9806

9807
  SArray *updateArray = taosArrayInit(sz, sizeof(SMArbUpdateGroup));
23✔
9808
  if (!updateArray) {
23!
9809
    TAOS_CHECK_EXIT(terrno);
×
9810
  }
9811

9812
  for (int32_t i = 0; i < sz; i++) {
48✔
9813
    SMArbUpdateGroup group = {0};
25✔
9814
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &group.vgId));
25!
9815
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &group.dbUid));
25!
9816
    for (int j = 0; j < TSDB_ARB_GROUP_MEMBER_NUM; j++) {
75✔
9817
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &group.members[j].dnodeId));
100!
9818
      if ((group.members[j].token = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
50!
9819
        TAOS_CHECK_EXIT(terrno);
×
9820
      }
9821
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, group.members[j].token));
50!
9822
    }
9823
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &group.isSync));
25!
9824
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &group.assignedLeader.dnodeId));
25!
9825
    if ((group.assignedLeader.token = taosMemoryMalloc(TSDB_ARB_TOKEN_SIZE)) == NULL) {
25!
9826
      TAOS_CHECK_EXIT(terrno);
×
9827
    }
9828
    TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, group.assignedLeader.token));
25!
9829
    TAOS_CHECK_EXIT(tDecodeI64(&decoder, &group.version));
25!
9830
    group.assignedLeader.acked = false;
25✔
9831

9832
    if (taosArrayPush(updateArray, &group) == NULL) {
25!
9833
      TAOS_CHECK_EXIT(terrno);
×
9834
    }
9835
  }
9836

9837
  if (!tDecodeIsEnd(&decoder)) {
23!
9838
    for (int32_t i = 0; i < sz; i++) {
48✔
9839
      SMArbUpdateGroup *pGroup = taosArrayGet(updateArray, i);
25✔
9840
      TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pGroup->assignedLeader.acked));
50!
9841
    }
9842
  }
9843

9844
  if (!tDecodeIsEnd(&decoder)) {
23!
9845
    for (int32_t i = 0; i < sz; i++) {
48✔
9846
      SMArbUpdateGroup *pGroup = taosArrayGet(updateArray, i);
25✔
9847
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pGroup->code));
50!
9848
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pGroup->updateTimeMs));
50!
9849
    }
9850
  }
9851

9852
  pReq->updateArray = updateArray;
23✔
9853

9854
  tEndDecode(&decoder);
23✔
9855

9856
_exit:
23✔
9857
  tDecoderClear(&decoder);
23✔
9858
  return code;
23✔
9859
}
9860

9861
void tFreeSMArbUpdateGroupBatchReq(SMArbUpdateGroupBatchReq *pReq) {
23✔
9862
  if (NULL == pReq || NULL == pReq->updateArray) {
23!
9863
    return;
×
9864
  }
9865

9866
  int32_t sz = taosArrayGetSize(pReq->updateArray);
23✔
9867
  for (int32_t i = 0; i < sz; i++) {
48✔
9868
    SMArbUpdateGroup *pGroup = taosArrayGet(pReq->updateArray, i);
25✔
9869
    for (int j = 0; j < TSDB_ARB_GROUP_MEMBER_NUM; j++) {
75✔
9870
      taosMemoryFreeClear(pGroup->members[j].token);
50!
9871
    }
9872
    taosMemoryFreeClear(pGroup->assignedLeader.token);
25!
9873
  }
9874
  taosArrayDestroy(pReq->updateArray);
23✔
9875
}
9876

9877
int32_t tSerializeSServerStatusRsp(void *buf, int32_t bufLen, SServerStatusRsp *pRsp) {
8✔
9878
  SEncoder encoder = {0};
8✔
9879
  int32_t  code = 0;
8✔
9880
  int32_t  lino;
9881
  int32_t  tlen;
9882
  tEncoderInit(&encoder, buf, bufLen);
8✔
9883

9884
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
8!
9885
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->statusCode));
16!
9886
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->details));
16!
9887

9888
  tEndEncode(&encoder);
8✔
9889

9890
_exit:
8✔
9891
  if (code) {
8!
9892
    tlen = code;
×
9893
  } else {
9894
    tlen = encoder.pos;
8✔
9895
  }
9896
  tEncoderClear(&encoder);
8✔
9897
  return tlen;
8✔
9898
}
9899

9900
int32_t tDeserializeSServerStatusRsp(void *buf, int32_t bufLen, SServerStatusRsp *pRsp) {
3✔
9901
  SDecoder decoder = {0};
3✔
9902
  int32_t  code = 0;
3✔
9903
  int32_t  lino;
9904
  tDecoderInit(&decoder, buf, bufLen);
3✔
9905

9906
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3!
9907
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->statusCode));
6!
9908
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->details));
3!
9909

9910
  tEndDecode(&decoder);
3✔
9911
_exit:
3✔
9912
  tDecoderClear(&decoder);
3✔
9913
  return code;
3✔
9914
}
9915

9916
int32_t tSerializeSExplainRsp(void *buf, int32_t bufLen, SExplainRsp *pRsp) {
1,167,722✔
9917
  SEncoder encoder = {0};
1,167,722✔
9918
  int32_t  code = 0;
1,167,722✔
9919
  int32_t  lino;
9920
  int32_t  tlen;
9921
  tEncoderInit(&encoder, buf, bufLen);
1,167,722✔
9922

9923
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
1,167,942!
9924
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->numOfPlans));
2,335,984!
9925
  for (int32_t i = 0; i < pRsp->numOfPlans; ++i) {
3,919,230✔
9926
    SExplainExecInfo *info = &pRsp->subplanInfo[i];
2,751,238✔
9927
    TAOS_CHECK_EXIT(tEncodeDouble(&encoder, info->startupCost));
5,502,476!
9928
    TAOS_CHECK_EXIT(tEncodeDouble(&encoder, info->totalCost));
5,502,476!
9929
    TAOS_CHECK_EXIT(tEncodeU64(&encoder, info->numOfRows));
5,502,476!
9930
    TAOS_CHECK_EXIT(tEncodeU32(&encoder, info->verboseLen));
5,502,476!
9931
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, info->verboseInfo, info->verboseLen));
5,502,476!
9932
  }
9933

9934
  tEndEncode(&encoder);
1,167,992✔
9935

9936
_exit:
1,167,972✔
9937
  if (code) {
1,167,972!
9938
    tlen = code;
×
9939
  } else {
9940
    tlen = encoder.pos;
1,167,972✔
9941
  }
9942
  tEncoderClear(&encoder);
1,167,972✔
9943
  return tlen;
1,167,943✔
9944
}
9945

9946
int32_t tDeserializeSExplainRsp(void *buf, int32_t bufLen, SExplainRsp *pRsp) {
30✔
9947
  SDecoder decoder = {0};
30✔
9948
  int32_t  code = 0;
30✔
9949
  int32_t  lino;
9950
  tDecoderInit(&decoder, buf, bufLen);
30✔
9951

9952
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
30!
9953
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->numOfPlans));
×
9954
  if (pRsp->numOfPlans > 0) {
×
9955
    pRsp->subplanInfo = taosMemoryCalloc(pRsp->numOfPlans, sizeof(SExplainExecInfo));
×
9956
    if (pRsp->subplanInfo == NULL) {
×
9957
      TAOS_CHECK_EXIT(terrno);
×
9958
    }
9959
  }
9960
  for (int32_t i = 0; i < pRsp->numOfPlans; ++i) {
×
9961
    TAOS_CHECK_EXIT(tDecodeDouble(&decoder, &pRsp->subplanInfo[i].startupCost));
×
9962
    TAOS_CHECK_EXIT(tDecodeDouble(&decoder, &pRsp->subplanInfo[i].totalCost));
×
9963
    TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pRsp->subplanInfo[i].numOfRows));
×
9964
    TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pRsp->subplanInfo[i].verboseLen));
×
9965
    TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, &pRsp->subplanInfo[i].verboseInfo, NULL));
×
9966
  }
9967

9968
  tEndDecode(&decoder);
×
9969

9970
_exit:
30✔
9971
  tDecoderClear(&decoder);
30✔
9972
  return code;
30✔
9973
}
9974

9975
void tFreeSExplainRsp(SExplainRsp *pRsp) {
30✔
9976
  if (NULL == pRsp) {
30!
9977
    return;
×
9978
  }
9979

9980
  for (int32_t i = 0; i < pRsp->numOfPlans; ++i) {
30!
9981
    SExplainExecInfo *pExec = pRsp->subplanInfo + i;
×
9982
    taosMemoryFree(pExec->verboseInfo);
×
9983
  }
9984

9985
  taosMemoryFreeClear(pRsp->subplanInfo);
30!
9986
}
9987

9988
int32_t tSerializeSBatchReq(void *buf, int32_t bufLen, SBatchReq *pReq) {
102,302✔
9989
  int32_t code = 0;
102,302✔
9990
  int32_t lino;
9991
  int32_t headLen = sizeof(SMsgHead);
102,302✔
9992
  if (buf != NULL) {
102,302✔
9993
    buf = (char *)buf + headLen;
51,174✔
9994
    bufLen -= headLen;
51,174✔
9995
  }
9996

9997
  SEncoder encoder = {0};
102,302✔
9998
  tEncoderInit(&encoder, buf, bufLen);
102,302✔
9999
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
102,321!
10000

10001
  int32_t num = taosArrayGetSize(pReq->pMsgs);
102,327✔
10002
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
102,317!
10003
  for (int32_t i = 0; i < num; ++i) {
246,670✔
10004
    SBatchMsg *pMsg = taosArrayGet(pReq->pMsgs, i);
144,363✔
10005
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMsg->msgIdx));
288,706!
10006
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMsg->msgType));
288,706!
10007
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMsg->msgLen));
288,706!
10008
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pMsg->msg, pMsg->msgLen));
288,706!
10009
  }
10010

10011
  tEndEncode(&encoder);
102,307✔
10012

10013
_exit:
102,329✔
10014
  if (code) {
102,329!
10015
    tEncoderClear(&encoder);
×
10016
    return code;
×
10017
  } else {
10018
    int32_t tlen = encoder.pos;
102,329✔
10019
    tEncoderClear(&encoder);
102,329✔
10020

10021
    if (buf != NULL) {
102,331✔
10022
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
51,160✔
10023
      pHead->vgId = htonl(pReq->header.vgId);
51,160✔
10024
      pHead->contLen = htonl(tlen + headLen);
51,160✔
10025
    }
10026

10027
    return tlen + headLen;
102,331✔
10028
  }
10029
}
10030

10031
int32_t tDeserializeSBatchReq(void *buf, int32_t bufLen, SBatchReq *pReq) {
3,392,876✔
10032
  int32_t   headLen = sizeof(SMsgHead);
3,392,876✔
10033
  int32_t   code = 0;
3,392,876✔
10034
  int32_t   lino;
10035
  SMsgHead *pHead = buf;
3,392,876✔
10036
  pHead->vgId = pReq->header.vgId;
3,392,876✔
10037
  pHead->contLen = pReq->header.contLen;
3,392,876✔
10038

10039
  SDecoder decoder = {0};
3,392,876✔
10040
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
3,392,876✔
10041

10042
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
3,391,753!
10043

10044
  int32_t num = 0;
3,393,420✔
10045
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
3,393,194!
10046
  if (num <= 0) {
3,393,194!
10047
    pReq->pMsgs = NULL;
×
10048
    tEndDecode(&decoder);
×
10049
    tDecoderClear(&decoder);
×
10050
    return 0;
92✔
10051
  }
10052

10053
  pReq->pMsgs = taosArrayInit(num, sizeof(SBatchMsg));
3,393,194✔
10054
  if (NULL == pReq->pMsgs) {
3,393,157!
10055
    TAOS_CHECK_EXIT(terrno);
×
10056
  }
10057
  for (int32_t i = 0; i < num; ++i) {
13,408,162✔
10058
    SBatchMsg msg = {0};
10,016,147✔
10059
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &msg.msgIdx));
10,016,667!
10060
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &msg.msgType));
10,016,587!
10061
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &msg.msgLen));
10,016,827!
10062
    TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, &msg.msg, NULL));
10,016,029!
10063
    if (NULL == taosArrayPush(pReq->pMsgs, &msg)) {
20,031,012!
10064
      TAOS_CHECK_EXIT(terrno);
×
10065
    }
10066
  }
10067

10068
  tEndDecode(&decoder);
3,392,015✔
10069

10070
_exit:
3,392,590✔
10071
  tDecoderClear(&decoder);
3,392,590✔
10072
  return code;
3,393,414✔
10073
}
10074

10075
int32_t tSerializeSBatchRsp(void *buf, int32_t bufLen, SBatchRsp *pRsp) {
6,786,618✔
10076
  SEncoder encoder = {0};
6,786,618✔
10077
  int32_t  code = 0;
6,786,618✔
10078
  int32_t  lino;
10079
  int32_t  tlen;
10080
  tEncoderInit(&encoder, buf, bufLen);
6,786,618✔
10081
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
6,786,664!
10082

10083
  int32_t num = taosArrayGetSize(pRsp->pRsps);
6,786,991✔
10084
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
6,786,304!
10085
  for (int32_t i = 0; i < num; ++i) {
26,804,501✔
10086
    SBatchRspMsg *pMsg = taosArrayGet(pRsp->pRsps, i);
20,034,403✔
10087
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMsg->reqType));
40,036,394!
10088
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMsg->msgIdx));
40,036,394!
10089
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMsg->msgLen));
40,036,394!
10090
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, pMsg->rspCode));
40,036,394!
10091
    TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pMsg->msg, pMsg->msgLen));
40,036,394!
10092
  }
10093

10094
  tEndEncode(&encoder);
6,770,098✔
10095

10096
_exit:
6,787,256✔
10097
  if (code) {
6,787,256!
10098
    tlen = code;
×
10099
  } else {
10100
    tlen = encoder.pos;
6,787,256✔
10101
  }
10102
  tEncoderClear(&encoder);
6,787,256✔
10103
  return tlen;
6,787,289✔
10104
}
10105

10106
int32_t tDeserializeSBatchRsp(void *buf, int32_t bufLen, SBatchRsp *pRsp) {
50,754✔
10107
  SDecoder decoder = {0};
50,754✔
10108
  int32_t  code = 0;
50,754✔
10109
  int32_t  lino;
10110
  tDecoderInit(&decoder, (char *)buf, bufLen);
50,754✔
10111

10112
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
50,763!
10113

10114
  int32_t num = 0;
50,764✔
10115
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
50,760!
10116
  if (num <= 0) {
50,760!
10117
    pRsp->pRsps = NULL;
×
10118
    tEndDecode(&decoder);
×
10119

10120
    tDecoderClear(&decoder);
×
10121
    return 0;
2✔
10122
  }
10123

10124
  pRsp->pRsps = taosArrayInit(num, sizeof(SBatchRspMsg));
50,760✔
10125
  if (NULL == pRsp->pRsps) {
50,760!
10126
    TAOS_CHECK_EXIT(terrno);
×
10127
  }
10128
  for (int32_t i = 0; i < num; ++i) {
122,550✔
10129
    SBatchRspMsg msg = {0};
71,791✔
10130
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &msg.reqType));
71,788!
10131
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &msg.msgIdx));
71,787!
10132
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &msg.msgLen));
71,787!
10133
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &msg.rspCode));
71,786!
10134
    TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, &msg.msg, NULL));
71,792!
10135
    if (NULL == taosArrayPush(pRsp->pRsps, &msg)) {
143,582!
10136
      TAOS_CHECK_EXIT(terrno);
×
10137
    }
10138
  }
10139

10140
  tEndDecode(&decoder);
50,759✔
10141

10142
_exit:
50,761✔
10143
  tDecoderClear(&decoder);
50,761✔
10144
  return code;
50,761✔
10145
}
10146

10147
int32_t tSerializeSMqAskEpReq(void *buf, int32_t bufLen, SMqAskEpReq *pReq) {
1,222✔
10148
  SEncoder encoder = {0};
1,222✔
10149
  int32_t  code = 0;
1,222✔
10150
  int32_t  lino;
10151
  int32_t  tlen;
10152
  tEncoderInit(&encoder, buf, bufLen);
1,222✔
10153

10154
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
1,222!
10155
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->consumerId));
2,444!
10156
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->epoch));
2,444!
10157
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->cgroup));
2,444!
10158

10159
  tEndEncode(&encoder);
1,222✔
10160

10161
_exit:
1,222✔
10162
  if (code) {
1,222!
10163
    tlen = code;
×
10164
  } else {
10165
    tlen = encoder.pos;
1,222✔
10166
  }
10167
  tEncoderClear(&encoder);
1,222✔
10168
  return tlen;
1,222✔
10169
}
10170

10171
int32_t tDeserializeSMqAskEpReq(void *buf, int32_t bufLen, SMqAskEpReq *pReq) {
10,391✔
10172
  SDecoder decoder = {0};
10,391✔
10173
  int32_t  code = 0;
10,391✔
10174
  int32_t  lino;
10175
  tDecoderInit(&decoder, (char *)buf, bufLen);
10,391✔
10176

10177
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
10,391!
10178

10179
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->consumerId));
20,782!
10180
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->epoch));
20,782!
10181
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->cgroup));
10,391!
10182

10183
  tEndDecode(&decoder);
10,391✔
10184

10185
_exit:
10,391✔
10186
  tDecoderClear(&decoder);
10,391✔
10187
  return code;
10,391✔
10188
}
10189

10190
void tDestroySMqHbRsp(SMqHbRsp *pRsp) { taosArrayDestroy(pRsp->topicPrivileges); }
2,545✔
10191

10192
int32_t tSerializeSMqHbRsp(void *buf, int32_t bufLen, SMqHbRsp *pRsp) {
4,756✔
10193
  SEncoder encoder = {0};
4,756✔
10194
  int32_t  code = 0;
4,756✔
10195
  int32_t  lino;
10196
  int32_t  tlen;
10197
  tEncoderInit(&encoder, buf, bufLen);
4,756✔
10198
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4,756!
10199

10200
  int32_t sz = taosArrayGetSize(pRsp->topicPrivileges);
4,756✔
10201
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, sz));
4,756!
10202
  for (int32_t i = 0; i < sz; ++i) {
8,988✔
10203
    STopicPrivilege *privilege = (STopicPrivilege *)taosArrayGet(pRsp->topicPrivileges, i);
4,232✔
10204
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, privilege->topic));
8,464!
10205
    TAOS_CHECK_EXIT(tEncodeI8(&encoder, privilege->noPrivilege));
8,464!
10206
  }
10207

10208
  if (tEncodeI32(&encoder, pRsp->debugFlag) < 0) return -1;
9,512!
10209
  tEndEncode(&encoder);
4,756✔
10210

10211
_exit:
4,756✔
10212
  if (code) {
4,756!
10213
    tlen = code;
×
10214
  } else {
10215
    tlen = encoder.pos;
4,756✔
10216
  }
10217
  tEncoderClear(&encoder);
4,756✔
10218
  return tlen;
4,756✔
10219
}
10220

10221
int32_t tDeserializeSMqHbRsp(void *buf, int32_t bufLen, SMqHbRsp *pRsp) {
156✔
10222
  SDecoder decoder = {0};
156✔
10223
  int32_t  code = 0;
156✔
10224
  int32_t  lino;
10225
  tDecoderInit(&decoder, (char *)buf, bufLen);
156✔
10226

10227
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
156!
10228

10229
  int32_t sz = 0;
156✔
10230
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &sz));
156!
10231
  if (sz > 0) {
156✔
10232
    pRsp->topicPrivileges = taosArrayInit(sz, sizeof(STopicPrivilege));
133✔
10233
    if (NULL == pRsp->topicPrivileges) {
133!
10234
      TAOS_CHECK_EXIT(terrno);
×
10235
    }
10236
    for (int32_t i = 0; i < sz; ++i) {
266✔
10237
      STopicPrivilege *data = taosArrayReserve(pRsp->topicPrivileges, 1);
133✔
10238
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, data->topic));
133!
10239
      TAOS_CHECK_EXIT(tDecodeI8(&decoder, &data->noPrivilege));
266!
10240
    }
10241
  }
10242

10243
  if (!tDecodeIsEnd(&decoder)) {
156!
10244
    if (tDecodeI32(&decoder, &pRsp->debugFlag) < 0) return -1;
312!
10245
  }
10246
  tEndDecode(&decoder);
156✔
10247

10248
_exit:
156✔
10249
  tDecoderClear(&decoder);
156✔
10250
  return code;
156✔
10251
}
10252

10253
void tDestroySMqHbReq(SMqHbReq *pReq) {
2,554✔
10254
  for (int i = 0; i < taosArrayGetSize(pReq->topics); i++) {
4,762✔
10255
    TopicOffsetRows *vgs = taosArrayGet(pReq->topics, i);
2,208✔
10256
    if (vgs) taosArrayDestroy(vgs->offsetRows);
2,208!
10257
  }
10258
  taosArrayDestroy(pReq->topics);
2,554✔
10259
}
2,554✔
10260

10261
int32_t tSerializeSMqHbReq(void *buf, int32_t bufLen, SMqHbReq *pReq) {
330✔
10262
  SEncoder encoder = {0};
330✔
10263
  int32_t  code = 0;
330✔
10264
  int32_t  lino;
10265
  int32_t  tlen;
10266
  tEncoderInit(&encoder, buf, bufLen);
330✔
10267
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
330!
10268

10269
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->consumerId));
660!
10270
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->epoch));
660!
10271

10272
  int32_t sz = taosArrayGetSize(pReq->topics);
330✔
10273
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, sz));
330!
10274
  for (int32_t i = 0; i < sz; ++i) {
602✔
10275
    TopicOffsetRows *vgs = (TopicOffsetRows *)taosArrayGet(pReq->topics, i);
272✔
10276
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, vgs->topicName));
544!
10277
    int32_t szVgs = taosArrayGetSize(vgs->offsetRows);
272✔
10278
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, szVgs));
272!
10279
    for (int32_t j = 0; j < szVgs; ++j) {
966✔
10280
      OffsetRows *offRows = taosArrayGet(vgs->offsetRows, j);
694✔
10281
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, offRows->vgId));
1,388!
10282
      TAOS_CHECK_EXIT(tEncodeI64(&encoder, offRows->rows));
1,388!
10283
      TAOS_CHECK_EXIT(tEncodeSTqOffsetVal(&encoder, &offRows->offset));
694!
10284
      TAOS_CHECK_EXIT(tEncodeI64(&encoder, offRows->ever));
1,388!
10285
    }
10286
  }
10287

10288
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->pollFlag));
660!
10289
  tEndEncode(&encoder);
330✔
10290

10291
_exit:
330✔
10292
  if (code) {
330!
10293
    tlen = code;
×
10294
  } else {
10295
    tlen = encoder.pos;
330✔
10296
  }
10297
  tEncoderClear(&encoder);
330✔
10298
  return tlen;
330✔
10299
}
10300

10301
int32_t tDeserializeSMqHbReq(void *buf, int32_t bufLen, SMqHbReq *pReq) {
2,389✔
10302
  int32_t  code = 0;
2,389✔
10303
  int32_t  lino;
10304
  SDecoder decoder = {0};
2,389✔
10305
  tDecoderInit(&decoder, (char *)buf, bufLen);
2,389✔
10306

10307
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,389!
10308

10309
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->consumerId));
4,778!
10310
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->epoch));
4,778!
10311
  int32_t sz = 0;
2,389✔
10312
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &sz));
2,389!
10313
  if (sz > 0) {
2,389✔
10314
    pReq->topics = taosArrayInit(sz, sizeof(TopicOffsetRows));
2,063✔
10315
    if (NULL == pReq->topics) {
2,063!
10316
      TAOS_CHECK_EXIT(terrno);
×
10317
    }
10318
    for (int32_t i = 0; i < sz; ++i) {
4,135✔
10319
      TopicOffsetRows *data = taosArrayReserve(pReq->topics, 1);
2,072✔
10320
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, data->topicName));
2,072!
10321
      int32_t szVgs = 0;
2,072✔
10322
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &szVgs));
2,072!
10323
      if (szVgs > 0) {
2,072✔
10324
        data->offsetRows = taosArrayInit(szVgs, sizeof(OffsetRows));
2,069✔
10325
        if (NULL == data->offsetRows) {
2,069!
10326
          TAOS_CHECK_EXIT(terrno);
×
10327
        }
10328
        for (int32_t j = 0; j < szVgs; ++j) {
6,507✔
10329
          OffsetRows *offRows = taosArrayReserve(data->offsetRows, 1);
4,438✔
10330
          TAOS_CHECK_EXIT(tDecodeI32(&decoder, &offRows->vgId));
8,876!
10331
          TAOS_CHECK_EXIT(tDecodeI64(&decoder, &offRows->rows));
8,876!
10332
          TAOS_CHECK_EXIT(tDecodeSTqOffsetVal(&decoder, &offRows->offset));
4,438!
10333
          TAOS_CHECK_EXIT(tDecodeI64(&decoder, &offRows->ever));
8,876!
10334
        }
10335
      }
10336
    }
10337
  }
10338
  if (!tDecodeIsEnd(&decoder)) {
2,389!
10339
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->pollFlag));
4,778!
10340
  }
10341
  tEndDecode(&decoder);
2,389✔
10342

10343
_exit:
2,389✔
10344
  tDecoderClear(&decoder);
2,389✔
10345
  return code;
2,389✔
10346
}
10347

10348
int32_t tSerializeSMqSeekReq(void *buf, int32_t bufLen, SMqSeekReq *pReq) {
4✔
10349
  int32_t code = 0;
4✔
10350
  int32_t lino;
10351
  int32_t headLen = sizeof(SMsgHead);
4✔
10352
  if (buf != NULL) {
4✔
10353
    buf = (char *)buf + headLen;
2✔
10354
    bufLen -= headLen;
2✔
10355
  }
10356
  SEncoder encoder = {0};
4✔
10357
  tEncoderInit(&encoder, buf, bufLen);
4✔
10358
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4!
10359
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->consumerId));
8!
10360
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->subKey));
8!
10361
  tEndEncode(&encoder);
4✔
10362

10363
_exit:
4✔
10364
  if (code) {
4!
10365
    tEncoderClear(&encoder);
×
10366
    return code;
×
10367
  } else {
10368
    int32_t tlen = encoder.pos;
4✔
10369
    tEncoderClear(&encoder);
4✔
10370

10371
    if (buf != NULL) {
4✔
10372
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
2✔
10373
      pHead->vgId = htonl(pReq->head.vgId);
2✔
10374
      pHead->contLen = htonl(tlen + headLen);
2✔
10375
    }
10376

10377
    return tlen + headLen;
4✔
10378
  }
10379
}
10380

10381
int32_t tDeserializeSMqSeekReq(void *buf, int32_t bufLen, SMqSeekReq *pReq) {
6✔
10382
  int32_t  code = 0;
6✔
10383
  int32_t  lino;
10384
  int32_t  headLen = sizeof(SMsgHead);
6✔
10385
  SDecoder decoder = {0};
6✔
10386
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
6✔
10387

10388
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
6!
10389
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->consumerId));
12!
10390
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->subKey));
6!
10391

10392
  tEndDecode(&decoder);
6✔
10393

10394
_exit:
6✔
10395
  tDecoderClear(&decoder);
6✔
10396
  return code;
6✔
10397
}
10398

10399
int32_t tSerializeSSubQueryMsg(void *buf, int32_t bufLen, SSubQueryMsg *pReq) {
300,620✔
10400
  int32_t code = 0;
300,620✔
10401
  int32_t lino;
10402
  int32_t headLen = sizeof(SMsgHead);
300,620✔
10403
  if (buf != NULL) {
300,620✔
10404
    buf = (char *)buf + headLen;
150,327✔
10405
    bufLen -= headLen;
150,327✔
10406
  }
10407

10408
  SEncoder encoder = {0};
300,620✔
10409
  tEncoderInit(&encoder, buf, bufLen);
300,620✔
10410
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
300,630!
10411

10412
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->sId));
601,282!
10413
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->queryId));
601,282!
10414
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->taskId));
601,282!
10415
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->refId));
601,282!
10416
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->execId));
601,282!
10417
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->msgMask));
601,282!
10418
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->taskType));
601,282!
10419
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->explain));
601,282!
10420
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->needFetch));
601,282!
10421
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->compress));
601,282!
10422
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->sqlLen));
601,282!
10423
  TAOS_CHECK_EXIT(tEncodeCStrWithLen(&encoder, pReq->sql, pReq->sqlLen));
601,282!
10424
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->msgLen));
601,282!
10425
  TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (uint8_t *)pReq->msg, pReq->msgLen));
601,282!
10426
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->clientId));
601,282!
10427

10428
  tEndEncode(&encoder);
300,641✔
10429

10430
_exit:
300,638✔
10431
  if (code) {
300,638!
10432
    tEncoderClear(&encoder);
×
10433
    return code;
×
10434
  } else {
10435
    int32_t tlen = encoder.pos;
300,638✔
10436
    tEncoderClear(&encoder);
300,638✔
10437

10438
    if (buf != NULL) {
300,642✔
10439
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
150,344✔
10440
      pHead->vgId = htonl(pReq->header.vgId);
150,344✔
10441
      pHead->contLen = htonl(tlen + headLen);
150,344✔
10442
    }
10443

10444
    return tlen + headLen;
300,642✔
10445
  }
10446
}
10447

10448
int32_t tDeserializeSSubQueryMsg(void *buf, int32_t bufLen, SSubQueryMsg *pReq) {
16,151,893✔
10449
  int32_t   code = 0;
16,151,893✔
10450
  int32_t   lino;
10451
  int32_t   headLen = sizeof(SMsgHead);
16,151,893✔
10452
  SMsgHead *pHead = buf;
16,151,893✔
10453
  pHead->vgId = pReq->header.vgId;
16,151,893✔
10454
  pHead->contLen = pReq->header.contLen;
16,151,893✔
10455

10456
  SDecoder decoder = {0};
16,151,893✔
10457
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
16,151,893✔
10458

10459
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
16,152,651!
10460

10461
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->sId));
32,335,639!
10462
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->queryId));
32,331,761!
10463
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->taskId));
32,322,642!
10464
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->refId));
32,311,760!
10465
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->execId));
32,310,051!
10466
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->msgMask));
32,314,451!
10467
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->taskType));
32,315,559!
10468
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->explain));
32,313,815!
10469
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->needFetch));
32,313,595!
10470
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->compress));
32,314,401!
10471
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->sqlLen));
32,309,215!
10472
  TAOS_CHECK_EXIT(tDecodeCStrAlloc(&decoder, &pReq->sql));
32,322,106!
10473
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->msgLen));
32,325,491!
10474
  TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, (void **)&pReq->msg, NULL));
32,328,594!
10475
  if (!tDecodeIsEnd(&decoder)) {
16,173,803✔
10476
    TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->clientId));
32,312,175!
10477
  } else {
10478
    pReq->clientId = 0;
22,000✔
10479
  }
10480

10481
  tEndDecode(&decoder);
16,182,372✔
10482

10483
_exit:
16,159,460✔
10484
  tDecoderClear(&decoder);
16,159,460✔
10485
  return code;
16,169,071✔
10486
}
10487

10488
void tFreeSSubQueryMsg(SSubQueryMsg *pReq) {
16,162,228✔
10489
  if (NULL == pReq) {
16,162,228!
10490
    return;
×
10491
  }
10492

10493
  taosMemoryFreeClear(pReq->sql);
16,162,228!
10494
  taosMemoryFreeClear(pReq->msg);
16,162,986!
10495
}
10496

10497
int32_t tSerializeSOperatorParam(SEncoder *pEncoder, SOperatorParam *pOpParam) {
1,944✔
10498
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pOpParam->opType));
3,888!
10499
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pOpParam->downstreamIdx));
3,888!
10500
  switch (pOpParam->opType) {
1,944!
10501
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN: {
32✔
10502
      STagScanOperatorParam *pTagScan = (STagScanOperatorParam *)pOpParam->value;
32✔
10503
      TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pTagScan->vcUid));
64!
10504
      break;
32✔
10505
    }
10506
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN: {
1,912✔
10507
      STableScanOperatorParam *pScan = (STableScanOperatorParam *)pOpParam->value;
1,912✔
10508
      TAOS_CHECK_RETURN(tEncodeI8(pEncoder, pScan->tableSeq));
3,824!
10509
      int32_t uidNum = taosArrayGetSize(pScan->pUidList);
1,912✔
10510
      TAOS_CHECK_RETURN(tEncodeI32(pEncoder, uidNum));
1,912!
10511
      for (int32_t m = 0; m < uidNum; ++m) {
113,038✔
10512
        int64_t *pUid = taosArrayGet(pScan->pUidList, m);
111,126✔
10513
        TAOS_CHECK_RETURN(tEncodeI64(pEncoder, *pUid));
222,252!
10514
      }
10515
      if (pScan->pOrgTbInfo) {
1,912✔
10516
        TAOS_CHECK_RETURN(tEncodeBool(pEncoder, true));
64!
10517
        TAOS_CHECK_RETURN(tEncodeI32(pEncoder, pScan->pOrgTbInfo->vgId));
128!
10518
        TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pScan->pOrgTbInfo->tbName));
128!
10519
        int32_t num = taosArrayGetSize(pScan->pOrgTbInfo->colMap);
64✔
10520
        TAOS_CHECK_RETURN(tEncodeI32(pEncoder, num));
64!
10521
        for (int32_t i = 0; i < num; ++i) {
192✔
10522
          SColIdNameKV *pColKV = taosArrayGet(pScan->pOrgTbInfo->colMap, i);
128✔
10523
          TAOS_CHECK_RETURN(tEncodeI16(pEncoder, pColKV->colId));
256!
10524
          TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pColKV->colName));
256!
10525
        }
10526
      } else {
10527
        TAOS_CHECK_RETURN(tEncodeBool(pEncoder, false));
1,848!
10528
      }
10529
      TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pScan->window.skey));
3,824!
10530
      TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pScan->window.ekey));
3,824!
10531
      break;
1,912✔
10532
    }
10533
    default:
×
10534
      return TSDB_CODE_INVALID_PARA;
×
10535
  }
10536

10537
  int32_t n = taosArrayGetSize(pOpParam->pChildren);
1,944✔
10538
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, n));
1,944!
10539
  for (int32_t i = 0; i < n; ++i) {
1,944!
10540
    SOperatorParam *pChild = *(SOperatorParam **)taosArrayGet(pOpParam->pChildren, i);
×
10541
    TAOS_CHECK_RETURN(tSerializeSOperatorParam(pEncoder, pChild));
×
10542
  }
10543

10544
  TAOS_CHECK_RETURN(tEncodeBool(pEncoder, pOpParam->reUse));
1,944!
10545
  return 0;
1,944✔
10546
}
10547

10548
int32_t tDeserializeSOperatorParam(SDecoder *pDecoder, SOperatorParam *pOpParam) {
1,088✔
10549
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pOpParam->opType));
2,176!
10550
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pOpParam->downstreamIdx));
2,176!
10551
  switch (pOpParam->opType) {
1,088!
10552
    case QUERY_NODE_PHYSICAL_PLAN_TAG_SCAN: {
16✔
10553
      pOpParam->value = taosMemoryMalloc(sizeof(STagScanOperatorParam));
16!
10554
      if (NULL == pOpParam->value) {
16!
10555
        TAOS_CHECK_RETURN(terrno);
×
10556
      }
10557
      STagScanOperatorParam *pTagScan = pOpParam->value;
16✔
10558
      TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pTagScan->vcUid));
32!
10559
      break;
16✔
10560
    }
10561
    case QUERY_NODE_PHYSICAL_PLAN_TABLE_SCAN: {
1,072✔
10562
      pOpParam->value = taosMemoryMalloc(sizeof(STableScanOperatorParam));
1,072!
10563
      if (NULL == pOpParam->value) {
1,072!
10564
        TAOS_CHECK_RETURN(terrno);
×
10565
      }
10566
      STableScanOperatorParam *pScan = pOpParam->value;
1,072✔
10567
      TAOS_CHECK_RETURN(tDecodeI8(pDecoder, (int8_t *)&pScan->tableSeq));
2,144!
10568
      int32_t uidNum = 0;
1,072✔
10569
      int64_t uid = 0;
1,072✔
10570
      TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &uidNum));
1,072!
10571
      if (uidNum > 0) {
1,072✔
10572
        pScan->pUidList = taosArrayInit(uidNum, sizeof(int64_t));
1,040✔
10573
        if (NULL == pScan->pUidList) {
1,040!
10574
          TAOS_CHECK_RETURN(terrno);
×
10575
        }
10576

10577
        for (int32_t m = 0; m < uidNum; ++m) {
64,458✔
10578
          TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &uid));
63,333!
10579
          if (taosArrayPush(pScan->pUidList, &uid) == NULL) {
126,749!
10580
            TAOS_CHECK_RETURN(terrno);
×
10581
          }
10582
        }
10583
      } else {
10584
        pScan->pUidList = NULL;
32✔
10585
      }
10586

10587
      bool hasTbInfo = false;
1,048✔
10588
      TAOS_CHECK_RETURN(tDecodeBool(pDecoder, &hasTbInfo));
1,048!
10589
      if (hasTbInfo) {
1,072✔
10590
        pScan->pOrgTbInfo = taosMemoryMalloc(sizeof(SOrgTbInfo));
32!
10591
        if (NULL == pScan->pOrgTbInfo) {
32!
10592
          TAOS_CHECK_RETURN(terrno);
×
10593
        }
10594
        TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &pScan->pOrgTbInfo->vgId));
64!
10595
        TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pScan->pOrgTbInfo->tbName));
32!
10596
        int32_t num = 0;
32✔
10597
        TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &num));
32!
10598
        pScan->pOrgTbInfo->colMap = taosArrayInit(num, sizeof(SColIdNameKV));
32✔
10599
        for (int32_t i = 0; i < num; ++i) {
96✔
10600
          SColIdNameKV pColKV;
10601
          TAOS_CHECK_RETURN(tDecodeI16(pDecoder, (int16_t *)&(pColKV.colId)));
64!
10602
          TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pColKV.colName));
64!
10603
          if (taosArrayPush(pScan->pOrgTbInfo->colMap, &pColKV) == NULL) {
128!
10604
            TAOS_CHECK_RETURN(terrno);
×
10605
          }
10606
        }
10607
      } else {
10608
        pScan->pOrgTbInfo = NULL;
1,040✔
10609
      }
10610
      TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pScan->window.skey));
2,144!
10611
      TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pScan->window.ekey));
2,144!
10612
      break;
1,072✔
10613
    }
10614
    default:
×
10615
      return TSDB_CODE_INVALID_PARA;
×
10616
  }
10617

10618
  int32_t childrenNum = 0;
1,088✔
10619
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &childrenNum));
1,088!
10620

10621
  if (childrenNum > 0) {
1,088!
10622
    pOpParam->pChildren = taosArrayInit(childrenNum, POINTER_BYTES);
×
10623
    if (NULL == pOpParam->pChildren) {
×
10624
      TAOS_CHECK_RETURN(terrno);
×
10625
    }
10626
    for (int32_t i = 0; i < childrenNum; ++i) {
×
10627
      SOperatorParam *pChild = taosMemoryCalloc(1, sizeof(SOperatorParam));
×
10628
      if (NULL == pChild) {
×
10629
        TAOS_CHECK_RETURN(terrno);
×
10630
      }
10631
      TAOS_CHECK_RETURN(tDeserializeSOperatorParam(pDecoder, pChild));
×
10632
      if (taosArrayPush(pOpParam->pChildren, &pChild) == NULL) {
×
10633
        TAOS_CHECK_RETURN(terrno);
×
10634
      }
10635
    }
10636
  } else {
10637
    pOpParam->pChildren = NULL;
1,088✔
10638
  }
10639

10640
  if (!tDecodeIsEnd(pDecoder)) {
1,088!
10641
    TAOS_CHECK_RETURN(tDecodeBool(pDecoder, &pOpParam->reUse));
1,088!
10642
  } else {
10643
    pOpParam->reUse = false;
×
10644
  }
10645

10646
  return 0;
1,088✔
10647
}
10648

10649
int32_t tSerializeSResFetchReq(void *buf, int32_t bufLen, SResFetchReq *pReq) {
11,004,834✔
10650
  int32_t code = 0;
11,004,834✔
10651
  int32_t lino;
10652
  int32_t headLen = sizeof(SMsgHead);
11,004,834✔
10653
  if (buf != NULL) {
11,004,834✔
10654
    buf = (char *)buf + headLen;
5,502,953✔
10655
    bufLen -= headLen;
5,502,953✔
10656
  }
10657

10658
  SEncoder encoder = {0};
11,004,834✔
10659
  tEncoderInit(&encoder, buf, bufLen);
11,004,834✔
10660
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
11,005,010!
10661

10662
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->sId));
22,010,884!
10663
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->queryId));
22,010,884!
10664
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->taskId));
22,010,884!
10665
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->execId));
22,010,884!
10666
  if (pReq->pOpParam) {
11,005,442✔
10667
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, 1));
1,944!
10668
    TAOS_CHECK_EXIT(tSerializeSOperatorParam(&encoder, pReq->pOpParam));
1,944!
10669
  } else {
10670
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, 0));
11,003,498!
10671
  }
10672
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->clientId));
22,010,884!
10673
  if (pReq->pStRtFuncInfo) {
11,005,442✔
10674
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, 1));
42,636!
10675
    TAOS_CHECK_EXIT(tSerializeStRtFuncInfo(&encoder, pReq->pStRtFuncInfo));
42,636!
10676
  } else {
10677
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, 0));
10,962,806!
10678
  }
10679
  TAOS_CHECK_EXIT(tEncodeBool(&encoder, pReq->reset));
11,005,443!
10680
  TAOS_CHECK_EXIT(tEncodeBool(&encoder, pReq->dynTbname));
11,005,603!
10681

10682
  tEndEncode(&encoder);
11,005,399✔
10683

10684
_exit:
11,005,455✔
10685
  if (code) {
11,005,455!
10686
    tEncoderClear(&encoder);
×
10687
    return code;
×
10688
  } else {
10689
    int32_t tlen = encoder.pos;
11,005,455✔
10690
    tEncoderClear(&encoder);
11,005,455✔
10691

10692
    if (buf != NULL) {
11,004,525✔
10693
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
5,502,845✔
10694
      pHead->vgId = htonl(pReq->header.vgId);
5,502,845✔
10695
      pHead->contLen = htonl(tlen + headLen);
5,502,845✔
10696
    }
10697

10698
    return tlen + headLen;
11,004,525✔
10699
  }
10700
}
10701

10702
int32_t tDeserializeSResFetchReq(void *buf, int32_t bufLen, SResFetchReq *pReq) {
10,327,360✔
10703
  int32_t code = 0;
10,327,360✔
10704
  int32_t lino;
10705
  int32_t headLen = sizeof(SMsgHead);
10,327,360✔
10706

10707
  SMsgHead *pHead = buf;
10,327,360✔
10708
  pHead->vgId = pReq->header.vgId;
10,327,360✔
10709
  pHead->contLen = pReq->header.contLen;
10,327,360✔
10710

10711
  SDecoder decoder = {0};
10,327,360✔
10712
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
10,327,360✔
10713

10714
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
10,320,509!
10715

10716
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->sId));
20,659,288!
10717
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->queryId));
20,657,846!
10718
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->taskId));
20,654,002!
10719
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->execId));
20,651,186!
10720

10721
  int32_t paramNum = 0;
10,325,707✔
10722
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &paramNum));
10,326,233!
10723
  if (paramNum > 0) {
10,326,233✔
10724
    pReq->pOpParam = taosMemoryMalloc(sizeof(*pReq->pOpParam));
1,088!
10725
    if (NULL == pReq->pOpParam) {
1,088!
10726
      TAOS_CHECK_EXIT(terrno);
×
10727
    }
10728
    TAOS_CHECK_EXIT(tDeserializeSOperatorParam(&decoder, pReq->pOpParam));
1,088!
10729
  }
10730
  if (!tDecodeIsEnd(&decoder)) {
10,326,233✔
10731
    TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->clientId));
20,643,902!
10732
  } else {
10733
    pReq->clientId = 0;
4,805✔
10734
  }
10735
  if (!tDecodeIsEnd(&decoder)) {
10,327,279✔
10736
    int32_t hasStRtFuncInfo = 0;
10,324,892✔
10737
    TAOS_CHECK_ERRNO(tDecodeI32(&decoder, &hasStRtFuncInfo));
20,649,070✔
10738
    if (hasStRtFuncInfo > 0) {
10,317,857✔
10739
      pReq->pStRtFuncInfo = taosMemoryCalloc(1, sizeof(SStreamRuntimeFuncInfo));;
21,045!
10740
      if (NULL == pReq->pStRtFuncInfo) {
21,046!
10741
        TAOS_CHECK_EXIT(terrno);
×
10742
      }
10743
      TAOS_CHECK_EXIT(tDeserializeStRtFuncInfo(&decoder, pReq->pStRtFuncInfo));
21,046!
10744
    }
10745
  }
10746
  if (!tDecodeIsEnd(&decoder)) {
10,320,243!
10747
    TAOS_CHECK_EXIT(tDecodeBool(&decoder, &pReq->reset));
10,322,876!
10748
    TAOS_CHECK_EXIT(tDecodeBool(&decoder, &pReq->dynTbname));
10,324,688!
10749
  }
10750

10751
  tEndDecode(&decoder);
10,321,553✔
10752

10753
_exit:
10,319,473✔
10754
  tDecoderClear(&decoder);
10,319,473✔
10755
  return code;
10,326,718✔
10756
}
10757

10758
void    tDestroySResFetchReq(SResFetchReq* pReq){
21,045✔
10759
  if (pReq != NULL) {
21,045!
10760
    (void)tDestroyStRtFuncInfo(pReq->pStRtFuncInfo);
21,045✔
10761
    taosMemoryFree(pReq->pStRtFuncInfo);
21,045!
10762
  }
10763
}
21,046✔
10764

10765
int32_t tSerializeSMqPollReq(void *buf, int32_t bufLen, SMqPollReq *pReq) {
1,438✔
10766
  int32_t headLen = sizeof(SMsgHead);
1,438✔
10767
  int32_t code = 0;
1,438✔
10768
  int32_t lino;
10769
  if (buf != NULL) {
1,438✔
10770
    buf = (char *)buf + headLen;
719✔
10771
    bufLen -= headLen;
719✔
10772
  }
10773

10774
  SEncoder encoder = {0};
1,438✔
10775
  tEncoderInit(&encoder, buf, bufLen);
1,438✔
10776
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
1,438!
10777

10778
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->subKey));
2,876!
10779
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->withTbName));
2,876!
10780
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->useSnapshot));
2,876!
10781
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->epoch));
2,876!
10782
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->reqId));
2,876!
10783
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->consumerId));
2,876!
10784
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->timeout));
2,876!
10785
  TAOS_CHECK_EXIT(tEncodeSTqOffsetVal(&encoder, &pReq->reqOffset));
1,438!
10786
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->enableReplay));
2,876!
10787
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->sourceExcluded));
2,876!
10788
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->enableBatchMeta));
2,876!
10789
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->rawData));
2,876!
10790
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->minPollRows));
2,876!
10791

10792
  tEndEncode(&encoder);
1,438✔
10793

10794
_exit:
1,438✔
10795
  if (code) {
1,438!
10796
    tEncoderClear(&encoder);
×
10797
    return code;
×
10798
  } else {
10799
    int32_t tlen = encoder.pos;
1,438✔
10800
    tEncoderClear(&encoder);
1,438✔
10801

10802
    if (buf != NULL) {
1,438✔
10803
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
719✔
10804
      pHead->vgId = htonl(pReq->head.vgId);
719✔
10805
      pHead->contLen = htonl(tlen + headLen);
719✔
10806
    }
10807

10808
    return tlen + headLen;
1,438✔
10809
  }
10810
}
10811

10812
int32_t tDeserializeSMqPollReq(void *buf, int32_t bufLen, SMqPollReq *pReq) {
36,077✔
10813
  int32_t  code = 0;
36,077✔
10814
  int32_t  lino;
10815
  int32_t  headLen = sizeof(SMsgHead);
36,077✔
10816
  SDecoder decoder = {0};
36,077✔
10817
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
36,077✔
10818

10819
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
36,077!
10820

10821
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->subKey));
36,085!
10822
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->withTbName));
72,167!
10823
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->useSnapshot));
72,179!
10824
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->epoch));
72,182!
10825
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->reqId));
72,178!
10826
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->consumerId));
72,180!
10827
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->timeout));
72,182!
10828
  TAOS_CHECK_EXIT(tDecodeSTqOffsetVal(&decoder, &pReq->reqOffset));
36,089!
10829

10830
  if (!tDecodeIsEnd(&decoder)) {
36,079!
10831
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->enableReplay));
72,172!
10832
  }
10833

10834
  if (!tDecodeIsEnd(&decoder)) {
36,075!
10835
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->sourceExcluded));
72,174!
10836
  }
10837

10838
  if (!tDecodeIsEnd(&decoder)) {
36,081!
10839
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->enableBatchMeta));
72,176!
10840
  } else {
10841
    pReq->enableBatchMeta = false;
×
10842
  }
10843

10844
  if (!tDecodeIsEnd(&decoder)) {
36,085✔
10845
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->rawData));
72,159!
10846
    TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->minPollRows));
72,172!
10847
  }
10848

10849
  tEndDecode(&decoder);
36,098✔
10850

10851
_exit:
36,082✔
10852
  tDecoderClear(&decoder);
36,082✔
10853
  return code;
36,076✔
10854
}
10855

10856
void tDestroySMqPollReq(SMqPollReq *pReq) {
35,589✔
10857
  tOffsetDestroy(&pReq->reqOffset);
35,589✔
10858
  if (pReq->uidHash != NULL) {
35,589!
10859
    taosHashCleanup(pReq->uidHash);
×
10860
    pReq->uidHash = NULL;
×
10861
  }
10862
}
35,589✔
10863
int32_t tSerializeSTaskDropReq(void *buf, int32_t bufLen, STaskDropReq *pReq) {
16,457,336✔
10864
  int32_t code = 0;
16,457,336✔
10865
  int32_t lino;
10866
  int32_t tlen;
10867
  int32_t headLen = sizeof(SMsgHead);
16,457,336✔
10868
  if (buf != NULL) {
16,457,336✔
10869
    buf = (char *)buf + headLen;
8,230,695✔
10870
    bufLen -= headLen;
8,230,695✔
10871
  }
10872

10873
  SEncoder encoder = {0};
16,457,336✔
10874
  tEncoderInit(&encoder, buf, bufLen);
16,457,336✔
10875
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
16,455,571!
10876

10877
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->sId));
32,924,246!
10878
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->queryId));
32,924,246!
10879
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->taskId));
32,924,246!
10880
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->refId));
32,924,246!
10881
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->execId));
32,924,246!
10882
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->clientId));
32,924,246!
10883

10884
  tEndEncode(&encoder);
16,462,123✔
10885

10886
_exit:
16,459,576✔
10887
  if (code) {
16,459,576!
10888
    tEncoderClear(&encoder);
×
10889
    return code;
×
10890
  } else {
10891
    tlen = encoder.pos;
16,459,576✔
10892
    tEncoderClear(&encoder);
16,459,576✔
10893

10894
    if (buf != NULL) {
16,459,962✔
10895
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
8,233,055✔
10896
      pHead->vgId = htonl(pReq->header.vgId);
8,233,055✔
10897
      pHead->contLen = htonl(tlen + headLen);
8,233,055✔
10898
    }
10899

10900
    return tlen + headLen;
16,459,962✔
10901
  }
10902
}
10903

10904
int32_t tDeserializeSTaskDropReq(void *buf, int32_t bufLen, STaskDropReq *pReq) {
8,076,091✔
10905
  int32_t headLen = sizeof(SMsgHead);
8,076,091✔
10906
  int32_t code = 0;
8,076,091✔
10907
  int32_t lino;
10908

10909
  SMsgHead *pHead = buf;
8,076,091✔
10910
  pHead->vgId = pReq->header.vgId;
8,076,091✔
10911
  pHead->contLen = pReq->header.contLen;
8,076,091✔
10912

10913
  SDecoder decoder = {0};
8,076,091✔
10914
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
8,076,091✔
10915

10916
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
8,068,646!
10917

10918
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->sId));
16,161,320!
10919
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->queryId));
16,158,447!
10920
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->taskId));
16,154,652!
10921
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->refId));
16,151,453!
10922
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->execId));
16,150,276!
10923
  if (!tDecodeIsEnd(&decoder)) {
8,075,200!
10924
    TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->clientId));
16,151,272!
10925
  } else {
10926
    pReq->clientId = 0;
×
10927
  }
10928

10929
  tEndDecode(&decoder);
8,073,498✔
10930

10931
_exit:
8,073,486✔
10932
  tDecoderClear(&decoder);
8,073,486✔
10933
  return code;
8,078,401✔
10934
}
10935

10936
int32_t tSerializeSTaskNotifyReq(void *buf, int32_t bufLen, STaskNotifyReq *pReq) {
×
10937
  int32_t code = 0;
×
10938
  int32_t lino;
10939
  int32_t tlen;
10940
  int32_t headLen = sizeof(SMsgHead);
×
10941
  if (buf != NULL) {
×
10942
    buf = (char *)buf + headLen;
×
10943
    bufLen -= headLen;
×
10944
  }
10945

10946
  SEncoder encoder = {0};
×
10947
  tEncoderInit(&encoder, buf, bufLen);
×
10948
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
10949

10950
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->sId));
×
10951
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->queryId));
×
10952
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->taskId));
×
10953
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pReq->refId));
×
10954
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->execId));
×
10955
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->type));
×
10956
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->clientId));
×
10957

10958
  tEndEncode(&encoder);
×
10959

10960
_exit:
×
10961
  if (code) {
×
10962
    tEncoderClear(&encoder);
×
10963
    return code;
×
10964
  } else {
10965
    tlen = encoder.pos;
×
10966
    tEncoderClear(&encoder);
×
10967

10968
    if (buf != NULL) {
×
10969
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
×
10970
      pHead->vgId = htonl(pReq->header.vgId);
×
10971
      pHead->contLen = htonl(tlen + headLen);
×
10972
    }
10973

10974
    return tlen + headLen;
×
10975
  }
10976
}
10977

10978
int32_t tDeserializeSTaskNotifyReq(void *buf, int32_t bufLen, STaskNotifyReq *pReq) {
56✔
10979
  int32_t headLen = sizeof(SMsgHead);
56✔
10980
  int32_t code = 0;
56✔
10981
  int32_t lino;
10982

10983
  SMsgHead *pHead = buf;
56✔
10984
  pHead->vgId = pReq->header.vgId;
56✔
10985
  pHead->contLen = pReq->header.contLen;
56✔
10986

10987
  SDecoder decoder = {0};
56✔
10988
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
56✔
10989

10990
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
56!
10991

10992
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->sId));
112!
10993
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->queryId));
112!
10994
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->taskId));
112!
10995
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pReq->refId));
112!
10996
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->execId));
112!
10997
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, (int32_t *)&pReq->type));
112!
10998
  if (!tDecodeIsEnd(&decoder)) {
56!
10999
    TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->clientId));
112!
11000
  } else {
11001
    pReq->clientId = 0;
×
11002
  }
11003

11004
  tEndDecode(&decoder);
56✔
11005

11006
_exit:
56✔
11007
  tDecoderClear(&decoder);
56✔
11008
  return code;
56✔
11009
}
11010

11011
int32_t tSerializeSQueryTableRsp(void *buf, int32_t bufLen, SQueryTableRsp *pRsp) {
16,166,877✔
11012
  SEncoder encoder = {0};
16,166,877✔
11013
  int32_t  code = 0;
16,166,877✔
11014
  int32_t  lino;
11015
  int32_t  tlen;
11016
  tEncoderInit(&encoder, buf, bufLen);
16,166,877✔
11017
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
16,167,595!
11018

11019
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->code));
32,334,374!
11020
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->affectedRows));
32,334,374!
11021
  int32_t tbNum = taosArrayGetSize(pRsp->tbVerInfo);
16,167,187✔
11022
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, tbNum));
16,164,855!
11023
  if (tbNum > 0) {
16,164,855✔
11024
    for (int32_t i = 0; i < tbNum; ++i) {
19,179,325✔
11025
      STbVerInfo *pVer = taosArrayGet(pRsp->tbVerInfo, i);
9,591,572✔
11026
      TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pVer->tbFName));
19,175,648!
11027
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pVer->sversion));
19,175,648!
11028
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pVer->tversion));
19,175,648!
11029
    }
11030
  }
11031

11032
  if (tbNum > 0) {
16,161,107✔
11033
    for (int32_t i = 0; i < tbNum; ++i) {
19,179,985✔
11034
      STbVerInfo *pVer = taosArrayGet(pRsp->tbVerInfo, i);
9,592,284✔
11035
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, pVer->rversion));
19,174,804!
11036
    }
11037
  }
11038
  tEndEncode(&encoder);
16,156,225✔
11039

11040
_exit:
16,164,480✔
11041
  if (code) {
16,164,480!
11042
    tlen = code;
×
11043
  } else {
11044
    tlen = encoder.pos;
16,164,480✔
11045
  }
11046
  tEncoderClear(&encoder);
16,164,480✔
11047
  return tlen;
16,167,107✔
11048
}
11049

11050
int32_t tDeserializeSQueryTableRsp(void *buf, int32_t bufLen, SQueryTableRsp *pRsp) {
150,321✔
11051
  SDecoder decoder = {0};
150,321✔
11052
  int32_t  code = 0;
150,321✔
11053
  int32_t  lino;
11054
  tDecoderInit(&decoder, (char *)buf, bufLen);
150,321✔
11055

11056
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
150,321✔
11057

11058
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->code));
300,609!
11059
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->affectedRows));
300,611!
11060
  int32_t tbNum = 0;
150,309✔
11061
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &tbNum));
150,308!
11062
  if (tbNum > 0) {
150,308✔
11063
    pRsp->tbVerInfo = taosArrayInit(tbNum, sizeof(STbVerInfo));
139,235✔
11064
    if (NULL == pRsp->tbVerInfo) {
139,232!
11065
      TAOS_CHECK_EXIT(terrno);
×
11066
    }
11067
    for (int32_t i = 0; i < tbNum; i++) {
278,470✔
11068
      STbVerInfo tbVer;
11069
      TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, tbVer.tbFName));
139,233!
11070
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &tbVer.sversion));
139,237!
11071
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &tbVer.tversion));
139,237!
11072
      tbVer.rversion = 1;
139,237✔
11073
      if (NULL == taosArrayPush(pRsp->tbVerInfo, &tbVer)) {
278,474!
11074
        TAOS_CHECK_EXIT(terrno);
×
11075
      }
11076
    }
11077
  }
11078

11079
  if (!tDecodeIsEnd(&decoder)) {
150,310✔
11080
    if (tbNum > 0) {
139,238✔
11081
      for (int32_t i = 0; i < tbNum; i++) {
278,469✔
11082
        STbVerInfo *pVer = taosArrayGet(pRsp->tbVerInfo, i);
139,236✔
11083
        if (NULL == pVer) {
139,232!
11084
          TAOS_CHECK_EXIT(terrno);
×
11085
        }
11086
        TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pVer->rversion));
278,464!
11087
      }
11088
    }
11089
  }
11090

11091
  tEndDecode(&decoder);
150,306✔
11092

11093
_exit:
150,334✔
11094
  tDecoderClear(&decoder);
150,334✔
11095
  return code;
150,331✔
11096
}
11097

11098
int32_t tSerializeSSchedulerHbReq(void *buf, int32_t bufLen, SSchedulerHbReq *pReq) {
5,122,969✔
11099
  int32_t code = 0;
5,122,969✔
11100
  int32_t lino;
11101
  int32_t tlen;
11102
  int32_t headLen = sizeof(SMsgHead);
5,122,969✔
11103
  if (buf != NULL) {
5,122,969✔
11104
    buf = (char *)buf + headLen;
2,561,767✔
11105
    bufLen -= headLen;
2,561,767✔
11106
  }
11107

11108
  SEncoder encoder = {0};
5,122,969✔
11109
  tEncoderInit(&encoder, buf, bufLen);
5,122,969✔
11110

11111
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
5,122,986!
11112
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->clientId));
10,246,300!
11113
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->epId.nodeId));
10,246,300!
11114
  TAOS_CHECK_EXIT(tEncodeU16(&encoder, pReq->epId.ep.port));
10,246,300!
11115
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->epId.ep.fqdn));
10,246,300!
11116
  if (pReq->taskAction) {
5,123,150!
11117
    int32_t num = taosArrayGetSize(pReq->taskAction);
×
11118
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
×
11119
    for (int32_t i = 0; i < num; ++i) {
×
11120
      STaskAction *action = taosArrayGet(pReq->taskAction, i);
×
11121
      TAOS_CHECK_EXIT(tEncodeU64(&encoder, action->queryId));
×
11122
      TAOS_CHECK_EXIT(tEncodeU64(&encoder, action->taskId));
×
11123
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, action->action));
×
11124
    }
11125
  } else {
11126
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, 0));
5,123,150!
11127
  }
11128
  tEndEncode(&encoder);
5,123,150✔
11129

11130
_exit:
5,123,392✔
11131
  if (code) {
5,123,392!
11132
    tEncoderClear(&encoder);
×
11133
    return code;
×
11134
  } else {
11135
    tlen = encoder.pos;
5,123,392✔
11136
    tEncoderClear(&encoder);
5,123,392✔
11137

11138
    if (buf != NULL) {
5,123,180✔
11139
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
2,562,137✔
11140
      pHead->vgId = htonl(pReq->header.vgId);
2,562,137✔
11141
      pHead->contLen = htonl(tlen + headLen);
2,562,137✔
11142
    }
11143
    return tlen + headLen;
5,123,180✔
11144
  }
11145
}
11146

11147
int32_t tDeserializeSSchedulerHbReq(void *buf, int32_t bufLen, SSchedulerHbReq *pReq) {
2,441,596✔
11148
  int32_t   headLen = sizeof(SMsgHead);
2,441,596✔
11149
  SMsgHead *pHead = buf;
2,441,596✔
11150
  pHead->vgId = pReq->header.vgId;
2,441,596✔
11151
  pHead->contLen = pReq->header.contLen;
2,441,596✔
11152
  int32_t code = 0;
2,441,596✔
11153
  int32_t lino;
11154

11155
  SDecoder decoder = {0};
2,441,596✔
11156
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
2,441,596✔
11157

11158
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
2,441,035!
11159
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->clientId));
4,883,889!
11160
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->epId.nodeId));
4,883,732!
11161
  TAOS_CHECK_EXIT(tDecodeU16(&decoder, &pReq->epId.ep.port));
4,883,225!
11162
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->epId.ep.fqdn));
2,441,391!
11163
  int32_t num = 0;
2,441,811✔
11164
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
2,441,812!
11165
  if (num > 0) {
2,441,812!
11166
    pReq->taskAction = taosArrayInit(num, sizeof(STaskStatus));
×
11167
    if (NULL == pReq->taskAction) {
×
11168
      TAOS_CHECK_EXIT(terrno);
×
11169
    }
11170
    for (int32_t i = 0; i < num; ++i) {
×
11171
      STaskAction action = {0};
×
11172
      TAOS_CHECK_EXIT(tDecodeU64(&decoder, &action.queryId));
×
11173
      TAOS_CHECK_EXIT(tDecodeU64(&decoder, &action.taskId));
×
11174
      TAOS_CHECK_EXIT(tDecodeI8(&decoder, &action.action));
×
11175
      if (taosArrayPush(pReq->taskAction, &action) == NULL) {
×
11176
        TAOS_CHECK_EXIT(terrno);
×
11177
      }
11178
    }
11179
  } else {
11180
    pReq->taskAction = NULL;
2,441,812✔
11181
  }
11182
  tEndDecode(&decoder);
2,441,812✔
11183

11184
_exit:
2,441,298✔
11185
  tDecoderClear(&decoder);
2,441,298✔
11186
  return code;
2,441,419✔
11187
}
11188

11189
void tFreeSSchedulerHbReq(SSchedulerHbReq *pReq) { taosArrayDestroy(pReq->taskAction); }
×
11190

11191
int32_t tSerializeSSchedulerHbRsp(void *buf, int32_t bufLen, SSchedulerHbRsp *pRsp) {
5,241,257✔
11192
  SEncoder encoder = {0};
5,241,257✔
11193
  int32_t  code = 0;
5,241,257✔
11194
  int32_t  lino;
11195
  int32_t  tlen;
11196
  tEncoderInit(&encoder, buf, bufLen);
5,241,257✔
11197

11198
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
5,241,324!
11199
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pRsp->epId.nodeId));
10,482,678!
11200
  TAOS_CHECK_EXIT(tEncodeU16(&encoder, pRsp->epId.ep.port));
10,482,678!
11201
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->epId.ep.fqdn));
10,482,678!
11202
  if (pRsp->taskStatus) {
5,241,339✔
11203
    int32_t num = taosArrayGetSize(pRsp->taskStatus);
362,306✔
11204
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, num));
362,306!
11205
    for (int32_t i = 0; i < num; ++i) {
710,598✔
11206
      STaskStatus *status = taosArrayGet(pRsp->taskStatus, i);
348,292✔
11207
      TAOS_CHECK_EXIT(tEncodeU64(&encoder, status->queryId));
696,584!
11208
      TAOS_CHECK_EXIT(tEncodeU64(&encoder, status->taskId));
696,584!
11209
      TAOS_CHECK_EXIT(tEncodeI64(&encoder, status->refId));
696,584!
11210
      TAOS_CHECK_EXIT(tEncodeI32(&encoder, status->execId));
696,584!
11211
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, status->status));
696,584!
11212
    }
11213
    for (int32_t i = 0; i < num; ++i) {
710,598✔
11214
      STaskStatus *status = taosArrayGet(pRsp->taskStatus, i);
348,292✔
11215
      TAOS_CHECK_EXIT(tEncodeU64(&encoder, status->clientId));
696,584!
11216
    }
11217
  } else {
11218
    TAOS_CHECK_EXIT(tEncodeI32(&encoder, 0));
4,879,033!
11219
  }
11220
  tEndEncode(&encoder);
5,241,339✔
11221

11222
_exit:
5,241,595✔
11223
  if (code) {
5,241,595!
11224
    tlen = code;
×
11225
  } else {
11226
    tlen = encoder.pos;
5,241,595✔
11227
  }
11228
  tEncoderClear(&encoder);
5,241,595✔
11229
  return tlen;
5,241,278✔
11230
}
11231

11232
int32_t tDeserializeSSchedulerHbRsp(void *buf, int32_t bufLen, SSchedulerHbRsp *pRsp) {
125,034✔
11233
  SDecoder decoder = {0};
125,034✔
11234
  int32_t  code = 0;
125,034✔
11235
  int32_t  lino;
11236
  tDecoderInit(&decoder, buf, bufLen);
125,034✔
11237

11238
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
125,032✔
11239
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pRsp->epId.nodeId));
250,020!
11240
  TAOS_CHECK_EXIT(tDecodeU16(&decoder, &pRsp->epId.ep.port));
250,016!
11241
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->epId.ep.fqdn));
125,008!
11242
  int32_t num = 0;
125,000✔
11243
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &num));
125,005!
11244
  if (num > 0) {
125,005✔
11245
    pRsp->taskStatus = taosArrayInit(num, sizeof(STaskStatus));
940✔
11246
    if (NULL == pRsp->taskStatus) {
940!
11247
      TAOS_CHECK_EXIT(terrno);
×
11248
    }
11249
    for (int32_t i = 0; i < num; ++i) {
2,131✔
11250
      STaskStatus status = {0};
1,191✔
11251
      TAOS_CHECK_EXIT(tDecodeU64(&decoder, &status.queryId));
1,191!
11252
      TAOS_CHECK_EXIT(tDecodeU64(&decoder, &status.taskId));
1,191!
11253
      TAOS_CHECK_EXIT(tDecodeI64(&decoder, &status.refId));
1,191!
11254
      TAOS_CHECK_EXIT(tDecodeI32(&decoder, &status.execId));
1,191!
11255
      TAOS_CHECK_EXIT(tDecodeI8(&decoder, &status.status));
1,191!
11256
      if (taosArrayPush(pRsp->taskStatus, &status) == NULL) {
2,382!
11257
        TAOS_CHECK_EXIT(terrno);
×
11258
      }
11259
    }
11260
    if (!tDecodeIsEnd(&decoder)) {
940✔
11261
      for (int32_t i = 0; i < num; ++i) {
2,130✔
11262
        STaskStatus *status = taosArrayGet(pRsp->taskStatus, i);
1,191✔
11263
        TAOS_CHECK_EXIT(tDecodeU64(&decoder, &status->clientId));
2,382!
11264
      }
11265
    }
11266
  } else {
11267
    pRsp->taskStatus = NULL;
124,065✔
11268
  }
11269
  tEndDecode(&decoder);
125,005✔
11270

11271
_exit:
125,028✔
11272
  tDecoderClear(&decoder);
125,028✔
11273
  return code;
125,037✔
11274
}
11275

11276
void tFreeSSchedulerHbRsp(SSchedulerHbRsp *pRsp) { taosArrayDestroy(pRsp->taskStatus); }
306,194✔
11277

11278
int tEncodeSVCreateTbBatchRsp(SEncoder *pCoder, const SVCreateTbBatchRsp *pRsp) {
171,401✔
11279
  int32_t        nRsps = taosArrayGetSize(pRsp->pArray);
171,401✔
11280
  SVCreateTbRsp *pCreateRsp;
11281

11282
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
171,405!
11283
  TAOS_CHECK_RETURN(tEncodeI32v(pCoder, nRsps));
171,404!
11284
  for (int32_t i = 0; i < nRsps; i++) {
432,052✔
11285
    pCreateRsp = taosArrayGet(pRsp->pArray, i);
260,649✔
11286
    TAOS_CHECK_RETURN(tEncodeSVCreateTbRsp(pCoder, pCreateRsp));
260,650!
11287
  }
11288

11289
  tEndEncode(pCoder);
171,403✔
11290
  return 0;
171,401✔
11291
}
11292

11293
int tDecodeSVCreateTbBatchRsp(SDecoder *pCoder, SVCreateTbBatchRsp *pRsp) {
33,949✔
11294
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
33,949!
11295
  TAOS_CHECK_RETURN(tDecodeI32v(pCoder, &pRsp->nRsps));
67,973!
11296
  pRsp->pRsps = (SVCreateTbRsp *)tDecoderMalloc(pCoder, sizeof(*pRsp->pRsps) * pRsp->nRsps);
33,980!
11297
  if (pRsp->pRsps == NULL) {
33,996!
11298
    TAOS_CHECK_RETURN(terrno);
×
11299
  }
11300
  for (int32_t i = 0; i < pRsp->nRsps; i++) {
84,427✔
11301
    TAOS_CHECK_RETURN(tDecodeSVCreateTbRsp(pCoder, pRsp->pRsps + i));
50,469!
11302
  }
11303

11304
  tEndDecode(pCoder);
33,958✔
11305
  return 0;
33,983✔
11306
}
11307

11308
int32_t tEncodeTSma(SEncoder *pCoder, const STSma *pSma) {
×
11309
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pSma->version));
×
11310
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pSma->intervalUnit));
×
11311
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pSma->slidingUnit));
×
11312
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pSma->timezoneInt));
×
11313
  TAOS_CHECK_RETURN(tEncodeI32(pCoder, pSma->dstVgId));
×
11314
  TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pSma->indexName));
×
11315
  TAOS_CHECK_RETURN(tEncodeI32(pCoder, pSma->exprLen));
×
11316
  TAOS_CHECK_RETURN(tEncodeI32(pCoder, pSma->tagsFilterLen));
×
11317
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pSma->indexUid));
×
11318
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pSma->tableUid));
×
11319
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pSma->dstTbUid));
×
11320
  TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pSma->dstTbName));
×
11321
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pSma->interval));
×
11322
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pSma->offset));
×
11323
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pSma->sliding));
×
11324
  if (pSma->exprLen > 0) {
×
11325
    TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pSma->expr));
×
11326
  }
11327
  if (pSma->tagsFilterLen > 0) {
×
11328
    TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pSma->tagsFilter));
×
11329
  }
11330

11331
  TAOS_CHECK_RETURN(tEncodeSSchemaWrapper(pCoder, &pSma->schemaRow));
×
11332
  TAOS_CHECK_RETURN(tEncodeSSchemaWrapper(pCoder, &pSma->schemaTag));
×
11333

11334
  return 0;
×
11335
}
11336

11337
int32_t tDecodeTSma(SDecoder *pCoder, STSma *pSma, bool deepCopy) {
×
11338
  int32_t code = 0;
×
11339
  int32_t lino;
11340

11341
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pSma->version));
×
11342
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pSma->intervalUnit));
×
11343
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pSma->slidingUnit));
×
11344
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pSma->timezoneInt));
×
11345
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pSma->dstVgId));
×
11346
  TAOS_CHECK_EXIT(tDecodeCStrTo(pCoder, pSma->indexName));
×
11347
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pSma->exprLen));
×
11348
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pSma->tagsFilterLen));
×
11349
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSma->indexUid));
×
11350
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSma->tableUid));
×
11351
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSma->dstTbUid));
×
11352
  if (deepCopy) {
×
11353
    TAOS_CHECK_EXIT(tDecodeCStrAlloc(pCoder, &pSma->dstTbName));
×
11354
  } else {
11355
    TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pSma->dstTbName));
×
11356
  }
11357

11358
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSma->interval));
×
11359
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSma->offset));
×
11360
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSma->sliding));
×
11361
  if (pSma->exprLen > 0) {
×
11362
    if (deepCopy) {
×
11363
      TAOS_CHECK_EXIT(tDecodeCStrAlloc(pCoder, &pSma->expr));
×
11364
    } else {
11365
      TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pSma->expr));
×
11366
    }
11367
  } else {
11368
    pSma->expr = NULL;
×
11369
  }
11370
  if (pSma->tagsFilterLen > 0) {
×
11371
    if (deepCopy) {
×
11372
      TAOS_CHECK_EXIT(tDecodeCStrAlloc(pCoder, &pSma->tagsFilter));
×
11373
    } else {
11374
      TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pSma->tagsFilter));
×
11375
    }
11376
  } else {
11377
    pSma->tagsFilter = NULL;
×
11378
  }
11379
  // only needed in dstVgroup
11380
  TAOS_CHECK_EXIT(tDecodeSSchemaWrapperEx(pCoder, &pSma->schemaRow));
×
11381
  TAOS_CHECK_EXIT(tDecodeSSchemaWrapperEx(pCoder, &pSma->schemaTag));
×
11382

11383
_exit:
×
11384
  return code;
×
11385
}
11386

11387
int32_t tEncodeSVCreateTSmaReq(SEncoder *pCoder, const SVCreateTSmaReq *pReq) {
×
11388
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
×
11389
  TAOS_CHECK_RETURN(tEncodeTSma(pCoder, pReq));
×
11390
  tEndEncode(pCoder);
×
11391
  return 0;
×
11392
}
11393

11394
int32_t tDecodeSVCreateTSmaReq(SDecoder *pCoder, SVCreateTSmaReq *pReq) {
×
11395
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
×
11396
  TAOS_CHECK_RETURN(tDecodeTSma(pCoder, pReq, false));
×
11397
  tEndDecode(pCoder);
×
11398
  return 0;
×
11399
}
11400

11401
int32_t tEncodeSVDropTSmaReq(SEncoder *pCoder, const SVDropTSmaReq *pReq) {
×
11402
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
×
11403
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->indexUid));
×
11404
  TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pReq->indexName));
×
11405

11406
  tEndEncode(pCoder);
×
11407
  return 0;
×
11408
}
11409

11410
int32_t tSerializeSVDeleteReq(void *buf, int32_t bufLen, SVDeleteReq *pReq) {
106,816✔
11411
  int32_t code = 0;
106,816✔
11412
  int32_t lino;
11413
  int32_t headLen = sizeof(SMsgHead);
106,816✔
11414
  if (buf != NULL) {
106,816✔
11415
    buf = (char *)buf + headLen;
53,414✔
11416
    bufLen -= headLen;
53,414✔
11417
  }
11418

11419
  SEncoder encoder = {0};
106,816✔
11420
  tEncoderInit(&encoder, buf, bufLen);
106,816✔
11421

11422
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
106,821!
11423
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->sId));
213,638!
11424
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->queryId));
213,638!
11425
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->taskId));
213,638!
11426
  TAOS_CHECK_EXIT(tEncodeU32(&encoder, pReq->sqlLen));
213,638!
11427
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->sql));
213,638!
11428
  TAOS_CHECK_EXIT(tEncodeBinary(&encoder, pReq->msg, pReq->phyLen));
213,638!
11429
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->source));
213,638!
11430
  TAOS_CHECK_EXIT(tEncodeU64(&encoder, pReq->clientId));
213,638!
11431
  tEndEncode(&encoder);
106,819✔
11432

11433
_exit:
106,818✔
11434
  if (code) {
106,818!
11435
    tEncoderClear(&encoder);
×
11436
    return code;
×
11437
  } else {
11438
    int32_t tlen = encoder.pos;
106,818✔
11439
    tEncoderClear(&encoder);
106,818✔
11440

11441
    if (buf != NULL) {
106,811✔
11442
      SMsgHead *pHead = (SMsgHead *)((char *)buf - headLen);
53,412✔
11443
      pHead->vgId = htonl(pReq->header.vgId);
53,412✔
11444
      pHead->contLen = htonl(tlen + headLen);
53,412✔
11445
    }
11446

11447
    return tlen + headLen;
106,811✔
11448
  }
11449
}
11450

11451
int32_t tDeserializeSVDeleteReq(void *buf, int32_t bufLen, SVDeleteReq *pReq) {
62,546✔
11452
  int32_t   code = 0;
62,546✔
11453
  int32_t   lino;
11454
  int32_t   headLen = sizeof(SMsgHead);
62,546✔
11455
  SMsgHead *pHead = buf;
62,546✔
11456
  pHead->vgId = pReq->header.vgId;
62,546✔
11457
  pHead->contLen = pReq->header.contLen;
62,546✔
11458

11459
  SDecoder decoder = {0};
62,546✔
11460
  tDecoderInit(&decoder, (char *)buf + headLen, bufLen - headLen);
62,546✔
11461

11462
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
62,543!
11463
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->sId));
125,094!
11464
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->queryId));
125,095!
11465
  TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->taskId));
125,095!
11466
  TAOS_CHECK_EXIT(tDecodeU32(&decoder, &pReq->sqlLen));
125,095!
11467
  pReq->sql = taosMemoryCalloc(1, pReq->sqlLen + 1);
62,548!
11468
  if (NULL == pReq->sql) {
62,546!
11469
    TAOS_CHECK_EXIT(terrno);
×
11470
  }
11471
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->sql));
62,546!
11472
  uint64_t msgLen = 0;
62,547✔
11473
  TAOS_CHECK_EXIT(tDecodeBinaryAlloc(&decoder, (void **)&pReq->msg, &msgLen));
125,095!
11474
  pReq->phyLen = msgLen;
62,548✔
11475

11476
  if (!tDecodeIsEnd(&decoder)) {
62,548!
11477
    TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->source));
125,095!
11478
  }
11479
  if (!tDecodeIsEnd(&decoder)) {
62,547!
11480
    TAOS_CHECK_EXIT(tDecodeU64(&decoder, &pReq->clientId));
125,094!
11481
  } else {
11482
    pReq->clientId = 0;
×
11483
  }
11484
  tEndDecode(&decoder);
62,547✔
11485

11486
_exit:
62,547✔
11487
  tDecoderClear(&decoder);
62,547✔
11488
  return 0;
62,548✔
11489
}
11490

11491
int32_t tEncodeSVDeleteRsp(SEncoder *pCoder, const SVDeleteRsp *pReq) {
129,367✔
11492
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
129,367!
11493
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->affectedRows));
258,756!
11494
  tEndEncode(pCoder);
129,378✔
11495
  return 0;
129,372✔
11496
}
11497

11498
int32_t tDecodeSVDeleteRsp(SDecoder *pCoder, SVDeleteRsp *pReq) {
53,444✔
11499
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
53,444✔
11500
  TAOS_CHECK_RETURN(tDecodeI64(pCoder, &pReq->affectedRows));
106,829!
11501
  tEndDecode(pCoder);
53,415✔
11502
  return 0;
53,415✔
11503
}
11504

11505
int32_t tEncodeSRSmaParam(SEncoder *pCoder, const SRSmaParam *pRSmaParam) {
×
11506
  int32_t code = 0;
×
11507
  int32_t lino;
11508
  for (int32_t i = 0; i < 2; ++i) {
×
11509
    TAOS_CHECK_EXIT(tEncodeI64v(pCoder, pRSmaParam->maxdelay[i]));
×
11510
    TAOS_CHECK_EXIT(tEncodeI64v(pCoder, pRSmaParam->watermark[i]));
×
11511
    TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pRSmaParam->qmsgLen[i]));
×
11512
    if (pRSmaParam->qmsgLen[i] > 0) {
×
11513
      TAOS_CHECK_EXIT(tEncodeBinary(pCoder, pRSmaParam->qmsg[i], (uint64_t)pRSmaParam->qmsgLen[i]));
×
11514
    }
11515
  }
11516

11517
_exit:
×
11518
  return code;
×
11519
}
11520

11521
int32_t tDecodeSRSmaParam(SDecoder *pCoder, SRSmaParam *pRSmaParam) {
×
11522
  int32_t code = 0;
×
11523
  int32_t lino;
11524
  for (int32_t i = 0; i < 2; ++i) {
×
11525
    TAOS_CHECK_EXIT(tDecodeI64v(pCoder, &pRSmaParam->maxdelay[i]));
×
11526
    TAOS_CHECK_EXIT(tDecodeI64v(pCoder, &pRSmaParam->watermark[i]));
×
11527
    TAOS_CHECK_EXIT(tDecodeI32v(pCoder, &pRSmaParam->qmsgLen[i]));
×
11528
    if (pRSmaParam->qmsgLen[i] > 0) {
×
11529
      TAOS_CHECK_EXIT(tDecodeBinary(pCoder, (uint8_t **)&pRSmaParam->qmsg[i], NULL));  // qmsgLen contains len of '\0'
×
11530
    } else {
11531
      pRSmaParam->qmsg[i] = NULL;
×
11532
    }
11533
  }
11534

11535
_exit:
×
11536
  return code;
×
11537
}
11538

11539
int32_t tEncodeSColRefWrapper(SEncoder *pCoder, const SColRefWrapper *pWrapper) {
1,483✔
11540
  int32_t code = 0;
1,483✔
11541
  int32_t lino;
11542

11543
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pWrapper->nCols));
2,966!
11544
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pWrapper->version));
2,966!
11545
  for (int32_t i = 0; i < pWrapper->nCols; i++) {
11,070✔
11546
    SColRef *p = &pWrapper->pColRef[i];
9,587✔
11547
    TAOS_CHECK_EXIT(tEncodeI8(pCoder, p->hasRef));
19,174!
11548
    TAOS_CHECK_EXIT(tEncodeI16v(pCoder, p->id));
19,174!
11549
    if (p->hasRef) {
9,587✔
11550
      TAOS_CHECK_EXIT(tEncodeCStr(pCoder, p->refDbName));
15,970!
11551
      TAOS_CHECK_EXIT(tEncodeCStr(pCoder, p->refTableName));
15,970!
11552
      TAOS_CHECK_EXIT(tEncodeCStr(pCoder, p->refColName));
15,970!
11553
    }
11554
  }
11555

11556
_exit:
1,483✔
11557
  return code;
1,483✔
11558
}
11559

11560
int32_t tDecodeSColRefWrapperEx(SDecoder *pDecoder, SColRefWrapper *pWrapper, bool decoderMalloc) {
759✔
11561
  int32_t code = 0;
759✔
11562
  int32_t lino;
11563

11564
  TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pWrapper->nCols));
1,518!
11565
  TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pWrapper->version));
1,518!
11566

11567
  pWrapper->pColRef = decoderMalloc ? (SColRef *)tDecoderMalloc(pDecoder, pWrapper->nCols * sizeof(SColRef)) : (SColRef *)taosMemoryCalloc(pWrapper->nCols, sizeof(SColRef));
1,188!
11568
  if (pWrapper->pColRef == NULL) {
759!
11569
    TAOS_CHECK_EXIT(terrno);
×
11570
  }
11571

11572
  for (int i = 0; i < pWrapper->nCols; i++) {
6,716✔
11573
    SColRef *p = &pWrapper->pColRef[i];
5,957✔
11574
    TAOS_CHECK_EXIT(tDecodeI8(pDecoder, (int8_t *)&p->hasRef));
11,914!
11575
    TAOS_CHECK_EXIT(tDecodeI16v(pDecoder, &p->id));
11,914!
11576
    if (p->hasRef) {
5,957✔
11577
      TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, p->refDbName));
3,496!
11578
      TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, p->refTableName));
3,496!
11579
      TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, p->refColName));
3,496!
11580
    }
11581
  }
11582

11583
_exit:
759✔
11584
  if (code) {
759!
11585
    taosMemoryFree(pWrapper->pColRef);
×
11586
  }
11587
  return code;
759✔
11588
}
11589

11590
int32_t tEncodeSColCmprWrapper(SEncoder *pCoder, const SColCmprWrapper *pWrapper) {
72,070✔
11591
  int32_t code = 0;
72,070✔
11592
  int32_t lino;
11593

11594
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pWrapper->nCols));
144,140!
11595
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pWrapper->version));
144,140!
11596
  for (int32_t i = 0; i < pWrapper->nCols; i++) {
6,520,317✔
11597
    SColCmpr *p = &pWrapper->pColCmpr[i];
6,448,247✔
11598
    TAOS_CHECK_EXIT(tEncodeI16v(pCoder, p->id));
12,896,494!
11599
    TAOS_CHECK_EXIT(tEncodeU32(pCoder, p->alg));
12,896,494!
11600
  }
11601

11602
_exit:
72,070✔
11603
  return code;
72,070✔
11604
}
11605

11606
int32_t tDecodeSColCmprWrapperEx(SDecoder *pDecoder, SColCmprWrapper *pWrapper) {
60,187✔
11607
  int32_t code = 0;
60,187✔
11608
  int32_t lino;
11609

11610
  TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pWrapper->nCols));
120,390!
11611
  TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pWrapper->version));
120,406!
11612

11613
  pWrapper->pColCmpr = (SColCmpr *)tDecoderMalloc(pDecoder, pWrapper->nCols * sizeof(SColCmpr));
60,203✔
11614
  if (pWrapper->pColCmpr == NULL) {
60,221!
11615
    TAOS_CHECK_EXIT(terrno);
×
11616
  }
11617

11618
  for (int i = 0; i < pWrapper->nCols; i++) {
3,581,803✔
11619
    SColCmpr *p = &pWrapper->pColCmpr[i];
3,520,539✔
11620
    TAOS_CHECK_EXIT(tDecodeI16v(pDecoder, &p->id));
7,040,897!
11621
    TAOS_CHECK_EXIT(tDecodeU32(pDecoder, &p->alg));
7,041,940!
11622
  }
11623

11624
_exit:
61,264✔
11625
  if (code) {
61,264!
11626
    taosMemoryFree(pWrapper->pColCmpr);
×
11627
  }
11628
  return code;
60,195✔
11629
}
11630

11631
static int32_t tEncodeSExtSchema(SEncoder *pCoder, const SExtSchema *pExtSchema) {
5,184,452✔
11632
  int32_t code = 0, lino;
5,184,452✔
11633
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pExtSchema->typeMod));
10,368,904!
11634

11635
_exit:
5,184,452✔
11636
  return code;
5,184,452✔
11637
}
11638

11639
int32_t tDecodeSExtSchema(SDecoder *pCoder, SExtSchema *pExtSchema) {
2,753,660✔
11640
  int32_t code = 0, lino;
2,753,660✔
11641
  TAOS_CHECK_EXIT(tDecodeI32v(pCoder, &pExtSchema->typeMod));
5,507,365!
11642

11643
_exit:
2,753,705✔
11644
  return code;
2,753,705✔
11645
}
11646

11647
static int32_t tEncodeSExtSchemas(SEncoder *pCoder, const SExtSchema *pExtSchemas, int32_t nCol) {
24,840✔
11648
  int32_t code = 0, lino;
24,840✔
11649
  for (int32_t i = 0; i < nCol; ++i) {
5,209,292✔
11650
    TAOS_CHECK_EXIT(tEncodeSExtSchema(pCoder, pExtSchemas + i));
5,184,452!
11651
  }
11652

11653
_exit:
24,840✔
11654
  return code;
24,840✔
11655
}
11656

11657
static int32_t tDecodeSExtSchemas(SDecoder *pCoder, SExtSchema **ppExtSchema, int32_t nCol) {
14,461✔
11658
  int32_t code = 0, lino;
14,461✔
11659
  *ppExtSchema = tDecoderMalloc(pCoder, sizeof(SExtSchema) * nCol);
14,461!
11660
  if (!*ppExtSchema) TAOS_CHECK_EXIT(terrno);
14,462!
11661
  for (int32_t i = 0; i < nCol; ++i) {
2,768,304✔
11662
    TAOS_CHECK_EXIT(tDecodeSExtSchema(pCoder, (*ppExtSchema) + i));
2,753,871!
11663
  }
11664

11665
_exit:
14,433✔
11666
  return code;
14,433✔
11667
}
11668

11669
int tEncodeSVCreateStbReq(SEncoder *pCoder, const SVCreateStbReq *pReq) {
70,852✔
11670
  int32_t code = 0;
70,852✔
11671
  int32_t lino;
11672

11673
  TAOS_CHECK_EXIT(tStartEncode(pCoder));
70,852!
11674

11675
  TAOS_CHECK_EXIT(tEncodeCStr(pCoder, pReq->name));
141,704!
11676
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pReq->suid));
141,704!
11677
  TAOS_CHECK_EXIT(tEncodeI8(pCoder, pReq->rollup));
141,704!
11678
  TAOS_CHECK_EXIT(tEncodeSSchemaWrapper(pCoder, &pReq->schemaRow));
141,704!
11679
  TAOS_CHECK_EXIT(tEncodeSSchemaWrapper(pCoder, &pReq->schemaTag));
141,704!
11680
  if (pReq->rollup) {
70,852!
11681
    TAOS_CHECK_EXIT(tEncodeSRSmaParam(pCoder, &pReq->rsmaParam));
×
11682
  }
11683

11684
  TAOS_CHECK_EXIT(tEncodeI32(pCoder, pReq->alterOriDataLen));
141,704!
11685
  if (pReq->alterOriDataLen > 0) {
70,852✔
11686
    TAOS_CHECK_EXIT(tEncodeBinary(pCoder, pReq->alterOriData, pReq->alterOriDataLen));
58,428!
11687
  }
11688
  TAOS_CHECK_EXIT(tEncodeI8(pCoder, pReq->source));
141,704!
11689

11690
  TAOS_CHECK_EXIT(tEncodeI8(pCoder, pReq->colCmpred));
141,704!
11691
  TAOS_CHECK_EXIT(tEncodeSColCmprWrapper(pCoder, &pReq->colCmpr));
70,852!
11692
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pReq->keep));
141,704!
11693
  if (pReq->pExtSchemas) {
70,852✔
11694
    TAOS_CHECK_EXIT(tEncodeI8(pCoder, 1));
24,560!
11695
    TAOS_CHECK_EXIT(tEncodeSExtSchemas(pCoder, pReq->pExtSchemas, pReq->schemaRow.nCols));
24,560!
11696
  } else {
11697
    TAOS_CHECK_EXIT(tEncodeI8(pCoder, 0));
46,292!
11698
  }
11699
  TAOS_CHECK_EXIT(tEncodeI8(pCoder, pReq->virtualStb));
141,704!
11700
  tEndEncode(pCoder);
70,852✔
11701

11702
_exit:
70,852✔
11703
  return code;
70,852✔
11704
}
11705

11706
int tDecodeSVCreateStbReq(SDecoder *pCoder, SVCreateStbReq *pReq) {
46,897✔
11707
  int32_t code = 0;
46,897✔
11708
  int32_t lino;
11709

11710
  TAOS_CHECK_EXIT(tStartDecode(pCoder));
46,897!
11711

11712
  TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pReq->name));
93,836!
11713
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->suid));
93,831!
11714
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pReq->rollup));
93,828!
11715
  TAOS_CHECK_EXIT(tDecodeSSchemaWrapperEx(pCoder, &pReq->schemaRow));
93,736!
11716
  TAOS_CHECK_EXIT(tDecodeSSchemaWrapperEx(pCoder, &pReq->schemaTag));
93,725!
11717
  if (pReq->rollup) {
46,901!
11718
    TAOS_CHECK_EXIT(tDecodeSRSmaParam(pCoder, &pReq->rsmaParam));
×
11719
  }
11720

11721
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pReq->alterOriDataLen));
93,822!
11722
  if (pReq->alterOriDataLen > 0) {
46,921✔
11723
    TAOS_CHECK_EXIT(tDecodeBinary(pCoder, (uint8_t **)&pReq->alterOriData, NULL));
34,187!
11724
  }
11725
  if (!tDecodeIsEnd(pCoder)) {
46,920✔
11726
    TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pReq->source));
93,810!
11727

11728
    if (!tDecodeIsEnd(pCoder)) {
46,909✔
11729
      TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pReq->colCmpred));
93,810!
11730
    }
11731
    if (!tDecodeIsEnd(pCoder)) {
46,905!
11732
      TAOS_CHECK_EXIT(tDecodeSColCmprWrapperEx(pCoder, &pReq->colCmpr));
46,906!
11733
    }
11734
    if (!tDecodeIsEnd(pCoder)) {
46,899!
11735
      TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->keep));
93,797!
11736
    }
11737
    if (!tDecodeIsEnd(pCoder)) {
46,892!
11738
      int8_t hasExtSchema = 0;
46,896✔
11739
      TAOS_CHECK_EXIT(tDecodeI8(pCoder, &hasExtSchema));
46,893!
11740
      if (hasExtSchema) {
46,893✔
11741
        TAOS_CHECK_EXIT(tDecodeSExtSchemas(pCoder, &pReq->pExtSchemas, pReq->schemaRow.nCols));
14,371!
11742
      }
11743
    }
11744
  }
11745
  if (!tDecodeIsEnd(pCoder)) {
46,909✔
11746
    TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pReq->virtualStb));
93,783!
11747
  }
11748
  tEndDecode(pCoder);
46,916✔
11749

11750
_exit:
46,887✔
11751
  return code;
46,887✔
11752
}
11753

11754
int tEncodeSVCreateTbReq(SEncoder *pCoder, const SVCreateTbReq *pReq) {
131,256✔
11755
  int32_t code = 0;
131,256✔
11756
  int32_t lino;
11757

11758
  TAOS_CHECK_EXIT(tStartEncode(pCoder));
131,256!
11759

11760
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pReq->flags));
262,588!
11761
  TAOS_CHECK_EXIT(tEncodeCStr(pCoder, pReq->name));
262,588!
11762
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pReq->uid));
262,588!
11763
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pReq->btime));
262,588!
11764
  TAOS_CHECK_EXIT(tEncodeI32(pCoder, pReq->ttl));
262,588!
11765
  TAOS_CHECK_EXIT(tEncodeI8(pCoder, pReq->type));
262,588!
11766
  TAOS_CHECK_EXIT(tEncodeI32(pCoder, pReq->commentLen));
262,588!
11767
  if (pReq->commentLen > 0) {
131,294✔
11768
    TAOS_CHECK_EXIT(tEncodeCStr(pCoder, pReq->comment));
48!
11769
  }
11770

11771
  if (pReq->type == TSDB_CHILD_TABLE || pReq->type == TSDB_VIRTUAL_CHILD_TABLE) {
261,311✔
11772
    TAOS_CHECK_EXIT(tEncodeCStr(pCoder, pReq->ctb.stbName));
260,142!
11773
    TAOS_CHECK_EXIT(tEncodeU8(pCoder, pReq->ctb.tagNum));
260,142!
11774
    TAOS_CHECK_EXIT(tEncodeI64(pCoder, pReq->ctb.suid));
260,142!
11775
    TAOS_CHECK_EXIT(tEncodeTag(pCoder, (const STag *)pReq->ctb.pTag));
130,071!
11776
    int32_t len = taosArrayGetSize(pReq->ctb.tagName);
130,048✔
11777
    TAOS_CHECK_EXIT(tEncodeI32(pCoder, len));
130,059!
11778
    for (int32_t i = 0; i < len; i++) {
435,496✔
11779
      char *name = taosArrayGet(pReq->ctb.tagName, i);
305,479✔
11780
      TAOS_CHECK_EXIT(tEncodeCStr(pCoder, name));
305,437!
11781
    }
11782
  } else if (pReq->type == TSDB_NORMAL_TABLE || pReq->type == TSDB_VIRTUAL_NORMAL_TABLE) {
1,223!
11783
    TAOS_CHECK_EXIT(tEncodeSSchemaWrapper(pCoder, &pReq->ntb.schemaRow));
2,446!
11784
  } else {
11785
    return TSDB_CODE_INVALID_MSG;
×
11786
  }
11787
  // ENCODESQL
11788

11789
  TAOS_CHECK_EXIT(tEncodeI32(pCoder, pReq->sqlLen));
262,480!
11790
  if (pReq->sqlLen > 0) {
131,240!
11791
    TAOS_CHECK_EXIT(tEncodeBinary(pCoder, pReq->sql, pReq->sqlLen));
×
11792
  }
11793
  // Encode Column Options: encode compress level
11794
  if (pReq->type == TSDB_SUPER_TABLE || pReq->type == TSDB_NORMAL_TABLE) {
131,240✔
11795
    TAOS_CHECK_EXIT(tEncodeSColCmprWrapper(pCoder, &pReq->colCmpr));
1,248!
11796
  }
11797
  if (pReq->type == TSDB_VIRTUAL_NORMAL_TABLE || pReq->type == TSDB_VIRTUAL_CHILD_TABLE) {
131,212!
11798
    TAOS_CHECK_EXIT(tEncodeSColRefWrapper(pCoder, &pReq->colRef));
790!
11799
  }
11800
  if (pReq->pExtSchemas) {
131,246✔
11801
    TAOS_CHECK_EXIT(tEncodeI8(pCoder, 1));
280!
11802
    TAOS_CHECK_EXIT(tEncodeSExtSchemas(pCoder, pReq->pExtSchemas, pReq->ntb.schemaRow.nCols));
280!
11803
  } else {
11804
    TAOS_CHECK_EXIT(tEncodeI8(pCoder, 0));
130,966!
11805
  }
11806

11807
  tEndEncode(pCoder);
131,246✔
11808
_exit:
131,261✔
11809
  return code;
131,261✔
11810
}
11811

11812
int tDecodeSVCreateTbReq(SDecoder *pCoder, SVCreateTbReq *pReq) {
189,455✔
11813
  int32_t code = 0;
189,455✔
11814
  int32_t lino;
11815

11816
  TAOS_CHECK_EXIT(tStartDecode(pCoder));
189,455!
11817

11818
  TAOS_CHECK_EXIT(tDecodeI32v(pCoder, &pReq->flags));
378,984!
11819
  TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pReq->name));
378,934!
11820
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->uid));
378,854!
11821
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->btime));
378,756!
11822
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pReq->ttl));
378,698!
11823
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pReq->type));
378,669!
11824
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pReq->commentLen));
378,622!
11825
  if (pReq->commentLen > 0) {
189,299✔
11826
    pReq->comment = taosMemoryMalloc(pReq->commentLen + 1);
7!
11827
    if (pReq->comment == NULL) {
7!
11828
      TAOS_CHECK_EXIT(terrno);
×
11829
    }
11830
    TAOS_CHECK_EXIT(tDecodeCStrTo(pCoder, pReq->comment));
7!
11831
  }
11832

11833
  if (pReq->type == TSDB_CHILD_TABLE || pReq->type == TSDB_VIRTUAL_CHILD_TABLE) {
365,413✔
11834
    TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pReq->ctb.stbName));
351,714!
11835
    TAOS_CHECK_EXIT(tDecodeU8(pCoder, &pReq->ctb.tagNum));
351,734!
11836
    TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->ctb.suid));
351,706!
11837
    TAOS_CHECK_EXIT(tDecodeTag(pCoder, (STag **)&pReq->ctb.pTag));
175,848!
11838
    int32_t len = 0;
175,882✔
11839
    TAOS_CHECK_EXIT(tDecodeI32(pCoder, &len));
175,875!
11840
    pReq->ctb.tagName = taosArrayInit(len, TSDB_COL_NAME_LEN);
175,875✔
11841
    if (pReq->ctb.tagName == NULL) {
176,002!
11842
      TAOS_CHECK_EXIT(terrno);
×
11843
    }
11844
    for (int32_t i = 0; i < len; i++) {
700,677✔
11845
      char  name[TSDB_COL_NAME_LEN] = {0};
524,563✔
11846
      char *tmp = NULL;
524,563✔
11847
      TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &tmp));
524,280!
11848
      tstrncpy(name, tmp, TSDB_COL_NAME_LEN);
524,280✔
11849
      if (taosArrayPush(pReq->ctb.tagName, name) == NULL) {
1,048,955!
11850
        TAOS_CHECK_EXIT(terrno);
×
11851
      }
11852
    }
11853
  } else if (pReq->type == TSDB_NORMAL_TABLE || pReq->type == TSDB_VIRTUAL_NORMAL_TABLE) {
13,461!
11854
    TAOS_CHECK_EXIT(tDecodeSSchemaWrapperEx(pCoder, &pReq->ntb.schemaRow));
26,923!
11855
  } else {
11856
    return TSDB_CODE_INVALID_MSG;
×
11857
  }
11858

11859
  // DECODESQL
11860
  if (!tDecodeIsEnd(pCoder)) {
189,576✔
11861
    TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pReq->sqlLen));
378,911!
11862
    if (pReq->sqlLen > 0) {
189,450!
11863
      TAOS_CHECK_EXIT(tDecodeBinaryAlloc(pCoder, (void **)&pReq->sql, NULL));
×
11864
    }
11865
    if (pReq->type == TSDB_NORMAL_TABLE || pReq->type == TSDB_SUPER_TABLE) {
189,450!
11866
      if (!tDecodeIsEnd(pCoder)) {
13,305✔
11867
        TAOS_CHECK_EXIT(tDecodeSColCmprWrapperEx(pCoder, &pReq->colCmpr));
13,298!
11868
      }
11869
    } else if (pReq->type == TSDB_VIRTUAL_NORMAL_TABLE || pReq->type == TSDB_VIRTUAL_CHILD_TABLE) {
176,145✔
11870
      if (!tDecodeIsEnd(pCoder)) {
429!
11871
        TAOS_CHECK_EXIT(tDecodeSColRefWrapperEx(pCoder, &pReq->colRef, true));
429!
11872
      }
11873
    }
11874

11875
    if (!tDecodeIsEnd(pCoder)) {
189,450✔
11876
      int8_t hasExtSchema = 0;
189,446✔
11877
      TAOS_CHECK_EXIT(tDecodeI8(pCoder, &hasExtSchema));
189,427!
11878
      if (hasExtSchema) {
189,427✔
11879
        TAOS_CHECK_EXIT(tDecodeSExtSchemas(pCoder, &pReq->pExtSchemas, pReq->ntb.schemaRow.nCols));
90!
11880
      }
11881
    }
11882
  }
11883

11884
  tEndDecode(pCoder);
189,546✔
11885
_exit:
189,412✔
11886
  return code;
189,412✔
11887
}
11888

11889
void tDestroySVCreateTbReq(SVCreateTbReq *pReq, int32_t flags) {
12✔
11890
  if (pReq == NULL) return;
12!
11891

11892
  if (flags & TSDB_MSG_FLG_ENCODE) {
12!
11893
    // TODO
11894
  } else if (flags & TSDB_MSG_FLG_DECODE) {
12!
11895
    taosMemoryFreeClear(pReq->comment);
12!
11896

11897
    if (pReq->type == TSDB_CHILD_TABLE || pReq->type == TSDB_VIRTUAL_CHILD_TABLE) {
12!
11898
      taosArrayDestroy(pReq->ctb.tagName);
12✔
11899
      pReq->ctb.tagName = NULL;
12✔
11900
    } else if (pReq->type == TSDB_NORMAL_TABLE || pReq->type == TSDB_VIRTUAL_NORMAL_TABLE) {
×
11901
      taosMemoryFreeClear(pReq->ntb.schemaRow.pSchema);
×
11902
    }
11903
  }
11904

11905
  taosMemoryFreeClear(pReq->colCmpr.pColCmpr);
12!
11906
  taosMemoryFreeClear(pReq->colRef.pColRef);
12!
11907
  taosMemoryFreeClear(pReq->sql);
12!
11908
}
11909

11910
void tDestroySVSubmitCreateTbReq(SVCreateTbReq *pReq, int32_t flags) {
58,698✔
11911
  if (pReq == NULL) return;
58,698!
11912

11913
  if (flags & TSDB_MSG_FLG_ENCODE) {
58,698!
11914
    // TODO
11915
  } else if (flags & TSDB_MSG_FLG_DECODE) {
58,698!
11916
    taosMemoryFreeClear(pReq->comment);
58,699!
11917

11918
    if (pReq->type == TSDB_CHILD_TABLE || pReq->type == TSDB_VIRTUAL_CHILD_TABLE) {
58,699!
11919
      taosArrayDestroy(pReq->ctb.tagName);
57,680✔
11920
      pReq->ctb.tagName = NULL;
57,680✔
11921
    }
11922
  }
11923

11924
  taosMemoryFreeClear(pReq->colRef.pColRef);
58,698!
11925
  taosMemoryFreeClear(pReq->sql);
58,698!
11926
}
11927

11928
int tEncodeSVCreateTbBatchReq(SEncoder *pCoder, const SVCreateTbBatchReq *pReq) {
68,267✔
11929
  int32_t nReq = taosArrayGetSize(pReq->pArray);
68,267✔
11930

11931
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
68,291!
11932
  TAOS_CHECK_RETURN(tEncodeI32v(pCoder, nReq));
68,290!
11933
  for (int iReq = 0; iReq < nReq; iReq++) {
169,613✔
11934
    TAOS_CHECK_RETURN(tEncodeSVCreateTbReq(pCoder, (SVCreateTbReq *)taosArrayGet(pReq->pArray, iReq)));
101,336!
11935
  }
11936

11937
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pReq->source));
136,554!
11938

11939
  tEndEncode(pCoder);
68,277✔
11940
  return 0;
68,297✔
11941
}
11942

11943
int tDecodeSVCreateTbBatchReq(SDecoder *pCoder, SVCreateTbBatchReq *pReq) {
86,109✔
11944
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
86,109!
11945

11946
  TAOS_CHECK_RETURN(tDecodeI32v(pCoder, &pReq->nReqs));
172,238!
11947
  pReq->pReqs = (SVCreateTbReq *)tDecoderMalloc(pCoder, sizeof(SVCreateTbReq) * pReq->nReqs);
86,120✔
11948
  if (pReq->pReqs == NULL) {
86,118!
11949
    TAOS_CHECK_RETURN(terrno);
×
11950
  }
11951
  for (int iReq = 0; iReq < pReq->nReqs; iReq++) {
216,888✔
11952
    TAOS_CHECK_RETURN(tDecodeSVCreateTbReq(pCoder, pReq->pReqs + iReq));
130,775!
11953
  }
11954

11955
  if (!tDecodeIsEnd(pCoder)) {
86,113!
11956
    TAOS_CHECK_RETURN(tDecodeI8(pCoder, &pReq->source));
172,227!
11957
  }
11958

11959
  tEndDecode(pCoder);
86,114✔
11960
  return 0;
86,115✔
11961
}
11962

11963
void tDeleteSVCreateTbBatchReq(SVCreateTbBatchReq *pReq) {
86,116✔
11964
  for (int32_t iReq = 0; iReq < pReq->nReqs; iReq++) {
216,920✔
11965
    SVCreateTbReq *pCreateReq = pReq->pReqs + iReq;
130,797✔
11966
    taosMemoryFreeClear(pCreateReq->sql);
130,797!
11967
    taosMemoryFreeClear(pCreateReq->comment);
130,797!
11968
    if (pCreateReq->type == TSDB_CHILD_TABLE || pCreateReq->type == TSDB_VIRTUAL_CHILD_TABLE) {
130,797✔
11969
      taosArrayDestroy(pCreateReq->ctb.tagName);
118,352✔
11970
      pCreateReq->ctb.tagName = NULL;
118,359✔
11971
    }
11972
  }
11973
}
86,123✔
11974

11975
int tEncodeSVCreateTbRsp(SEncoder *pCoder, const SVCreateTbRsp *pRsp) {
371,349✔
11976
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
371,349!
11977

11978
  TAOS_CHECK_RETURN(tEncodeI32(pCoder, pRsp->code));
742,708!
11979
  TAOS_CHECK_RETURN(tEncodeI32(pCoder, pRsp->pMeta ? 1 : 0));
742,708!
11980
  if (pRsp->pMeta) {
371,354✔
11981
    TAOS_CHECK_RETURN(tEncodeSTableMetaRsp(pCoder, pRsp->pMeta));
352,601!
11982
  }
11983

11984
  tEndEncode(pCoder);
371,342✔
11985
  return 0;
371,355✔
11986
}
11987

11988
int tDecodeSVCreateTbRsp(SDecoder *pCoder, SVCreateTbRsp *pRsp) {
65,379✔
11989
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
65,379!
11990

11991
  TAOS_CHECK_RETURN(tDecodeI32(pCoder, &pRsp->code));
130,924!
11992

11993
  int32_t meta = 0;
65,463✔
11994
  TAOS_CHECK_RETURN(tDecodeI32(pCoder, &meta));
65,454!
11995
  if (meta) {
65,454✔
11996
    pRsp->pMeta = taosMemoryCalloc(1, sizeof(STableMetaRsp));
63,054!
11997
    if (NULL == pRsp->pMeta) {
63,043!
11998
      TAOS_CHECK_RETURN(terrno);
×
11999
    }
12000
    TAOS_CHECK_RETURN(tDecodeSTableMetaRsp(pCoder, pRsp->pMeta));
63,043!
12001
  } else {
12002
    pRsp->pMeta = NULL;
2,400✔
12003
  }
12004

12005
  tEndDecode(pCoder);
65,402✔
12006
  return 0;
65,382✔
12007
}
12008

12009
void tFreeSVCreateTbRsp(void *param) {
130,328✔
12010
  if (NULL == param) {
130,328!
12011
    return;
×
12012
  }
12013

12014
  SVCreateTbRsp *pRsp = (SVCreateTbRsp *)param;
130,328✔
12015
  if (pRsp->pMeta) {
130,328✔
12016
    taosMemoryFree(pRsp->pMeta->pSchemas);
130,206!
12017
    taosMemoryFree(pRsp->pMeta->pSchemaExt);
130,198!
12018
    taosMemoryFree(pRsp->pMeta->pColRefs);
130,200!
12019
    taosMemoryFree(pRsp->pMeta);
130,200!
12020
  }
12021
}
12022

12023
// TDMT_VND_DROP_TABLE =================
12024
static int32_t tEncodeSVDropTbReq(SEncoder *pCoder, const SVDropTbReq *pReq) {
32,802✔
12025
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
32,802!
12026
  TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pReq->name));
65,604!
12027
  TAOS_CHECK_RETURN(tEncodeU64(pCoder, pReq->suid));
65,604!
12028
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->uid));
65,604!
12029
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pReq->igNotExists));
65,604!
12030
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pReq->isVirtual));
65,604!
12031

12032
  tEndEncode(pCoder);
32,802✔
12033
  return 0;
32,802✔
12034
}
12035

12036
static int32_t tDecodeSVDropTbReq(SDecoder *pCoder, SVDropTbReq *pReq) {
32,392✔
12037
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
32,392!
12038
  TAOS_CHECK_RETURN(tDecodeCStr(pCoder, &pReq->name));
64,784!
12039
  TAOS_CHECK_RETURN(tDecodeU64(pCoder, &pReq->suid));
64,784!
12040
  TAOS_CHECK_RETURN(tDecodeI64(pCoder, &pReq->uid));
64,784!
12041
  TAOS_CHECK_RETURN(tDecodeI8(pCoder, &pReq->igNotExists));
64,784!
12042
  if (!tDecodeIsEnd(pCoder)) {
32,392!
12043
    TAOS_CHECK_RETURN(tDecodeI8(pCoder, &pReq->isVirtual));
64,784!
12044
  }
12045

12046
  tEndDecode(pCoder);
32,392✔
12047
  return 0;
32,392✔
12048
}
12049

12050
static int32_t tEncodeSVDropTbRsp(SEncoder *pCoder, const SVDropTbRsp *pReq) {
32,256✔
12051
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
32,256!
12052
  TAOS_CHECK_RETURN(tEncodeI32(pCoder, pReq->code));
64,512!
12053
  tEndEncode(pCoder);
32,256✔
12054
  return 0;
32,256✔
12055
}
12056

12057
static int32_t tDecodeSVDropTbRsp(SDecoder *pCoder, SVDropTbRsp *pReq) {
19✔
12058
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
19!
12059
  TAOS_CHECK_RETURN(tDecodeI32(pCoder, &pReq->code));
40!
12060
  tEndDecode(pCoder);
20✔
12061
  return 0;
19✔
12062
}
12063

12064
int32_t tEncodeSVDropTbBatchReq(SEncoder *pCoder, const SVDropTbBatchReq *pReq) {
31,694✔
12065
  int32_t      nReqs = taosArrayGetSize(pReq->pArray);
31,694✔
12066
  SVDropTbReq *pDropTbReq;
12067

12068
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
31,694!
12069
  TAOS_CHECK_RETURN(tEncodeI32v(pCoder, nReqs));
31,694!
12070
  for (int iReq = 0; iReq < nReqs; iReq++) {
64,246✔
12071
    pDropTbReq = (SVDropTbReq *)taosArrayGet(pReq->pArray, iReq);
32,552✔
12072
    TAOS_CHECK_RETURN(tEncodeSVDropTbReq(pCoder, pDropTbReq));
32,552!
12073
  }
12074

12075
  tEndEncode(pCoder);
31,694✔
12076
  return 0;
31,694✔
12077
}
12078

12079
int32_t tDecodeSVDropTbBatchReq(SDecoder *pCoder, SVDropTbBatchReq *pReq) {
31,459✔
12080
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
31,459!
12081
  TAOS_CHECK_RETURN(tDecodeI32v(pCoder, &pReq->nReqs));
62,918!
12082
  pReq->pReqs = (SVDropTbReq *)tDecoderMalloc(pCoder, sizeof(SVDropTbReq) * pReq->nReqs);
31,459!
12083
  if (pReq->pReqs == NULL) {
31,459!
12084
    TAOS_CHECK_RETURN(terrno);
×
12085
  }
12086
  for (int iReq = 0; iReq < pReq->nReqs; iReq++) {
63,726✔
12087
    TAOS_CHECK_RETURN(tDecodeSVDropTbReq(pCoder, pReq->pReqs + iReq));
32,267!
12088
  }
12089

12090
  tEndDecode(pCoder);
31,459✔
12091
  return 0;
31,459✔
12092
}
12093

12094
int32_t tEncodeSVDropTbBatchRsp(SEncoder *pCoder, const SVDropTbBatchRsp *pRsp) {
31,450✔
12095
  int32_t nRsps = taosArrayGetSize(pRsp->pArray);
31,450✔
12096
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
31,450!
12097
  TAOS_CHECK_RETURN(tEncodeI32v(pCoder, nRsps));
31,450!
12098
  for (int iRsp = 0; iRsp < nRsps; iRsp++) {
63,706✔
12099
    TAOS_CHECK_RETURN(tEncodeSVDropTbRsp(pCoder, (SVDropTbRsp *)taosArrayGet(pRsp->pArray, iRsp)));
32,256!
12100
  }
12101

12102
  tEndEncode(pCoder);
31,450✔
12103
  return 0;
31,450✔
12104
}
12105

12106
int32_t tDecodeSVDropTbBatchRsp(SDecoder *pCoder, SVDropTbBatchRsp *pRsp) {
17✔
12107
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
17!
12108
  TAOS_CHECK_RETURN(tDecodeI32v(pCoder, &pRsp->nRsps));
36!
12109
  pRsp->pRsps = (SVDropTbRsp *)tDecoderMalloc(pCoder, sizeof(SVDropTbRsp) * pRsp->nRsps);
18✔
12110
  if (pRsp->pRsps == NULL) {
18!
12111
    TAOS_CHECK_RETURN(terrno);
×
12112
  }
12113
  for (int iRsp = 0; iRsp < pRsp->nRsps; iRsp++) {
37✔
12114
    TAOS_CHECK_RETURN(tDecodeSVDropTbRsp(pCoder, pRsp->pRsps + iRsp));
19!
12115
  }
12116

12117
  tEndDecode(pCoder);
18✔
12118
  return 0;
18✔
12119
}
12120

12121
int32_t tEncodeSVDropStbReq(SEncoder *pCoder, const SVDropStbReq *pReq) {
45,328✔
12122
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
45,328!
12123
  TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pReq->name));
90,656!
12124
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->suid));
90,656!
12125
  tEndEncode(pCoder);
45,328✔
12126
  return 0;
45,328✔
12127
}
12128

12129
int32_t tDecodeSVDropStbReq(SDecoder *pCoder, SVDropStbReq *pReq) {
3,072✔
12130
  TAOS_CHECK_RETURN(tStartDecode(pCoder));
3,072!
12131
  TAOS_CHECK_RETURN(tDecodeCStr(pCoder, &pReq->name));
6,159!
12132
  TAOS_CHECK_RETURN(tDecodeI64(pCoder, &pReq->suid));
6,158!
12133
  tEndDecode(pCoder);
3,078✔
12134
  return 0;
3,074✔
12135
}
12136

12137
static int32_t tEncodeSSubmitBlkRsp(SEncoder *pEncoder, const SSubmitBlkRsp *pBlock) {
×
12138
  int32_t code = 0;
×
12139
  int32_t lino;
12140
  TAOS_CHECK_EXIT(tStartEncode(pEncoder));
×
12141

12142
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pBlock->code));
×
12143
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pBlock->uid));
×
12144
  if (pBlock->tblFName) {
×
12145
    TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pBlock->tblFName));
×
12146
  } else {
12147
    TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, ""));
×
12148
  }
12149
  TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pBlock->numOfRows));
×
12150
  TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pBlock->affectedRows));
×
12151
  TAOS_CHECK_EXIT(tEncodeI64v(pEncoder, pBlock->sver));
×
12152
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pBlock->pMeta ? 1 : 0));
×
12153
  if (pBlock->pMeta) {
×
12154
    TAOS_CHECK_EXIT(tEncodeSTableMetaRsp(pEncoder, pBlock->pMeta));
×
12155
  }
12156

12157
  tEndEncode(pEncoder);
×
12158
_exit:
×
12159
  return code;
×
12160
}
12161

12162
void tFreeSSubmitRsp(SSubmitRsp *pRsp) {
15,982✔
12163
  if (NULL == pRsp) return;
15,982!
12164

12165
  if (pRsp->pBlocks) {
×
12166
    for (int32_t i = 0; i < pRsp->nBlocks; ++i) {
×
12167
      SSubmitBlkRsp *sRsp = pRsp->pBlocks + i;
×
12168
      taosMemoryFree(sRsp->tblFName);
×
12169
      tFreeSTableMetaRsp(sRsp->pMeta);
×
12170
      taosMemoryFree(sRsp->pMeta);
×
12171
    }
12172

12173
    taosMemoryFree(pRsp->pBlocks);
×
12174
  }
12175

12176
  taosMemoryFree(pRsp);
×
12177
}
12178

12179
int32_t tEncodeSVAlterTbReq(SEncoder *pEncoder, const SVAlterTbReq *pReq) {
3,816✔
12180
  int32_t code = 0;
3,816✔
12181
  int32_t lino;
12182

12183
  TAOS_CHECK_EXIT(tStartEncode(pEncoder));
3,816!
12184

12185
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->tbName));
7,632!
12186
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->action));
7,632!
12187
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pReq->colId));
7,632!
12188
  switch (pReq->action) {
3,816!
12189
    case TSDB_ALTER_TABLE_ADD_COLUMN:
2,092✔
12190
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
4,184!
12191
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->type));
4,184!
12192
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->flags));
4,184!
12193
      TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pReq->bytes));
4,184!
12194
      break;
2,092✔
12195
    case TSDB_ALTER_TABLE_DROP_COLUMN:
52✔
12196
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
104!
12197
      break;
52✔
12198
    case TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES:
1,470✔
12199
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
2,940!
12200
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->colModType));
2,940!
12201
      TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pReq->colModBytes));
2,940!
12202
      break;
1,470✔
12203
    case TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME:
52✔
12204
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
104!
12205
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colNewName));
104!
12206
      break;
52✔
12207
    case TSDB_ALTER_TABLE_UPDATE_TAG_VAL:
80✔
12208
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->tagName));
160!
12209
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->isNull));
160!
12210
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->tagType));
160!
12211
      if (!pReq->isNull) {
80!
12212
        TAOS_CHECK_EXIT(tEncodeBinary(pEncoder, pReq->pTagVal, pReq->nTagVal));
160!
12213
      }
12214
      break;
80✔
12215
    case TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL: {
×
12216
      int32_t nTags = taosArrayGetSize(pReq->pMultiTag);
×
12217
      TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, nTags));
×
12218
      for (int32_t i = 0; i < nTags; i++) {
×
12219
        SMultiTagUpateVal *pTag = taosArrayGet(pReq->pMultiTag, i);
×
12220
        TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pTag->colId));
×
12221
        TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pTag->tagName));
×
12222
        TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pTag->isNull));
×
12223
        TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pTag->tagType));
×
12224
        if (!pTag->isNull) {
×
12225
          TAOS_CHECK_EXIT(tEncodeBinary(pEncoder, pTag->pTagVal, pTag->nTagVal));
×
12226
        }
12227
      }
12228
      break;
×
12229
    }
12230
    case TSDB_ALTER_TABLE_UPDATE_OPTIONS:
68✔
12231
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->updateTTL));
136!
12232
      if (pReq->updateTTL) {
68✔
12233
        TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pReq->newTTL));
48!
12234
      }
12235
      TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pReq->newCommentLen));
136!
12236
      if (pReq->newCommentLen > 0) {
68✔
12237
        TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->newComment));
88!
12238
      }
12239
      break;
68✔
12240
    case TSDB_ALTER_TABLE_UPDATE_COLUMN_COMPRESS:
×
12241
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
×
12242
      TAOS_CHECK_EXIT(tEncodeU32(pEncoder, pReq->compress));
×
12243
      break;
×
12244
    case TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION:
×
12245
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
×
12246
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->type));
×
12247
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->flags));
×
12248
      TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pReq->bytes));
×
12249
      TAOS_CHECK_EXIT(tEncodeU32(pEncoder, pReq->compress));
×
12250
      break;
×
12251
    case TSDB_ALTER_TABLE_ALTER_COLUMN_REF:
2✔
12252
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
4!
12253
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->refDbName));
4!
12254
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->refTbName));
4!
12255
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->refColName));
4!
12256
      break;
2✔
12257
    case TSDB_ALTER_TABLE_REMOVE_COLUMN_REF:
×
12258
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
×
12259
      break;
×
12260
    case TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COLUMN_REF:
×
12261
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->colName));
×
12262
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->type));
×
12263
      TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->flags));
×
12264
      TAOS_CHECK_EXIT(tEncodeI32v(pEncoder, pReq->bytes));
×
12265
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->refDbName));
×
12266
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->refTbName));
×
12267
      TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pReq->refColName));
×
12268
      break;
×
12269
    default:
×
12270
      break;
×
12271
  }
12272
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pReq->ctimeMs));
7,632!
12273
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->source));
7,632!
12274
  if (pReq->action == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION || pReq->action == TSDB_ALTER_TABLE_ADD_COLUMN) {
3,816!
12275
    TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pReq->typeMod));
4,184!
12276
  }
12277

12278
  tEndEncode(pEncoder);
3,816✔
12279
_exit:
3,816✔
12280
  return code;
3,816✔
12281
}
12282

12283
static int32_t tDecodeSVAlterTbReqCommon(SDecoder *pDecoder, SVAlterTbReq *pReq) {
31,293✔
12284
  int32_t code = 0;
31,293✔
12285
  int32_t lino;
12286

12287
  TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->tbName));
62,586!
12288
  TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->action));
62,586!
12289
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pReq->colId));
62,586!
12290
  switch (pReq->action) {
31,293!
12291
    case TSDB_ALTER_TABLE_ADD_COLUMN:
2,322✔
12292
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
4,644!
12293
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->type));
4,644!
12294
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->flags));
4,644!
12295
      TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pReq->bytes));
4,644!
12296
      break;
2,322✔
12297
    case TSDB_ALTER_TABLE_DROP_COLUMN:
284✔
12298
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
568!
12299
      break;
284✔
12300
    case TSDB_ALTER_TABLE_UPDATE_COLUMN_BYTES:
1,597✔
12301
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
3,194!
12302
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->colModType));
3,194!
12303
      TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pReq->colModBytes));
3,194!
12304
      break;
1,597✔
12305
    case TSDB_ALTER_TABLE_UPDATE_COLUMN_NAME:
218✔
12306
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
436!
12307
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colNewName));
436!
12308
      break;
218✔
12309
    case TSDB_ALTER_TABLE_UPDATE_TAG_VAL:
26,316✔
12310
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->tagName));
52,632!
12311
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->isNull));
52,632!
12312
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->tagType));
52,632!
12313
      if (!pReq->isNull) {
26,316✔
12314
        TAOS_CHECK_EXIT(tDecodeBinary(pDecoder, &pReq->pTagVal, &pReq->nTagVal));
51,608!
12315
      }
12316
      break;
26,316✔
12317
    case TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL: {
10✔
12318
      int32_t nTags;
12319
      TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &nTags));
10!
12320
      pReq->pMultiTag = taosArrayInit(nTags, sizeof(SMultiTagUpateVal));
10✔
12321
      if (pReq->pMultiTag == NULL) {
10!
12322
        TAOS_CHECK_EXIT(terrno);
×
12323
      }
12324
      for (int32_t i = 0; i < nTags; i++) {
70✔
12325
        SMultiTagUpateVal tag;
12326
        TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &tag.colId));
60!
12327
        TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &tag.tagName));
60!
12328
        TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &tag.isNull));
60!
12329
        TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &tag.tagType));
60!
12330
        if (!tag.isNull) {
60✔
12331
          TAOS_CHECK_EXIT(tDecodeBinary(pDecoder, &tag.pTagVal, &tag.nTagVal));
48!
12332
        }
12333
        if (taosArrayPush(pReq->pMultiTag, &tag) == NULL) {
120!
12334
          TAOS_CHECK_EXIT(terrno);
×
12335
        }
12336
      }
12337
      break;
10✔
12338
    }
12339
    case TSDB_ALTER_TABLE_UPDATE_OPTIONS:
230✔
12340
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->updateTTL));
460!
12341
      if (pReq->updateTTL) {
230✔
12342
        TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pReq->newTTL));
176!
12343
      }
12344
      TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pReq->newCommentLen));
460!
12345
      if (pReq->newCommentLen > 0) {
230✔
12346
        TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->newComment));
220!
12347
      }
12348
      break;
230✔
12349
    case TSDB_ALTER_TABLE_UPDATE_COLUMN_COMPRESS:
22✔
12350
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
44!
12351
      TAOS_CHECK_EXIT(tDecodeU32(pDecoder, &pReq->compress));
44!
12352
      break;
22✔
12353
    case TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION:
4✔
12354
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
8!
12355
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->type));
8!
12356
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->flags));
8!
12357
      TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pReq->bytes));
8!
12358
      TAOS_CHECK_EXIT(tDecodeU32(pDecoder, &pReq->compress));
8!
12359
      break;
4✔
12360
    case TSDB_ALTER_TABLE_ALTER_COLUMN_REF:
136✔
12361
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
272!
12362
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->refDbName));
272!
12363
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->refTbName));
272!
12364
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->refColName));
272!
12365
      break;
136✔
12366
    case TSDB_ALTER_TABLE_REMOVE_COLUMN_REF:
88✔
12367
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
176!
12368
      break;
88✔
12369
    case TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COLUMN_REF:
66✔
12370
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->colName));
132!
12371
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->type));
132!
12372
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->flags));
132!
12373
      TAOS_CHECK_EXIT(tDecodeI32v(pDecoder, &pReq->bytes));
132!
12374
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->refDbName));
132!
12375
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->refTbName));
132!
12376
      TAOS_CHECK_EXIT(tDecodeCStr(pDecoder, &pReq->refColName));
132!
12377
      break;
66✔
12378
    default:
×
12379
      break;
×
12380
  }
12381
_exit:
31,293✔
12382
  return code;
31,293✔
12383
}
12384

12385
int32_t tDecodeSVAlterTbReq(SDecoder *pDecoder, SVAlterTbReq *pReq) {
15,717✔
12386
  int32_t code = 0;
15,717✔
12387
  int32_t lino;
12388

12389
  TAOS_CHECK_EXIT(tStartDecode(pDecoder));
15,717!
12390
  TAOS_CHECK_EXIT(tDecodeSVAlterTbReqCommon(pDecoder, pReq));
15,717!
12391

12392
  pReq->ctimeMs = 0;
15,717✔
12393
  if (!tDecodeIsEnd(pDecoder)) {
15,717!
12394
    TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pReq->ctimeMs));
31,434!
12395
  }
12396
  if (!tDecodeIsEnd(pDecoder)) {
15,717!
12397
    TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->source));
31,434!
12398
  }
12399
  if (pReq->action == TSDB_ALTER_TABLE_ADD_COLUMN || pReq->action == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COMPRESS_OPTION) {
15,717✔
12400
    if (!tDecodeIsEnd(pDecoder)) {
1,174!
12401
      TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pReq->typeMod));
2,348!
12402
    }
12403
  }
12404

12405
  tEndDecode(pDecoder);
15,717✔
12406
_exit:
15,717✔
12407
  return code;
15,717✔
12408
}
12409

12410
int32_t tDecodeSVAlterTbReqSetCtime(SDecoder *pDecoder, SVAlterTbReq *pReq, int64_t ctimeMs) {
15,576✔
12411
  int32_t code = 0;
15,576✔
12412
  int32_t lino;
12413

12414
  TAOS_CHECK_EXIT(tStartDecode(pDecoder));
15,576!
12415
  TAOS_CHECK_EXIT(tDecodeSVAlterTbReqCommon(pDecoder, pReq));
15,576!
12416

12417
  pReq->ctimeMs = 0;
15,576✔
12418
  if (!tDecodeIsEnd(pDecoder)) {
15,576!
12419
    *(int64_t *)(pDecoder->data + pDecoder->pos) = ctimeMs;
15,576✔
12420
    TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pReq->ctimeMs));
31,152!
12421
  }
12422

12423
  tEndDecode(pDecoder);
15,576✔
12424
_exit:
15,576✔
12425
  return code;
15,576✔
12426
}
12427

12428
void tfreeMultiTagUpateVal(void *val) {
×
12429
  SMultiTagUpateVal *pTag = val;
×
12430
  taosMemoryFree(pTag->tagName);
×
12431
  for (int i = 0; i < taosArrayGetSize(pTag->pTagArray); ++i) {
×
12432
    STagVal *p = (STagVal *)taosArrayGet(pTag->pTagArray, i);
×
12433
    if (IS_VAR_DATA_TYPE(p->type)) {
×
12434
      taosMemoryFreeClear(p->pData);
×
12435
    }
12436
  }
12437

12438
  taosArrayDestroy(pTag->pTagArray);
×
12439
}
×
12440
int32_t tEncodeSVAlterTbRsp(SEncoder *pEncoder, const SVAlterTbRsp *pRsp) {
31,166✔
12441
  int32_t code = 0;
31,166✔
12442
  int32_t lino;
12443

12444
  TAOS_CHECK_EXIT(tStartEncode(pEncoder));
31,166!
12445
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->code));
62,332!
12446
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->pMeta ? 1 : 0));
62,332!
12447
  if (pRsp->pMeta) {
31,166✔
12448
    TAOS_CHECK_EXIT(tEncodeSTableMetaRsp(pEncoder, pRsp->pMeta));
2,790!
12449
  }
12450
  tEndEncode(pEncoder);
31,166✔
12451
_exit:
31,166✔
12452
  return code;
31,166✔
12453
}
12454

12455
int32_t tDecodeSVAlterTbRsp(SDecoder *pDecoder, SVAlterTbRsp *pRsp) {
1,824✔
12456
  int32_t meta = 0;
1,824✔
12457
  int32_t code = 0;
1,824✔
12458
  int32_t lino;
12459
  TAOS_CHECK_EXIT(tStartDecode(pDecoder));
1,824!
12460
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->code));
3,648!
12461
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &meta));
1,824!
12462
  if (meta) {
1,824✔
12463
    pRsp->pMeta = taosMemoryCalloc(1, sizeof(STableMetaRsp));
901!
12464
    if (NULL == pRsp->pMeta) {
901!
12465
      TAOS_CHECK_EXIT(terrno);
×
12466
    }
12467
    TAOS_CHECK_EXIT(tDecodeSTableMetaRsp(pDecoder, pRsp->pMeta));
901!
12468
  }
12469
  tEndDecode(pDecoder);
1,824✔
12470
_exit:
1,824✔
12471
  return code;
1,824✔
12472
}
12473

12474
int32_t tEncodeSMAlterStbRsp(SEncoder *pEncoder, const SMAlterStbRsp *pRsp) {
18,294✔
12475
  int32_t code = 0;
18,294✔
12476
  int32_t lino;
12477

12478
  TAOS_CHECK_EXIT(tStartEncode(pEncoder));
18,294!
12479
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->pMeta->pSchemas ? 1 : 0));
36,588!
12480
  if (pRsp->pMeta->pSchemas) {
18,294!
12481
    TAOS_CHECK_EXIT(tEncodeSTableMetaRsp(pEncoder, pRsp->pMeta));
18,294!
12482
  }
12483
  tEndEncode(pEncoder);
18,294✔
12484
_exit:
18,294✔
12485
  return code;
18,294✔
12486
}
12487

12488
int32_t tDecodeSMAlterStbRsp(SDecoder *pDecoder, SMAlterStbRsp *pRsp) {
1,146✔
12489
  int32_t meta = 0;
1,146✔
12490
  int32_t code = 0;
1,146✔
12491
  int32_t lino;
12492

12493
  TAOS_CHECK_EXIT(tStartDecode(pDecoder));
1,146!
12494
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &meta));
1,146!
12495
  if (meta) {
1,146!
12496
    pRsp->pMeta = taosMemoryCalloc(1, sizeof(STableMetaRsp));
1,146!
12497
    if (NULL == pRsp->pMeta) {
1,146!
12498
      TAOS_CHECK_EXIT(terrno);
×
12499
    }
12500
    TAOS_CHECK_EXIT(tDecodeSTableMetaRsp(pDecoder, pRsp->pMeta));
1,146!
12501
  }
12502
  tEndDecode(pDecoder);
1,146✔
12503
_exit:
1,146✔
12504
  return code;
1,146✔
12505
}
12506

12507
void tFreeSMAlterStbRsp(SMAlterStbRsp *pRsp) {
9,147✔
12508
  if (NULL == pRsp) {
9,147!
12509
    return;
×
12510
  }
12511

12512
  if (pRsp->pMeta) {
9,147!
12513
    taosMemoryFree(pRsp->pMeta->pSchemas);
9,147!
12514
    taosMemoryFree(pRsp->pMeta->pSchemaExt);
9,147!
12515
    taosMemoryFree(pRsp->pMeta->pColRefs);
9,147!
12516
    taosMemoryFree(pRsp->pMeta);
9,147!
12517
  }
12518
}
12519

12520
int32_t tEncodeSMCreateStbRsp(SEncoder *pEncoder, const SMCreateStbRsp *pRsp) {
17,402✔
12521
  int32_t code = 0;
17,402✔
12522
  int32_t lino;
12523

12524
  TAOS_CHECK_EXIT(tStartEncode(pEncoder));
17,402!
12525
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->pMeta->pSchemas ? 1 : 0));
34,804!
12526
  if (pRsp->pMeta->pSchemas) {
17,402!
12527
    TAOS_CHECK_EXIT(tEncodeSTableMetaRsp(pEncoder, pRsp->pMeta));
17,402!
12528
  }
12529
  tEndEncode(pEncoder);
17,402✔
12530

12531
_exit:
17,402✔
12532
  return code;
17,402✔
12533
}
12534

12535
int32_t tDecodeSMCreateStbRsp(SDecoder *pDecoder, SMCreateStbRsp *pRsp) {
1,087✔
12536
  int32_t meta = 0;
1,087✔
12537
  int32_t code = 0;
1,087✔
12538
  int32_t lino;
12539

12540
  TAOS_CHECK_EXIT(tStartDecode(pDecoder));
1,087!
12541
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &meta));
1,087!
12542
  if (meta) {
1,087!
12543
    pRsp->pMeta = taosMemoryCalloc(1, sizeof(STableMetaRsp));
1,087!
12544
    if (NULL == pRsp->pMeta) {
1,087!
12545
      TAOS_CHECK_EXIT(terrno);
×
12546
    }
12547
    TAOS_CHECK_EXIT(tDecodeSTableMetaRsp(pDecoder, pRsp->pMeta));
1,087!
12548
  }
12549
  tEndDecode(pDecoder);
1,087✔
12550

12551
  return code;
1,087✔
12552

12553
_exit:
×
12554
  tFreeSTableMetaRsp(pRsp->pMeta);
×
12555
  taosMemoryFreeClear(pRsp->pMeta);
×
12556
  return code;
×
12557
}
12558

12559
void tFreeSMCreateStbRsp(SMCreateStbRsp *pRsp) {
8,701✔
12560
  if (NULL == pRsp) {
8,701!
12561
    return;
×
12562
  }
12563

12564
  if (pRsp->pMeta) {
8,701!
12565
    taosMemoryFree(pRsp->pMeta->pSchemas);
8,701!
12566
    taosMemoryFree(pRsp->pMeta->pSchemaExt);
8,701!
12567
    taosMemoryFree(pRsp->pMeta->pColRefs);
8,701!
12568
    taosMemoryFree(pRsp->pMeta);
8,701!
12569
  }
12570
}
12571

12572
int32_t tEncodeSTqOffsetVal(SEncoder *pEncoder, const STqOffsetVal *pOffsetVal) {
103,552✔
12573
  int32_t code = 0;
103,552✔
12574
  int32_t lino;
12575

12576
  int8_t type = pOffsetVal->type < 0 ? pOffsetVal->type : (TQ_OFFSET_VERSION << 4) | pOffsetVal->type;
103,552✔
12577
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, type));
207,104!
12578
  if (pOffsetVal->type == TMQ_OFFSET__SNAPSHOT_DATA || pOffsetVal->type == TMQ_OFFSET__SNAPSHOT_META) {
103,552!
12579
    TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pOffsetVal->uid));
7,974!
12580
    TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pOffsetVal->ts));
7,974!
12581
    TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pOffsetVal->primaryKey.type));
7,974!
12582
    if (IS_VAR_DATA_TYPE(pOffsetVal->primaryKey.type)) {
3,987!
12583
      TAOS_CHECK_EXIT(tEncodeBinary(pEncoder, pOffsetVal->primaryKey.pData, pOffsetVal->primaryKey.nData));
×
12584
    } else {
12585
      TAOS_CHECK_EXIT(tEncodeI64(pEncoder, VALUE_GET_TRIVIAL_DATUM(&pOffsetVal->primaryKey)));
7,984!
12586
    }
12587

12588
  } else if (pOffsetVal->type == TMQ_OFFSET__LOG) {
99,565✔
12589
    TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pOffsetVal->version));
197,580!
12590
  } else {
12591
    // do nothing
12592
  }
12593
_exit:
775✔
12594
  return code;
103,552✔
12595
}
12596

12597
int32_t tDecodeSTqOffsetVal(SDecoder *pDecoder, STqOffsetVal *pOffsetVal) {
55,099✔
12598
  int32_t code = 0;
55,099✔
12599
  int32_t lino;
12600

12601
  TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pOffsetVal->type));
110,214!
12602
  int8_t offsetVersion = 0;
55,115✔
12603
  if (pOffsetVal->type > 0) {
55,115✔
12604
    offsetVersion = (pOffsetVal->type >> 4);
52,410✔
12605
    pOffsetVal->type = pOffsetVal->type & 0x0F;
52,410✔
12606
  }
12607
  if (pOffsetVal->type == TMQ_OFFSET__SNAPSHOT_DATA || pOffsetVal->type == TMQ_OFFSET__SNAPSHOT_META) {
55,115✔
12608
    TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pOffsetVal->uid));
3,390!
12609
    TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pOffsetVal->ts));
3,377!
12610
    if (offsetVersion >= TQ_OFFSET_VERSION) {
1,688!
12611
      TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pOffsetVal->primaryKey.type));
3,375!
12612
      if (IS_VAR_DATA_TYPE(pOffsetVal->primaryKey.type)) {
1,687!
12613
        TAOS_CHECK_EXIT(
×
12614
            tDecodeBinaryAlloc32(pDecoder, (void **)&pOffsetVal->primaryKey.pData, &pOffsetVal->primaryKey.nData));
12615
      } else {
12616
        TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &VALUE_GET_TRIVIAL_DATUM(&pOffsetVal->primaryKey)));
3,373!
12617
      }
12618
    }
12619
  } else if (pOffsetVal->type == TMQ_OFFSET__LOG) {
53,414✔
12620
    TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pOffsetVal->version));
100,915!
12621
  } else {
12622
    // do nothing
12623
  }
12624
_exit:
2,964✔
12625
  return code;
55,115✔
12626
}
12627

12628
void tFormatOffset(char *buf, int32_t maxLen, const STqOffsetVal *pVal) {
113,408✔
12629
  if (pVal->type == TMQ_OFFSET__RESET_NONE) {
113,408✔
12630
    (void)snprintf(buf, maxLen, "none");
725✔
12631
  } else if (pVal->type == TMQ_OFFSET__RESET_EARLIEST) {
112,683✔
12632
    (void)snprintf(buf, maxLen, "earliest");
2,140✔
12633
  } else if (pVal->type == TMQ_OFFSET__RESET_LATEST) {
110,543✔
12634
    (void)snprintf(buf, maxLen, "latest");
122✔
12635
  } else if (pVal->type == TMQ_OFFSET__LOG) {
110,421✔
12636
    (void)snprintf(buf, maxLen, "wal:%" PRId64, pVal->version);
106,025✔
12637
  } else if (pVal->type == TMQ_OFFSET__SNAPSHOT_DATA || pVal->type == TMQ_OFFSET__SNAPSHOT_META) {
4,396!
12638
    if (IS_VAR_DATA_TYPE(pVal->primaryKey.type)) {
4,396!
12639
      char *tmp = taosMemoryCalloc(1, pVal->primaryKey.nData + 1);
×
12640
      if (tmp == NULL) return;
×
12641
      (void)memcpy(tmp, pVal->primaryKey.pData, pVal->primaryKey.nData);
×
12642
      (void)snprintf(buf, maxLen, "tsdb:%" PRId64 "|%" PRId64 ",pk type:%d,val:%s", pVal->uid, pVal->ts,
×
12643
                     pVal->primaryKey.type, tmp);
×
12644
      taosMemoryFree(tmp);
×
12645
    } else {
12646
      (void)snprintf(buf, maxLen, "tsdb:%" PRId64 "|%" PRId64 ",pk type:%d,val:%" PRId64, pVal->uid, pVal->ts,
4,398✔
12647
                     pVal->primaryKey.type, VALUE_GET_TRIVIAL_DATUM(&pVal->primaryKey));
4,398✔
12648
    }
12649
  }
12650
}
12651

12652
bool tOffsetEqual(const STqOffsetVal *pLeft, const STqOffsetVal *pRight) {
27,846✔
12653
  if (pLeft->type == pRight->type) {
27,846✔
12654
    if (pLeft->type == TMQ_OFFSET__LOG) {
26,264✔
12655
      return pLeft->version == pRight->version;
22,893✔
12656
    } else if (pLeft->type == TMQ_OFFSET__SNAPSHOT_DATA) {
3,371!
12657
      if (pLeft->primaryKey.type != 0) {
3,372!
12658
        if (pLeft->primaryKey.type != pRight->primaryKey.type) return false;
×
12659
        if (tValueCompare(&pLeft->primaryKey, &pRight->primaryKey) != 0) return false;
×
12660
      }
12661
      return pLeft->uid == pRight->uid && pLeft->ts == pRight->ts;
3,372✔
12662
    } else if (pLeft->type == TMQ_OFFSET__SNAPSHOT_META) {
×
12663
      return pLeft->uid == pRight->uid;
×
12664
    } else {
12665
      uError("offset type:%d", pLeft->type);
×
12666
    }
12667
  }
12668
  return false;
1,583✔
12669
}
12670

12671
void tOffsetCopy(STqOffsetVal *pLeft, const STqOffsetVal *pRight) {
153,458✔
12672
  tOffsetDestroy(pLeft);
153,458✔
12673
  *pLeft = *pRight;
153,458✔
12674
  if (IS_VAR_DATA_TYPE(pRight->primaryKey.type)) {
153,458!
12675
    pLeft->primaryKey.pData = taosMemoryMalloc(pRight->primaryKey.nData);
×
12676
    if (pLeft->primaryKey.pData == NULL) {
×
12677
      uError("failed to allocate memory for offset");
×
12678
      return;
×
12679
    }
12680
    (void)memcpy(pLeft->primaryKey.pData, pRight->primaryKey.pData, pRight->primaryKey.nData);
×
12681
  }
12682
}
12683

12684
void tOffsetDestroy(void *param) {
8,470,552✔
12685
  if (param == NULL) return;
8,470,552!
12686
  STqOffsetVal *pVal = (STqOffsetVal *)param;
8,470,552✔
12687
  if (IS_VAR_DATA_TYPE(pVal->primaryKey.type)) {
8,470,552!
12688
    taosMemoryFreeClear(pVal->primaryKey.pData);
×
12689
  }
12690
}
12691

12692
void tDeleteSTqOffset(void *param) {
13,351✔
12693
  if (param == NULL) return;
13,351✔
12694
  STqOffset *pVal = (STqOffset *)param;
13,348✔
12695
  tOffsetDestroy(&pVal->val);
13,348✔
12696
}
12697

12698
int32_t tEncodeSTqOffset(SEncoder *pEncoder, const STqOffset *pOffset) {
479✔
12699
  TAOS_CHECK_RETURN(tEncodeSTqOffsetVal(pEncoder, &pOffset->val));
479!
12700
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pOffset->subKey));
960!
12701
  return 0;
480✔
12702
}
12703

12704
int32_t tDecodeSTqOffset(SDecoder *pDecoder, STqOffset *pOffset) {
13,358✔
12705
  TAOS_CHECK_RETURN(tDecodeSTqOffsetVal(pDecoder, &pOffset->val));
13,358!
12706
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pOffset->subKey));
13,357!
12707
  return 0;
13,357✔
12708
}
12709

12710
int32_t tEncodeMqVgOffset(SEncoder *pEncoder, const SMqVgOffset *pOffset) {
267✔
12711
  TAOS_CHECK_RETURN(tEncodeSTqOffset(pEncoder, &pOffset->offset));
267!
12712
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pOffset->consumerId));
536!
12713
  return 0;
268✔
12714
}
12715

12716
int32_t tDecodeMqVgOffset(SDecoder *pDecoder, SMqVgOffset *pOffset) {
13,238✔
12717
  TAOS_CHECK_RETURN(tDecodeSTqOffset(pDecoder, &pOffset->offset));
13,238!
12718
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pOffset->consumerId));
26,474!
12719
  return 0;
13,237✔
12720
}
12721

12722
int32_t tEncodeSTqCheckInfo(SEncoder *pEncoder, const STqCheckInfo *pInfo) {
62✔
12723
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pInfo->topic));
124!
12724
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pInfo->ntbUid));
124!
12725
  int32_t sz = taosArrayGetSize(pInfo->colIdList);
62✔
12726
  TAOS_CHECK_RETURN(tEncodeI32(pEncoder, sz));
62!
12727
  for (int32_t i = 0; i < sz; i++) {
304✔
12728
    int16_t colId = *(int16_t *)taosArrayGet(pInfo->colIdList, i);
242✔
12729
    TAOS_CHECK_RETURN(tEncodeI16(pEncoder, colId));
484!
12730
  }
12731
  return pEncoder->pos;
62✔
12732
}
12733

12734
int32_t tDecodeSTqCheckInfo(SDecoder *pDecoder, STqCheckInfo *pInfo) {
136✔
12735
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pInfo->topic));
136!
12736
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pInfo->ntbUid));
272!
12737
  int32_t sz = 0;
136✔
12738
  TAOS_CHECK_RETURN(tDecodeI32(pDecoder, &sz));
136!
12739
  pInfo->colIdList = taosArrayInit(sz, sizeof(int16_t));
136✔
12740
  if (pInfo->colIdList == NULL) {
136!
12741
    TAOS_CHECK_RETURN(terrno);
×
12742
  }
12743
  for (int32_t i = 0; i < sz; i++) {
473✔
12744
    int16_t colId = 0;
337✔
12745
    TAOS_CHECK_RETURN(tDecodeI16(pDecoder, &colId));
337!
12746
    if (taosArrayPush(pInfo->colIdList, &colId) == NULL) {
674!
12747
      TAOS_CHECK_RETURN(terrno);
×
12748
    }
12749
  }
12750
  return 0;
136✔
12751
}
12752
void tDeleteSTqCheckInfo(STqCheckInfo *pInfo) { taosArrayDestroy(pInfo->colIdList); }
12,964✔
12753

12754
int32_t tEncodeSMqRebVgReq(SEncoder *pCoder, const SMqRebVgReq *pReq) {
4,168✔
12755
  TAOS_CHECK_RETURN(tStartEncode(pCoder));
4,168!
12756
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->leftForVer));
8,336!
12757
  TAOS_CHECK_RETURN(tEncodeI32(pCoder, pReq->vgId));
8,336!
12758
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->oldConsumerId));
8,336!
12759
  TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->newConsumerId));
8,336!
12760
  TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pReq->subKey));
8,336!
12761
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pReq->subType));
8,336!
12762
  TAOS_CHECK_RETURN(tEncodeI8(pCoder, pReq->withMeta));
8,336!
12763

12764
  if (pReq->subType == TOPIC_SUB_TYPE__COLUMN) {
4,168✔
12765
    TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pReq->qmsg));
6,500!
12766
  } else if (pReq->subType == TOPIC_SUB_TYPE__TABLE) {
918✔
12767
    TAOS_CHECK_RETURN(tEncodeI64(pCoder, pReq->suid));
288!
12768
    TAOS_CHECK_RETURN(tEncodeCStr(pCoder, pReq->qmsg));
288!
12769
  }
12770
  tEndEncode(pCoder);
4,168✔
12771
  return 0;
4,168✔
12772
}
12773

12774
int32_t tDecodeSMqRebVgReq(SDecoder *pCoder, SMqRebVgReq *pReq) {
2,636✔
12775
  int32_t code = 0;
2,636✔
12776
  int32_t lino;
12777

12778
  TAOS_CHECK_EXIT(tStartDecode(pCoder));
2,636!
12779

12780
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->leftForVer));
5,274!
12781

12782
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pReq->vgId));
5,274!
12783
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->oldConsumerId));
5,274!
12784
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->newConsumerId));
5,274!
12785
  TAOS_CHECK_EXIT(tDecodeCStrTo(pCoder, pReq->subKey));
2,637!
12786
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pReq->subType));
5,274!
12787
  TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pReq->withMeta));
5,274!
12788

12789
  if (pReq->subType == TOPIC_SUB_TYPE__COLUMN) {
2,637✔
12790
    TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pReq->qmsg));
4,060!
12791
  } else if (pReq->subType == TOPIC_SUB_TYPE__TABLE) {
607✔
12792
    TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pReq->suid));
196!
12793
    if (!tDecodeIsEnd(pCoder)) {
98!
12794
      TAOS_CHECK_EXIT(tDecodeCStr(pCoder, &pReq->qmsg));
196!
12795
    }
12796
  }
12797

12798
  tEndDecode(pCoder);
2,637✔
12799
_exit:
2,636✔
12800
  return code;
2,636✔
12801
}
12802

12803
int32_t tEncodeDeleteRes(SEncoder *pCoder, const SDeleteRes *pRes) {
125,091✔
12804
  int32_t nUid = taosArrayGetSize(pRes->uidList);
125,091✔
12805
  int32_t code = 0;
125,088✔
12806
  int32_t lino;
12807

12808
  TAOS_CHECK_EXIT(tEncodeU64(pCoder, pRes->suid));
250,176!
12809
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, nUid));
125,088!
12810
  for (int32_t iUid = 0; iUid < nUid; iUid++) {
279,362✔
12811
    TAOS_CHECK_EXIT(tEncodeU64(pCoder, *(uint64_t *)taosArrayGet(pRes->uidList, iUid)));
308,549!
12812
  }
12813
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pRes->skey));
250,174!
12814
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pRes->ekey));
250,174!
12815
  TAOS_CHECK_EXIT(tEncodeI64v(pCoder, pRes->affectedRows));
250,174!
12816

12817
  TAOS_CHECK_EXIT(tEncodeCStr(pCoder, pRes->tableFName));
250,174!
12818
  TAOS_CHECK_EXIT(tEncodeCStr(pCoder, pRes->tsColName));
250,174!
12819
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pRes->ctimeMs));
250,174!
12820
  TAOS_CHECK_EXIT(tEncodeI8(pCoder, pRes->source));
250,174!
12821

12822
_exit:
125,087✔
12823
  return code;
125,087✔
12824
}
12825

12826
int32_t tDecodeDeleteRes(SDecoder *pCoder, SDeleteRes *pRes) {
64,825✔
12827
  int32_t  nUid;
12828
  uint64_t uid;
12829
  int32_t  code = 0;
64,825✔
12830
  int32_t  lino;
12831

12832
  TAOS_CHECK_EXIT(tDecodeU64(pCoder, &pRes->suid));
129,658!
12833
  TAOS_CHECK_EXIT(tDecodeI32v(pCoder, &nUid));
64,827!
12834
  for (int32_t iUid = 0; iUid < nUid; iUid++) {
144,305✔
12835
    TAOS_CHECK_EXIT(tDecodeU64(pCoder, &uid));
79,482!
12836
    if (pRes->uidList) {
79,482✔
12837
      if (taosArrayPush(pRes->uidList, &uid) == NULL) {
158,940!
12838
        TAOS_CHECK_EXIT(terrno);
×
12839
      }
12840
    }
12841
  }
12842
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pRes->skey));
129,651!
12843
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pRes->ekey));
129,658!
12844
  TAOS_CHECK_EXIT(tDecodeI64v(pCoder, &pRes->affectedRows));
129,671!
12845

12846
  TAOS_CHECK_EXIT(tDecodeCStrTo(pCoder, pRes->tableFName));
64,838!
12847
  TAOS_CHECK_EXIT(tDecodeCStrTo(pCoder, pRes->tsColName));
64,838!
12848

12849
  pRes->ctimeMs = 0;
64,838✔
12850
  if (!tDecodeIsEnd(pCoder)) {
64,838✔
12851
    TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pRes->ctimeMs));
129,659!
12852
  }
12853
  if (!tDecodeIsEnd(pCoder)) {
64,841✔
12854
    TAOS_CHECK_EXIT(tDecodeI8(pCoder, &pRes->source));
129,674!
12855
  }
12856

12857
_exit:
64,843✔
12858
  return code;
64,843✔
12859
}
12860

12861
int32_t tEncodeMqMetaRsp(SEncoder *pEncoder, const SMqMetaRsp *pRsp) {
640✔
12862
  TAOS_CHECK_RETURN(tEncodeSTqOffsetVal(pEncoder, &pRsp->rspOffset));
640!
12863
  TAOS_CHECK_RETURN(tEncodeI16(pEncoder, pRsp->resMsgType));
1,280!
12864
  TAOS_CHECK_RETURN(tEncodeBinary(pEncoder, pRsp->metaRsp, pRsp->metaRspLen));
1,280!
12865
  return 0;
640✔
12866
}
12867

12868
int32_t tDecodeMqMetaRsp(SDecoder *pDecoder, SMqMetaRsp *pRsp) {
434✔
12869
  TAOS_CHECK_RETURN(tDecodeSTqOffsetVal(pDecoder, &pRsp->rspOffset));
434!
12870
  TAOS_CHECK_RETURN(tDecodeI16(pDecoder, &pRsp->resMsgType));
868!
12871
  TAOS_CHECK_RETURN(tDecodeBinaryAlloc(pDecoder, &pRsp->metaRsp, (uint64_t *)&pRsp->metaRspLen));
868!
12872
  return 0;
434✔
12873
}
12874

12875
void tDeleteMqMetaRsp(SMqMetaRsp *pRsp) { taosMemoryFree(pRsp->metaRsp); }
617!
12876

12877
int32_t tEncodeMqDataRspCommon(SEncoder *pEncoder, const SMqDataRsp *pRsp) {
50,098✔
12878
  int32_t code = 0;
50,098✔
12879
  int32_t lino;
12880

12881
  TAOS_CHECK_EXIT(tEncodeSTqOffsetVal(pEncoder, &pRsp->reqOffset));
50,098!
12882
  TAOS_CHECK_EXIT(tEncodeSTqOffsetVal(pEncoder, &pRsp->rspOffset));
50,095!
12883
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->blockNum));
100,188!
12884
  if (pRsp->blockNum != 0) {
50,094✔
12885
    TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pRsp->withTbName));
61,256!
12886
    TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pRsp->withSchema));
61,256!
12887

12888
    for (int32_t i = 0; i < pRsp->blockNum; i++) {
591,508✔
12889
      int32_t bLen = *(int32_t *)taosArrayGet(pRsp->blockDataLen, i);
562,879✔
12890
      void   *data = taosArrayGetP(pRsp->blockData, i);
562,482✔
12891
      TAOS_CHECK_EXIT(tEncodeBinary(pEncoder, (const uint8_t *)data, bLen));
1,123,930!
12892
      if (pRsp->withSchema) {
561,965✔
12893
        SSchemaWrapper *pSW = (SSchemaWrapper *)taosArrayGetP(pRsp->blockSchema, i);
157,406✔
12894
        TAOS_CHECK_EXIT(tEncodeSSchemaWrapper(pEncoder, pSW));
156,776!
12895
      }
12896
      if (pRsp->withTbName) {
561,335✔
12897
        char *tbName = (char *)taosArrayGetP(pRsp->blockTbName, i);
158,839✔
12898
        TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, tbName));
158,384!
12899
      }
12900
    }
12901
  }
12902

12903
_exit:
48,095✔
12904
  return code;
48,095✔
12905
}
12906

12907
int32_t tEncodeMqDataRsp(SEncoder *pEncoder, const SMqDataRsp *pRsp) {
50,058✔
12908
  TAOS_CHECK_RETURN(tEncodeMqDataRspCommon(pEncoder, pRsp));
50,058!
12909
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pRsp->sleepTime));
100,116!
12910

12911
  return 0;
50,058✔
12912
}
12913

12914
int32_t tDecodeMqDataRspCommon(SDecoder *pDecoder, SMqDataRsp *pRsp) {
395✔
12915
  int32_t code = 0;
395✔
12916
  int32_t lino;
12917

12918
  TAOS_CHECK_EXIT(tDecodeSTqOffsetVal(pDecoder, &pRsp->reqOffset));
395!
12919
  TAOS_CHECK_EXIT(tDecodeSTqOffsetVal(pDecoder, &pRsp->rspOffset));
395!
12920
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->blockNum));
790!
12921

12922
  if (pRsp->blockNum != 0) {
395✔
12923
    if ((pRsp->blockData = taosArrayInit(pRsp->blockNum, sizeof(void *))) == NULL) {
145!
12924
      TAOS_CHECK_EXIT(terrno);
×
12925
    }
12926
    if ((pRsp->blockDataLen = taosArrayInit(pRsp->blockNum, sizeof(int32_t))) == NULL) {
145!
12927
      TAOS_CHECK_EXIT(terrno);
×
12928
    }
12929
    TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pRsp->withTbName));
290!
12930
    TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pRsp->withSchema));
290!
12931
    if (pRsp->withTbName) {
145✔
12932
      if ((pRsp->blockTbName = taosArrayInit(pRsp->blockNum, sizeof(void *))) == NULL) {
111!
12933
        TAOS_CHECK_EXIT(terrno);
×
12934
      }
12935
    }
12936
    if (pRsp->withSchema) {
145✔
12937
      if ((pRsp->blockSchema = taosArrayInit(pRsp->blockNum, sizeof(void *))) == NULL) {
111!
12938
        TAOS_CHECK_EXIT(terrno);
×
12939
      }
12940
    }
12941

12942
    for (int32_t i = 0; i < pRsp->blockNum; i++) {
580✔
12943
      void    *data = NULL;
435✔
12944
      uint32_t bLen = 0;
435✔
12945
      TAOS_CHECK_EXIT(tDecodeBinary(pDecoder, (uint8_t **)&data, &bLen));
435!
12946
      if (taosArrayPush(pRsp->blockData, &data) == NULL) {
870!
12947
        TAOS_CHECK_EXIT(terrno);
×
12948
      }
12949
      pRsp->blockDataElementFree = false;
435✔
12950

12951
      int32_t len = bLen;
435✔
12952
      if (taosArrayPush(pRsp->blockDataLen, &len) == NULL) {
870!
12953
        TAOS_CHECK_EXIT(terrno);
×
12954
      }
12955

12956
      if (pRsp->withSchema) {
435✔
12957
        SSchemaWrapper *pSW = (SSchemaWrapper *)taosMemoryCalloc(1, sizeof(SSchemaWrapper));
392!
12958
        if (pSW == NULL) {
392!
12959
          TAOS_CHECK_EXIT(terrno);
×
12960
        }
12961

12962
        if ((code = tDecodeSSchemaWrapper(pDecoder, pSW))) {
784!
12963
          taosMemoryFree(pSW);
×
12964
          goto _exit;
×
12965
        }
12966

12967
        if (taosArrayPush(pRsp->blockSchema, &pSW) == NULL) {
784!
12968
          taosMemoryFree(pSW);
×
12969
          TAOS_CHECK_EXIT(terrno);
×
12970
        }
12971
      }
12972

12973
      if (pRsp->withTbName) {
435✔
12974
        char *tbName;
12975
        TAOS_CHECK_EXIT(tDecodeCStrAlloc(pDecoder, &tbName));
392!
12976
        if (taosArrayPush(pRsp->blockTbName, &tbName) == NULL) {
784!
12977
          TAOS_CHECK_EXIT(terrno);
×
12978
        }
12979
      }
12980
    }
12981
  }
12982

12983
_exit:
395✔
12984
  return code;
395✔
12985
}
12986

12987
int32_t tDecodeMqDataRsp(SDecoder *pDecoder, SMqDataRsp *pRsp) {
377✔
12988
  TAOS_CHECK_RETURN(tDecodeMqDataRspCommon(pDecoder, pRsp));
377!
12989
  if (!tDecodeIsEnd(pDecoder)) {
377!
12990
    TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pRsp->sleepTime));
754!
12991
  }
12992

12993
  return 0;
377✔
12994
}
12995

12996
int32_t tDecodeMqRawDataRsp(SDecoder *pDecoder, SMqDataRsp *pRsp) {
×
12997
  int32_t code = 0;
×
12998
  int32_t lino;
12999

13000
  TAOS_CHECK_EXIT(tDecodeSTqOffsetVal(pDecoder, &pRsp->reqOffset));
×
13001
  TAOS_CHECK_EXIT(tDecodeSTqOffsetVal(pDecoder, &pRsp->rspOffset));
×
13002
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->blockNum));
×
13003
_exit:
×
13004
  return code;
×
13005
}
13006

13007
static void tDeleteMqDataRspCommon(SMqDataRsp *pRsp) {
36,111✔
13008
  taosArrayDestroy(pRsp->blockDataLen);
36,111✔
13009
  pRsp->blockDataLen = NULL;
36,113✔
13010
  if (pRsp->blockDataElementFree) {
36,113✔
13011
    taosArrayDestroyP(pRsp->blockData, NULL);
15,275✔
13012
  } else {
13013
    taosArrayDestroy(pRsp->blockData);
20,838✔
13014
  }
13015
  pRsp->blockData = NULL;
36,113✔
13016
  taosArrayDestroyP(pRsp->blockSchema, (FDelete)tDeleteSchemaWrapper);
36,113✔
13017
  pRsp->blockSchema = NULL;
36,113✔
13018
  taosArrayDestroyP(pRsp->blockTbName, NULL);
36,113✔
13019
  pRsp->blockTbName = NULL;
36,115✔
13020
  tOffsetDestroy(&pRsp->reqOffset);
36,115✔
13021
  tOffsetDestroy(&pRsp->rspOffset);
36,113✔
13022
  taosMemoryFreeClear(pRsp->data);
36,112!
13023
}
36,112✔
13024

13025
void tDeleteMqDataRsp(SMqDataRsp *rsp) { tDeleteMqDataRspCommon(rsp); }
26,227✔
13026

13027
int32_t tEncodeSTaosxRsp(SEncoder *pEncoder, const SMqDataRsp *pRsp) {
40✔
13028
  int32_t code = 0;
40✔
13029
  int32_t lino = 0;
40✔
13030

13031
  TAOS_CHECK_EXIT(tEncodeMqDataRspCommon(pEncoder, pRsp));
40!
13032
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->createTableNum));
80!
13033
  if (pRsp->createTableNum) {
40!
13034
    for (int32_t i = 0; i < pRsp->createTableNum; i++) {
122✔
13035
      void   *createTableReq = taosArrayGetP(pRsp->createTableReq, i);
82✔
13036
      int32_t createTableLen = *(int32_t *)taosArrayGet(pRsp->createTableLen, i);
82✔
13037
      TAOS_CHECK_EXIT(tEncodeBinary(pEncoder, createTableReq, createTableLen));
164!
13038
    }
13039
  }
13040

13041
_exit:
40✔
13042
  return code;
40✔
13043
}
13044

13045
int32_t tDecodeSTaosxRsp(SDecoder *pDecoder, SMqDataRsp *pRsp) {
18✔
13046
  int32_t code = 0;
18✔
13047
  int32_t lino;
13048

13049
  TAOS_CHECK_EXIT(tDecodeMqDataRspCommon(pDecoder, pRsp));
18!
13050
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->createTableNum));
36!
13051
  if (pRsp->createTableNum) {
18!
13052
    if ((pRsp->createTableLen = taosArrayInit(pRsp->createTableNum, sizeof(int32_t))) == NULL) {
18!
13053
      TAOS_CHECK_EXIT(terrno);
×
13054
    }
13055
    if ((pRsp->createTableReq = taosArrayInit(pRsp->createTableNum, sizeof(void *))) == NULL) {
18!
13056
      TAOS_CHECK_EXIT(terrno);
×
13057
    }
13058
    for (int32_t i = 0; i < pRsp->createTableNum; i++) {
55✔
13059
      void    *pCreate = NULL;
37✔
13060
      uint64_t len = 0;
37✔
13061
      TAOS_CHECK_EXIT(tDecodeBinaryAlloc(pDecoder, &pCreate, &len));
37!
13062
      int32_t l = (int32_t)len;
37✔
13063
      if (taosArrayPush(pRsp->createTableLen, &l) == NULL) {
74!
13064
        TAOS_CHECK_EXIT(terrno);
×
13065
      }
13066
      if (taosArrayPush(pRsp->createTableReq, &pCreate) == NULL) {
74!
13067
        TAOS_CHECK_EXIT(terrno);
×
13068
      }
13069
    }
13070
  }
13071
_exit:
18✔
13072
  return code;
18✔
13073
}
13074

13075
void tDeleteSTaosxRsp(SMqDataRsp *pRsp) {
9,884✔
13076
  tDeleteMqDataRspCommon(pRsp);
9,884✔
13077

13078
  taosArrayDestroy(pRsp->createTableLen);
9,884✔
13079
  pRsp->createTableLen = NULL;
9,885✔
13080
  taosArrayDestroyP(pRsp->createTableReq, NULL);
9,885✔
13081
  pRsp->createTableReq = NULL;
9,885✔
13082
}
9,885✔
13083

13084
void tDeleteMqRawDataRsp(SMqDataRsp *pRsp) {
×
13085
  tOffsetDestroy(&pRsp->reqOffset);
×
13086
  tOffsetDestroy(&pRsp->rspOffset);
×
13087
  if (pRsp->rawData != NULL) {
×
13088
    taosMemoryFree(POINTER_SHIFT(pRsp->rawData, -sizeof(SMqRspHead)));
×
13089
  }
13090
}
×
13091

13092
int32_t tEncodeSSingleDeleteReq(SEncoder *pEncoder, const SSingleDeleteReq *pReq) {
×
13093
  TAOS_CHECK_RETURN(tEncodeCStr(pEncoder, pReq->tbname));
×
13094
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pReq->startTs));
×
13095
  TAOS_CHECK_RETURN(tEncodeI64(pEncoder, pReq->endTs));
×
13096
  return 0;
×
13097
}
13098

13099
int32_t tDecodeSSingleDeleteReq(SDecoder *pDecoder, SSingleDeleteReq *pReq) {
×
13100
  TAOS_CHECK_RETURN(tDecodeCStrTo(pDecoder, pReq->tbname));
×
13101
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pReq->startTs));
×
13102
  TAOS_CHECK_RETURN(tDecodeI64(pDecoder, &pReq->endTs));
×
13103
  return 0;
×
13104
}
13105

13106
int32_t tEncodeSBatchDeleteReq(SEncoder *pEncoder, const SBatchDeleteReq *pReq) {
×
13107
  int32_t code = 0;
×
13108
  int32_t lino;
13109

13110
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pReq->suid));
×
13111
  int32_t sz = taosArrayGetSize(pReq->deleteReqs);
×
13112
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, sz));
×
13113
  for (int32_t i = 0; i < sz; i++) {
×
13114
    SSingleDeleteReq *pOneReq = taosArrayGet(pReq->deleteReqs, i);
×
13115
    TAOS_CHECK_EXIT(tEncodeSSingleDeleteReq(pEncoder, pOneReq));
×
13116
  }
13117
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pReq->ctimeMs));
×
13118
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pReq->level));
×
13119
_exit:
×
13120
  return code;
×
13121
}
13122

13123
static int32_t tDecodeSBatchDeleteReqCommon(SDecoder *pDecoder, SBatchDeleteReq *pReq) {
×
13124
  int32_t code = 0;
×
13125
  int32_t lino;
13126

13127
  TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pReq->suid));
×
13128
  int32_t sz;
13129
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &sz));
×
13130
  pReq->deleteReqs = taosArrayInit(0, sizeof(SSingleDeleteReq));
×
13131
  if (pReq->deleteReqs == NULL) {
×
13132
    TAOS_CHECK_EXIT(terrno);
×
13133
  }
13134
  for (int32_t i = 0; i < sz; i++) {
×
13135
    SSingleDeleteReq deleteReq;
13136
    TAOS_CHECK_EXIT(tDecodeSSingleDeleteReq(pDecoder, &deleteReq));
×
13137
    if (taosArrayPush(pReq->deleteReqs, &deleteReq) == NULL) {
×
13138
      TAOS_CHECK_EXIT(terrno);
×
13139
    }
13140
  }
13141
_exit:
×
13142
  return code;
×
13143
}
13144

13145
int32_t tDecodeSBatchDeleteReq(SDecoder *pDecoder, SBatchDeleteReq *pReq) {
×
13146
  int32_t code = 0;
×
13147
  int32_t lino;
13148

13149
  TAOS_CHECK_EXIT(tDecodeSBatchDeleteReqCommon(pDecoder, pReq));
×
13150

13151
  pReq->ctimeMs = 0;
×
13152
  if (!tDecodeIsEnd(pDecoder)) {
×
13153
    TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pReq->ctimeMs));
×
13154
  }
13155
  if (!tDecodeIsEnd(pDecoder)) {
×
13156
    TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pReq->level));
×
13157
  }
13158

13159
_exit:
×
13160
  return code;
×
13161
}
13162

13163
int32_t tDecodeSBatchDeleteReqSetCtime(SDecoder *pDecoder, SBatchDeleteReq *pReq, int64_t ctimeMs) {
×
13164
  int32_t code = 0;
×
13165
  int32_t lino;
13166

13167
  TAOS_CHECK_EXIT(tDecodeSBatchDeleteReqCommon(pDecoder, pReq));
×
13168

13169
  pReq->ctimeMs = 0;
×
13170
  if (!tDecodeIsEnd(pDecoder)) {
×
13171
    *(int64_t *)(pDecoder->data + pDecoder->pos) = ctimeMs;
×
13172
    TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pReq->ctimeMs));
×
13173
  }
13174

13175
_exit:
×
13176
  return code;
×
13177
}
13178
int32_t transformRawSSubmitTbData(void *data, int64_t suid, int64_t uid, int32_t sver) {
×
13179
  int32_t  code = 0;
×
13180
  int32_t  lino = 0;
×
13181
  SDecoder decoder = {0};
×
13182
  tDecoderInit(&decoder, (uint8_t *)POINTER_SHIFT(data, INT_BYTES), *(uint32_t *)data);
×
13183

13184
  int32_t flags = 0;
×
13185
  TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &flags));
×
13186
  flags |= TD_REQ_FROM_TAOX;
×
13187
  flags &= ~SUBMIT_REQ_AUTO_CREATE_TABLE;
×
13188

13189
  SEncoder encoder = {0};
×
13190
  tEncoderInit(&encoder, (uint8_t *)POINTER_SHIFT(data, INT_BYTES), *(uint32_t *)data);
×
13191
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, flags));
×
13192
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, suid));
×
13193
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, uid));
×
13194
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, sver));
×
13195
_exit:
×
13196
  return code;
×
13197
}
13198

13199
static int32_t tPreCheckSubmitTbData(const SSubmitTbData *pSubmitData, int8_t *hasBlob) {
16,018,865✔
13200
  int32_t code = 0;
16,018,865✔
13201
  int32_t line = 0;
16,018,865✔
13202
  if (tBlobSetSize(pSubmitData->pBlobSet) > 0) {
16,018,865!
13203
    *hasBlob = 1;
×
13204
    return code;
×
13205
  }
13206
    return 0;
16,045,821✔
13207
}
13208
static int32_t tEncodeSSubmitTbData(SEncoder *pCoder, const SSubmitTbData *pSubmitTbData) {
16,022,920✔
13209
  int32_t code = 0;
16,022,920✔
13210
  int32_t lino;
13211
  int8_t  hasBlob = 0;
16,022,920✔
13212

13213
  int32_t count = 0;
16,022,920✔
13214
  TAOS_CHECK_EXIT(tPreCheckSubmitTbData(pSubmitTbData, &hasBlob));
16,022,920!
13215

13216
  TAOS_CHECK_EXIT(tStartEncode(pCoder));
16,042,865!
13217

13218
  int32_t flags = pSubmitTbData->flags | ((SUBMIT_REQUEST_VERSION) << 8);
16,086,459✔
13219

13220
  if (hasBlob) {
16,086,459!
13221
    flags |= SUBMIT_REQ_WITH_BLOB;
×
13222
  }
13223
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, flags));
16,086,459!
13224

13225
  // auto create table
13226
  if (pSubmitTbData->flags & SUBMIT_REQ_AUTO_CREATE_TABLE) {
16,086,459✔
13227
    if (!(pSubmitTbData->pCreateTbReq)) {
29,895!
13228
      uError("auto create table but request is NULL");
×
13229
      return TSDB_CODE_INVALID_MSG;
×
13230
    }
13231
    TAOS_CHECK_EXIT(tEncodeSVCreateTbReq(pCoder, pSubmitTbData->pCreateTbReq));
29,895!
13232
  }
13233

13234
  // submit data
13235
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pSubmitTbData->suid));
32,172,874!
13236
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pSubmitTbData->uid));
32,172,874!
13237
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pSubmitTbData->sver));
32,172,874!
13238

13239
  if (pSubmitTbData->flags & SUBMIT_REQ_COLUMN_DATA_FORMAT) {
16,086,437✔
13240
    uint64_t  nColData = TARRAY_SIZE(pSubmitTbData->aCol);
23,288✔
13241
    SColData *aColData = (SColData *)TARRAY_DATA(pSubmitTbData->aCol);
23,288✔
13242

13243
    uTrace("encode %d row data", (int32_t)(nColData));
23,288!
13244
    TAOS_CHECK_EXIT(tEncodeU64v(pCoder, nColData));
23,305!
13245

13246
    for (uint64_t i = 0; i < nColData; i++) {
105,021✔
13247
      if (IS_STR_DATA_BLOB(aColData[i].type)) {
81,685!
13248
        count = aColData[i].numOfNull + aColData[i].numOfValue + aColData[i].numOfNone; 
×
13249
      }  
13250
      TAOS_CHECK_EXIT(tEncodeColData(SUBMIT_REQUEST_VERSION, pCoder, &aColData[i]));
81,685!
13251
    }
13252

13253
  } else {
13254
    uTrace("encode %d row data", (int32_t)(TARRAY_SIZE(pSubmitTbData->aRowP)));
16,063,149!
13255
    TAOS_CHECK_EXIT(tEncodeU64v(pCoder, TARRAY_SIZE(pSubmitTbData->aRowP)));
32,097,652!
13256

13257
    SRow **rows = (SRow **)TARRAY_DATA(pSubmitTbData->aRowP);
16,048,826✔
13258
    for (int32_t iRow = 0; iRow < TARRAY_SIZE(pSubmitTbData->aRowP); ++iRow) {
1,529,012,010✔
13259
      TAOS_CHECK_EXIT(tEncodeRow(pCoder, rows[iRow]));
1,513,082,633!
13260
    }
13261
    count = TARRAY_SIZE(pSubmitTbData->aRowP);
15,929,377✔
13262
  }
13263
  TAOS_CHECK_EXIT(tEncodeI64(pCoder, pSubmitTbData->ctimeMs));
31,905,426!
13264

13265
  if (hasBlob) {
15,952,713!
13266
    TAOS_CHECK_EXIT(tEncodeBlobSet(pCoder, pSubmitTbData->pBlobSet));
×
13267
    if (tBlobSetSize(pSubmitTbData->pBlobSet) != count) {
×
13268
      uError("blob set size %d not match row size %d", tBlobSetSize(pSubmitTbData->pBlobSet), count);
×
13269
      return TSDB_CODE_INVALID_MSG;
×
13270
    }
13271
  }
13272

13273
  tEndEncode(pCoder);
15,952,713✔
13274
_exit:
16,073,590✔
13275
  return code;
16,073,590✔
13276
}
13277

13278
static int32_t tDecodeSSubmitTbData(SDecoder *pCoder, SSubmitTbData *pSubmitTbData, void *rawData) {
13,835,836✔
13279
  int32_t code = 0;
13,835,836✔
13280
  int32_t lino;
13281
  int32_t flags;
13282
  uint8_t version;
13283

13284
  int8_t hasBlob = 0;
13,835,836✔
13285
  uint8_t*      dataAfterCreate = NULL;
13,835,836✔
13286
  uint8_t*      dataStart = pCoder->data + pCoder->pos;
13,835,836✔
13287
  uint32_t      posAfterCreate = 0;
13,835,836✔
13288

13289
  TAOS_CHECK_EXIT(tStartDecode(pCoder));
13,835,836!
13290
  uint32_t pos = pCoder->pos;
13,836,279✔
13291
  TAOS_CHECK_EXIT(tDecodeI32v(pCoder, &flags));
13,835,950!
13292
  uint32_t flagsLen = pCoder->pos - pos;
13,835,950✔
13293

13294
  if (flags & SUBMIT_REQ_WITH_BLOB) {
13,835,950!
13295
    hasBlob = 1;
×
13296
  }
13297
  pSubmitTbData->flags = flags & 0xff;
13,835,950✔
13298
  version = (flags >> 8) & 0xff;
13,835,950✔
13299

13300
  if (pSubmitTbData->flags & SUBMIT_REQ_AUTO_CREATE_TABLE) {
13,835,950✔
13301
    pSubmitTbData->pCreateTbReq = taosMemoryCalloc(1, sizeof(SVCreateTbReq));
58,582!
13302
    if (pSubmitTbData->pCreateTbReq == NULL) {
58,661!
13303
      TAOS_CHECK_EXIT(terrno);
×
13304
    }
13305

13306
    TAOS_CHECK_EXIT(tDecodeSVCreateTbReq(pCoder, pSubmitTbData->pCreateTbReq));
58,661!
13307
    dataAfterCreate = pCoder->data + pCoder->pos;
58,618✔
13308
    posAfterCreate = pCoder->pos;
58,618✔
13309
  }
13310

13311
  // submit data
13312
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSubmitTbData->suid));
27,671,867!
13313
  TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSubmitTbData->uid));
27,671,732!
13314
  TAOS_CHECK_EXIT(tDecodeI32v(pCoder, &pSubmitTbData->sver));
27,671,659!
13315

13316
  if (pSubmitTbData->flags & SUBMIT_REQ_COLUMN_DATA_FORMAT) {
13,835,808✔
13317
    uint64_t nColData = 0;
1,037✔
13318

13319
    TAOS_CHECK_EXIT(tDecodeU64v(pCoder, &nColData));
1,038!
13320

13321
    pSubmitTbData->aCol = taosArrayInit(nColData, sizeof(SColData));
1,038✔
13322
    if (pSubmitTbData->aCol == NULL) {
1,037!
13323
      TAOS_CHECK_EXIT(terrno);
×
13324
    }
13325

13326
    for (int32_t i = 0; i < nColData; ++i) {
6,522✔
13327
      TAOS_CHECK_EXIT(tDecodeColData(version, pCoder, taosArrayReserve(pSubmitTbData->aCol, 1)));
5,483!
13328
    }
13329
  } else {
13330
    uint64_t nRow = 0;
13,834,771✔
13331
    TAOS_CHECK_EXIT(tDecodeU64v(pCoder, &nRow));
13,834,757!
13332

13333
    uTrace("decode %d row data", (int32_t)nRow);
13,834,757✔
13334
    pSubmitTbData->aRowP = taosArrayInit(nRow, sizeof(SRow *));
13,834,757✔
13335
    if (pSubmitTbData->aRowP == NULL) {
13,835,194✔
13336
      TAOS_CHECK_EXIT(terrno);
50!
13337
    }
13338

13339
    for (int32_t iRow = 0; iRow < nRow; ++iRow) {
884,979,873✔
13340
      SRow **ppRow = taosArrayReserve(pSubmitTbData->aRowP, 1);
871,162,124✔
13341
      if (ppRow == NULL) {
871,127,325!
13342
        TAOS_CHECK_EXIT(terrno);
×
13343
      }
13344

13345
      TAOS_CHECK_EXIT(tDecodeRow(pCoder, ppRow));
871,127,325!
13346
    }
13347
    uTrace("decode row data size %d", (int32_t)(TARRAY_SIZE(pSubmitTbData->aRowP)));
13,817,749✔
13348
  }
13349

13350
  pSubmitTbData->ctimeMs = 0;
13,835,951✔
13351
  if (!tDecodeIsEnd(pCoder)) {
13,835,951✔
13352
    TAOS_CHECK_EXIT(tDecodeI64(pCoder, &pSubmitTbData->ctimeMs));
27,671,915!
13353
  }
13354

13355
  if (!tDecodeIsEnd(pCoder) && hasBlob) {
13,835,978!
13356
    TAOS_CHECK_EXIT(tDecodeBlobSet(pCoder, &pSubmitTbData->pBlobSet));
×
13357
  }
13358

13359
  if (rawData != NULL) {
13,835,978!
13360
    if (dataAfterCreate != NULL) {
×
13361
      TAOS_MEMCPY(dataAfterCreate - INT_BYTES - flagsLen, dataStart, INT_BYTES + flagsLen);
×
13362
      *(int32_t *)(dataAfterCreate - INT_BYTES - flagsLen) = pCoder->pos - posAfterCreate + flagsLen;
×
13363
      *(void **)rawData = dataAfterCreate - INT_BYTES - flagsLen;
×
13364
    } else {
13365
      *(void **)rawData = dataStart;
×
13366
    }
13367
  }
13368
  tEndDecode(pCoder);
13,835,978✔
13369

13370
_exit:
13,835,864✔
13371
  return code;
13,835,864✔
13372
}
13373

13374
int32_t tEncodeSubmitReq(SEncoder *pCoder, const SSubmitReq2 *pReq) {
15,947,626✔
13375
  int32_t code = 0;
15,947,626✔
13376
  int32_t lino;
13377

13378
  TAOS_CHECK_EXIT(tStartEncode(pCoder));
15,947,626!
13379
  TAOS_CHECK_EXIT(tEncodeU64v(pCoder, taosArrayGetSize(pReq->aSubmitTbData)));
31,988,545!
13380
  if (pReq->raw) {
15,992,332!
13381
    for (uint64_t i = 0; i < taosArrayGetSize(pReq->aSubmitTbData); i++) {
×
13382
      void *data = taosArrayGetP(pReq->aSubmitTbData, i);
×
13383
      if (pCoder->data != NULL) {
×
13384
        TAOS_MEMCPY(pCoder->data + pCoder->pos, data, *(uint32_t *)data + INT_BYTES);
×
13385
      }
13386
      pCoder->pos += *(uint32_t *)data + INT_BYTES;
×
13387
    }
13388
  } else {
13389
    for (uint64_t i = 0; i < taosArrayGetSize(pReq->aSubmitTbData); i++) {
32,064,448✔
13390
      SSubmitTbData *pSubmitTbData = taosArrayGet(pReq->aSubmitTbData, i);
16,046,067✔
13391
      if ((pSubmitTbData->flags & SUBMIT_REQ_AUTO_CREATE_TABLE) && pSubmitTbData->pCreateTbReq == NULL) {
16,029,143✔
13392
        pSubmitTbData->flags &= ~SUBMIT_REQ_AUTO_CREATE_TABLE;
55✔
13393
      }
13394
      TAOS_CHECK_EXIT(tEncodeSSubmitTbData(pCoder, pSubmitTbData));
16,029,143!
13395
    }
13396
  }
13397

13398
  tEndEncode(pCoder);
15,903,352✔
13399
_exit:
16,005,273✔
13400
  return code;
16,005,273✔
13401
}
13402

13403
int32_t tDecodeSubmitReq(SDecoder *pCoder, SSubmitReq2 *pReq, SArray *rawList) {
13,760,483✔
13404
  int32_t code = 0;
13,760,483✔
13405

13406
  memset(pReq, 0, sizeof(*pReq));
13,760,483✔
13407

13408
  // decode
13409
  if (tStartDecode(pCoder) < 0) {
13,760,483!
13410
    code = TSDB_CODE_INVALID_MSG;
×
13411
    goto _exit;
×
13412
  }
13413

13414
  uint64_t nSubmitTbData;
13415
  if (tDecodeU64v(pCoder, &nSubmitTbData) < 0) {
13,760,702!
13416
    code = TSDB_CODE_INVALID_MSG;
×
13417
    goto _exit;
×
13418
  }
13419

13420
  pReq->aSubmitTbData = taosArrayInit(nSubmitTbData, sizeof(SSubmitTbData));
13,760,702✔
13421
  if (pReq->aSubmitTbData == NULL) {
13,760,765!
13422
    code = terrno;
×
13423
    goto _exit;
×
13424
  }
13425

13426
  for (uint64_t i = 0; i < nSubmitTbData; i++) {
27,596,625✔
13427
    SSubmitTbData *data = taosArrayReserve(pReq->aSubmitTbData, 1);
13,836,050✔
13428
    if (tDecodeSSubmitTbData(pCoder, data, rawList != NULL ? taosArrayReserve(rawList, 1) : NULL) < 0) {
13,835,986!
13429
      code = TSDB_CODE_INVALID_MSG;
×
13430
      goto _exit;
×
13431
    }
13432
  }
13433

13434
  tEndDecode(pCoder);
13,760,575✔
13435

13436
_exit:
13,760,553✔
13437
  return code;
13,760,553✔
13438
}
13439

13440
void tDestroySubmitTbData(SSubmitTbData *pTbData, int32_t flag) {
21,956,001✔
13441
  if (NULL == pTbData) {
21,956,001✔
13442
    return;
11,551✔
13443
  }
13444

13445
  if (flag == TSDB_MSG_FLG_ENCODE || flag == TSDB_MSG_FLG_CMPT) {
21,944,450✔
13446
    if (pTbData->pCreateTbReq) {
8,108,365✔
13447
      if (flag == TSDB_MSG_FLG_ENCODE) {
39,002!
13448
        tdDestroySVCreateTbReq(pTbData->pCreateTbReq);
39,008!
13449
      } else {
13450
        tDestroySVCreateTbReq(pTbData->pCreateTbReq, TSDB_MSG_FLG_DECODE);
×
13451
      }
13452
      taosMemoryFreeClear(pTbData->pCreateTbReq);
39,403!
13453
    }
13454

13455
    if (pTbData->flags & SUBMIT_REQ_COLUMN_DATA_FORMAT) {
8,108,806✔
13456
      if (pTbData->aCol) {
45,035✔
13457
        int32_t   nColData = TARRAY_SIZE(pTbData->aCol);
45,017✔
13458
        SColData *aColData = (SColData *)TARRAY_DATA(pTbData->aCol);
45,017✔
13459

13460
        for (int32_t i = 0; i < nColData; ++i) {
158,183✔
13461
          tColDataDestroy(&aColData[i]);
113,170✔
13462
        }
13463
        taosArrayDestroy(pTbData->aCol);
45,013✔
13464
        pTbData->aCol = NULL;
45,037✔
13465
      }
13466
    } else if (pTbData->aRowP) {
8,063,771!
13467
      int32_t nRow = TARRAY_SIZE(pTbData->aRowP);
8,063,986✔
13468
      SRow  **rows = (SRow **)TARRAY_DATA(pTbData->aRowP);
8,063,986✔
13469

13470
      for (int32_t i = 0; i < nRow; ++i) {
765,456,494✔
13471
        tRowDestroy(rows[i]);
757,501,970✔
13472
        rows[i] = NULL;
757,392,508✔
13473
      }
13474
      taosArrayDestroy(pTbData->aRowP);
7,954,524✔
13475
    }
13476
  } else if (flag == TSDB_MSG_FLG_DECODE) {
13,836,085✔
13477
    if (pTbData->pCreateTbReq) {
13,836,014✔
13478
      tDestroySVSubmitCreateTbReq(pTbData->pCreateTbReq, TSDB_MSG_FLG_DECODE);
58,588✔
13479
      taosMemoryFreeClear(pTbData->pCreateTbReq);
58,588!
13480
    }
13481

13482
    if (pTbData->flags & SUBMIT_REQ_COLUMN_DATA_FORMAT) {
13,835,994✔
13483
      taosArrayDestroy(pTbData->aCol);
1,037✔
13484
      pTbData->aCol = NULL;
1,037✔
13485
    } else {
13486
      taosArrayDestroy(pTbData->aRowP);
13,834,957✔
13487
      pTbData->aRowP = NULL;
13,835,201✔
13488
    }
13489
  }
13490

13491
  if (pTbData->pBlobSet) {
21,952,704!
13492
    tBlobSetDestroy(pTbData->pBlobSet);
×
13493
    pTbData->pBlobSet = NULL;
×
13494
  }
13495
  pTbData->aRowP = NULL;
21,952,704✔
13496
}
13497

13498
void tDestroySubmitReq(SSubmitReq2 *pReq, int32_t flag) {
21,894,924✔
13499
  if (pReq->aSubmitTbData == NULL) return;
21,894,924✔
13500

13501
  if (!pReq->raw) {
21,790,931!
13502
    int32_t        nSubmitTbData = TARRAY_SIZE(pReq->aSubmitTbData);
21,793,050✔
13503
    SSubmitTbData *aSubmitTbData = (SSubmitTbData *)TARRAY_DATA(pReq->aSubmitTbData);
21,793,050✔
13504

13505
    for (int32_t i = 0; i < nSubmitTbData; i++) {
43,707,577✔
13506
      tDestroySubmitTbData(&aSubmitTbData[i], flag);
21,906,972✔
13507
    }
13508
  }
13509

13510
  taosArrayDestroy(pReq->aSubmitTbData);
21,798,486✔
13511
  pReq->aSubmitTbData = NULL;
21,800,079✔
13512

13513
  if (pReq->aSubmitBlobData != NULL) {
21,800,079!
13514
    int32_t nSubmitBlobData = TARRAY_SIZE(pReq->aSubmitBlobData);
×
13515
    for (int32_t i = 0; i < nSubmitBlobData; i++) {
×
13516
      SBlobSet *pBlobData = taosArrayGetP(pReq->aSubmitBlobData, i);
×
13517
      if (pBlobData) {
×
13518
        tBlobSetDestroy(pBlobData);
×
13519
      }
13520
    }
13521
    taosArrayDestroy(pReq->aSubmitBlobData);
×
13522
    pReq->aSubmitBlobData = NULL;
×
13523
  }
13524
}
13525

13526
int32_t tEncodeSSubmitRsp2(SEncoder *pCoder, const SSubmitRsp2 *pRsp) {
26,814,657✔
13527
  int32_t code = 0;
26,814,657✔
13528
  int32_t lino;
13529

13530
  TAOS_CHECK_EXIT(tStartEncode(pCoder));
26,814,657!
13531

13532
  TAOS_CHECK_EXIT(tEncodeI32v(pCoder, pRsp->affectedRows));
53,629,376!
13533

13534
  TAOS_CHECK_EXIT(tEncodeU64v(pCoder, taosArrayGetSize(pRsp->aCreateTbRsp)));
53,629,363!
13535
  for (int32_t i = 0; i < taosArrayGetSize(pRsp->aCreateTbRsp); ++i) {
26,925,381✔
13536
    TAOS_CHECK_EXIT(tEncodeSVCreateTbRsp(pCoder, taosArrayGet(pRsp->aCreateTbRsp, i)));
110,704!
13537
  }
13538

13539
  tEndEncode(pCoder);
26,814,628✔
13540
_exit:
26,814,664✔
13541
  return code;
26,814,664✔
13542
}
13543

13544
int32_t tDecodeSSubmitRsp2(SDecoder *pCoder, SSubmitRsp2 *pRsp) {
8,001,271✔
13545
  int32_t code = 0;
8,001,271✔
13546

13547
  memset(pRsp, 0, sizeof(SSubmitRsp2));
8,001,271✔
13548

13549
  // decode
13550
  if (tStartDecode(pCoder) < 0) {
8,001,271✔
13551
    code = TSDB_CODE_INVALID_MSG;
30✔
13552
    goto _exit;
30✔
13553
  }
13554

13555
  if (tDecodeI32v(pCoder, &pRsp->affectedRows) < 0) {
16,050,830!
13556
    code = TSDB_CODE_INVALID_MSG;
×
13557
    goto _exit;
×
13558
  }
13559

13560
  uint64_t nCreateTbRsp;
13561
  if (tDecodeU64v(pCoder, &nCreateTbRsp) < 0) {
8,027,667!
13562
    code = TSDB_CODE_INVALID_MSG;
×
13563
    goto _exit;
×
13564
  }
13565

13566
  if (nCreateTbRsp) {
8,027,667✔
13567
    pRsp->aCreateTbRsp = taosArrayInit(nCreateTbRsp, sizeof(SVCreateTbRsp));
12,928✔
13568
    if (pRsp->aCreateTbRsp == NULL) {
12,925!
13569
      code = terrno;
×
13570
      goto _exit;
×
13571
    }
13572

13573
    for (int32_t i = 0; i < nCreateTbRsp; ++i) {
27,877✔
13574
      SVCreateTbRsp *pCreateTbRsp = taosArrayReserve(pRsp->aCreateTbRsp, 1);
14,955✔
13575
      if (tDecodeSVCreateTbRsp(pCoder, pCreateTbRsp) < 0) {
14,957!
13576
        code = TSDB_CODE_INVALID_MSG;
×
13577
        goto _exit;
×
13578
      }
13579
    }
13580
  }
13581

13582
  tEndDecode(pCoder);
8,027,661✔
13583

13584
_exit:
8,007,336✔
13585
  if (code) {
8,007,336✔
13586
    if (pRsp->aCreateTbRsp) {
30!
13587
      taosArrayDestroyEx(pRsp->aCreateTbRsp, NULL /* todo */);
×
13588
    }
13589
  }
13590
  return code;
8,007,333✔
13591
}
13592

13593
void tDestroySSubmitRsp2(SSubmitRsp2 *pRsp, int32_t flag) {
29,299,327✔
13594
  if (NULL == pRsp) {
29,299,327✔
13595
    return;
7,954,873✔
13596
  }
13597

13598
  if (flag & TSDB_MSG_FLG_ENCODE) {
21,344,454✔
13599
    if (pRsp->aCreateTbRsp) {
13,407,283✔
13600
      int32_t        nCreateTbRsp = TARRAY_SIZE(pRsp->aCreateTbRsp);
37,121✔
13601
      SVCreateTbRsp *aCreateTbRsp = TARRAY_DATA(pRsp->aCreateTbRsp);
37,121✔
13602
      for (int32_t i = 0; i < nCreateTbRsp; ++i) {
92,527✔
13603
        if (aCreateTbRsp[i].pMeta) {
55,405✔
13604
          taosMemoryFree(aCreateTbRsp[i].pMeta->pSchemas);
46,094!
13605
          taosMemoryFree(aCreateTbRsp[i].pMeta->pSchemaExt);
46,094!
13606
          taosMemoryFree(aCreateTbRsp[i].pMeta->pColRefs);
46,095!
13607
          taosMemoryFree(aCreateTbRsp[i].pMeta);
46,095!
13608
        }
13609
      }
13610
      taosArrayDestroy(pRsp->aCreateTbRsp);
37,122✔
13611
    }
13612
  } else if (flag & TSDB_MSG_FLG_DECODE) {
7,937,171!
13613
    if (pRsp->aCreateTbRsp) {
8,000,828✔
13614
      int32_t        nCreateTbRsp = TARRAY_SIZE(pRsp->aCreateTbRsp);
12,143✔
13615
      SVCreateTbRsp *aCreateTbRsp = TARRAY_DATA(pRsp->aCreateTbRsp);
12,143✔
13616
      for (int32_t i = 0; i < nCreateTbRsp; ++i) {
27,086✔
13617
        if (aCreateTbRsp[i].pMeta) {
14,949✔
13618
          taosMemoryFreeClear(aCreateTbRsp[i].pMeta->pSchemas);
12,673!
13619
          taosMemoryFreeClear(aCreateTbRsp[i].pMeta->pSchemaExt);
12,673!
13620
          taosMemoryFreeClear(aCreateTbRsp[i].pMeta->pColRefs);
12,673!
13621
          taosMemoryFreeClear(aCreateTbRsp[i].pMeta);
12,673!
13622
        }
13623
      }
13624
      taosArrayDestroy(pRsp->aCreateTbRsp);
12,137✔
13625
    }
13626
  }
13627
}
13628

13629
int32_t tEncodeMqSubTopicEp(void **buf, const SMqSubTopicEp *pTopicEp) {
5,884✔
13630
  int32_t tlen = 0;
5,884✔
13631
  tlen += taosEncodeString(buf, pTopicEp->topic);
5,884✔
13632
  tlen += taosEncodeString(buf, pTopicEp->db);
5,884✔
13633
  int32_t sz = taosArrayGetSize(pTopicEp->vgs);
5,884✔
13634
  tlen += taosEncodeFixedI32(buf, sz);
5,884✔
13635
  for (int32_t i = 0; i < sz; i++) {
13,162✔
13636
    SMqSubVgEp *pVgEp = (SMqSubVgEp *)taosArrayGet(pTopicEp->vgs, i);
7,278✔
13637
    tlen += tEncodeSMqSubVgEp(buf, pVgEp);
7,278✔
13638
  }
13639
  tlen += taosEncodeSSchemaWrapper(buf, &pTopicEp->schema);
5,884✔
13640
  return tlen;
5,884✔
13641
}
13642

13643
void *tDecodeMqSubTopicEp(void *buf, SMqSubTopicEp *pTopicEp) {
79✔
13644
  buf = taosDecodeStringTo(buf, pTopicEp->topic);
79✔
13645
  buf = taosDecodeStringTo(buf, pTopicEp->db);
158!
13646
  int32_t sz;
13647
  buf = taosDecodeFixedI32(buf, &sz);
79✔
13648
  pTopicEp->vgs = taosArrayInit(sz, sizeof(SMqSubVgEp));
79✔
13649
  if (pTopicEp->vgs == NULL) {
79!
13650
    return NULL;
×
13651
  }
13652
  for (int32_t i = 0; i < sz; i++) {
273✔
13653
    SMqSubVgEp vgEp;
13654
    buf = tDecodeSMqSubVgEp(buf, &vgEp);
194✔
13655
    if (taosArrayPush(pTopicEp->vgs, &vgEp) == NULL) {
388!
13656
      taosArrayDestroy(pTopicEp->vgs);
×
13657
      pTopicEp->vgs = NULL;
×
13658
      return NULL;
×
13659
    }
13660
  }
13661
  buf = taosDecodeSSchemaWrapper(buf, &pTopicEp->schema);
79✔
13662
  return buf;
79✔
13663
}
13664

13665
void tDeleteMqSubTopicEp(SMqSubTopicEp *pSubTopicEp) {
3,021✔
13666
  taosMemoryFreeClear(pSubTopicEp->schema.pSchema);
3,021!
13667
  pSubTopicEp->schema.nCols = 0;
3,021✔
13668
  taosArrayDestroy(pSubTopicEp->vgs);
3,021✔
13669
}
3,021✔
13670

13671
int32_t tSerializeSCMCreateViewReq(void *buf, int32_t bufLen, const SCMCreateViewReq *pReq) {
132✔
13672
  SEncoder encoder = {0};
132✔
13673
  int32_t  code = 0;
132✔
13674
  int32_t  lino;
13675
  int32_t  tlen;
13676
  tEncoderInit(&encoder, buf, bufLen);
132✔
13677

13678
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
132!
13679
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->fullname));
264!
13680
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
264!
13681
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dbFName));
264!
13682
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->querySql));
264!
13683
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->sql));
264!
13684
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->orReplace));
264!
13685
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->precision));
264!
13686
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, pReq->numOfCols));
264!
13687
  for (int32_t i = 0; i < pReq->numOfCols; ++i) {
2,244✔
13688
    SSchema *pSchema = &pReq->pSchema[i];
2,112✔
13689
    TAOS_CHECK_EXIT(tEncodeSSchema(&encoder, pSchema));
2,112!
13690
  }
13691

13692
  tEndEncode(&encoder);
132✔
13693

13694
_exit:
132✔
13695
  if (code) {
132!
13696
    tlen = code;
×
13697
  } else {
13698
    tlen = encoder.pos;
132✔
13699
  }
13700
  tEncoderClear(&encoder);
132✔
13701
  return tlen;
132✔
13702
}
13703

13704
int32_t tDeserializeSCMCreateViewReq(void *buf, int32_t bufLen, SCMCreateViewReq *pReq) {
495✔
13705
  SDecoder decoder = {0};
495✔
13706
  int32_t  code = 0;
495✔
13707
  int32_t  lino;
13708

13709
  tDecoderInit(&decoder, buf, bufLen);
495✔
13710

13711
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
495!
13712
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->fullname));
495!
13713
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
495!
13714
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dbFName));
495!
13715
  TAOS_CHECK_EXIT(tDecodeCStrAlloc(&decoder, &pReq->querySql));
990!
13716
  TAOS_CHECK_EXIT(tDecodeCStrAlloc(&decoder, &pReq->sql));
990!
13717
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->orReplace));
990!
13718
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->precision));
990!
13719
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &pReq->numOfCols));
990!
13720

13721
  if (pReq->numOfCols > 0) {
495!
13722
    pReq->pSchema = taosMemoryCalloc(pReq->numOfCols, sizeof(SSchema));
495!
13723
    if (pReq->pSchema == NULL) {
495!
13724
      TAOS_CHECK_EXIT(terrno);
×
13725
    }
13726

13727
    for (int32_t i = 0; i < pReq->numOfCols; ++i) {
2,337✔
13728
      SSchema *pSchema = pReq->pSchema + i;
1,842✔
13729
      TAOS_CHECK_EXIT(tDecodeSSchema(&decoder, pSchema));
1,842!
13730
    }
13731
  }
13732

13733
  tEndDecode(&decoder);
495✔
13734

13735
_exit:
495✔
13736
  tDecoderClear(&decoder);
495✔
13737
  return code;
495✔
13738
}
13739

13740
void tFreeSCMCreateViewReq(SCMCreateViewReq *pReq) {
627✔
13741
  if (NULL == pReq) {
627!
13742
    return;
×
13743
  }
13744

13745
  taosMemoryFreeClear(pReq->querySql);
627!
13746
  taosMemoryFreeClear(pReq->sql);
627!
13747
  taosMemoryFreeClear(pReq->pSchema);
627!
13748
}
13749

13750
int32_t tSerializeSCMDropViewReq(void *buf, int32_t bufLen, const SCMDropViewReq *pReq) {
×
13751
  SEncoder encoder = {0};
×
13752
  int32_t  code = 0;
×
13753
  int32_t  lino;
13754
  int32_t  tlen;
13755
  tEncoderInit(&encoder, buf, bufLen);
×
13756

13757
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
13758
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->fullname));
×
13759
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
×
13760
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->dbFName));
×
13761
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->sql));
×
13762
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->igNotExists));
×
13763

13764
  tEndEncode(&encoder);
×
13765

13766
_exit:
×
13767
  if (code) {
×
13768
    tlen = code;
×
13769
  } else {
13770
    tlen = encoder.pos;
×
13771
  }
13772
  tEncoderClear(&encoder);
×
13773
  return tlen;
×
13774
}
13775

13776
int32_t tDeserializeSCMDropViewReq(void *buf, int32_t bufLen, SCMDropViewReq *pReq) {
407✔
13777
  SDecoder decoder = {0};
407✔
13778
  int32_t  code = 0;
407✔
13779
  int32_t  lino;
13780

13781
  tDecoderInit(&decoder, buf, bufLen);
407✔
13782

13783
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
407!
13784
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->fullname));
407!
13785
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
407!
13786
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->dbFName));
407!
13787
  TAOS_CHECK_EXIT(tDecodeCStrAlloc(&decoder, &pReq->sql));
814!
13788
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->igNotExists));
814!
13789

13790
  tEndDecode(&decoder);
407✔
13791

13792
_exit:
407✔
13793
  tDecoderClear(&decoder);
407✔
13794
  return code;
407✔
13795
}
13796
void tFreeSCMDropViewReq(SCMDropViewReq *pReq) {
407✔
13797
  if (NULL == pReq) {
407!
13798
    return;
×
13799
  }
13800

13801
  taosMemoryFree(pReq->sql);
407!
13802
}
13803

13804
int32_t tSerializeSViewMetaReq(void *buf, int32_t bufLen, const SViewMetaReq *pReq) {
19,396✔
13805
  SEncoder encoder = {0};
19,396✔
13806
  int32_t  code = 0;
19,396✔
13807
  int32_t  lino;
13808
  int32_t  tlen;
13809
  tEncoderInit(&encoder, buf, bufLen);
19,396✔
13810

13811
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
19,415!
13812
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->fullname));
38,836!
13813

13814
  tEndEncode(&encoder);
19,418✔
13815

13816
_exit:
19,415✔
13817
  if (code) {
19,415!
13818
    tlen = code;
×
13819
  } else {
13820
    tlen = encoder.pos;
19,415✔
13821
  }
13822
  tEncoderClear(&encoder);
19,415✔
13823
  return tlen;
19,418✔
13824
}
13825

13826
int32_t tDeserializeSViewMetaReq(void *buf, int32_t bufLen, SViewMetaReq *pReq) {
1,595,623✔
13827
  SDecoder decoder = {0};
1,595,623✔
13828
  int32_t  code = 0;
1,595,623✔
13829
  int32_t  lino;
13830

13831
  tDecoderInit(&decoder, buf, bufLen);
1,595,623✔
13832

13833
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
1,595,620!
13834
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->fullname));
1,595,633!
13835

13836
  tEndDecode(&decoder);
1,595,623✔
13837

13838
_exit:
1,595,619✔
13839
  tDecoderClear(&decoder);
1,595,619✔
13840
  return code;
1,595,639✔
13841
}
13842

13843
static int32_t tEncodeSViewMetaRsp(SEncoder *pEncoder, const SViewMetaRsp *pRsp) {
670✔
13844
  int32_t code = 0;
670✔
13845
  int32_t lino;
13846

13847
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pRsp->name));
1,340!
13848
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pRsp->dbFName));
1,340!
13849
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pRsp->user));
1,340!
13850
  TAOS_CHECK_EXIT(tEncodeU64(pEncoder, pRsp->dbId));
1,340!
13851
  TAOS_CHECK_EXIT(tEncodeU64(pEncoder, pRsp->viewId));
1,340!
13852
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pRsp->querySql));
1,340!
13853
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pRsp->precision));
1,340!
13854
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pRsp->type));
1,340!
13855
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->version));
1,340!
13856
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pRsp->numOfCols));
1,340!
13857
  for (int32_t i = 0; i < pRsp->numOfCols; ++i) {
2,904✔
13858
    SSchema *pSchema = &pRsp->pSchema[i];
2,234✔
13859
    TAOS_CHECK_EXIT(tEncodeSSchema(pEncoder, pSchema));
2,234!
13860
  }
13861

13862
_exit:
670✔
13863
  return code;
670✔
13864
}
13865

13866
int32_t tSerializeSViewMetaRsp(void *buf, int32_t bufLen, const SViewMetaRsp *pRsp) {
668✔
13867
  SEncoder encoder = {0};
668✔
13868
  int32_t  code = 0;
668✔
13869
  int32_t  lino;
13870
  int32_t  tlen;
13871
  tEncoderInit(&encoder, buf, bufLen);
668✔
13872

13873
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
668!
13874
  TAOS_CHECK_EXIT(tEncodeSViewMetaRsp(&encoder, pRsp));
668!
13875

13876
  tEndEncode(&encoder);
668✔
13877

13878
_exit:
668✔
13879
  if (code) {
668!
13880
    tlen = code;
×
13881
  } else {
13882
    tlen = encoder.pos;
668✔
13883
  }
13884
  tEncoderClear(&encoder);
668✔
13885
  return tlen;
668✔
13886
}
13887

13888
static int32_t tDecodeSViewMetaRsp(SDecoder *pDecoder, SViewMetaRsp *pRsp) {
7✔
13889
  int32_t code = 0;
7✔
13890
  int32_t lino;
13891

13892
  TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pRsp->name));
7!
13893
  TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pRsp->dbFName));
7!
13894
  TAOS_CHECK_EXIT(tDecodeCStrAlloc(pDecoder, &pRsp->user));
14!
13895
  TAOS_CHECK_EXIT(tDecodeU64(pDecoder, &pRsp->dbId));
14!
13896
  TAOS_CHECK_EXIT(tDecodeU64(pDecoder, &pRsp->viewId));
14!
13897
  TAOS_CHECK_EXIT(tDecodeCStrAlloc(pDecoder, &pRsp->querySql));
14!
13898
  TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pRsp->precision));
14!
13899
  TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pRsp->type));
14!
13900
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->version));
14!
13901
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pRsp->numOfCols));
14!
13902
  if (pRsp->numOfCols > 0) {
7!
13903
    pRsp->pSchema = taosMemoryCalloc(pRsp->numOfCols, sizeof(SSchema));
7!
13904
    if (pRsp->pSchema == NULL) {
7!
13905
      TAOS_CHECK_EXIT(terrno);
×
13906
    }
13907

13908
    for (int32_t i = 0; i < pRsp->numOfCols; ++i) {
107✔
13909
      SSchema *pSchema = pRsp->pSchema + i;
100✔
13910
      TAOS_CHECK_EXIT(tDecodeSSchema(pDecoder, pSchema));
100!
13911
    }
13912
  }
13913

13914
_exit:
7✔
13915
  return code;
7✔
13916
}
13917

13918
int32_t tDeserializeSViewMetaRsp(void *buf, int32_t bufLen, SViewMetaRsp *pRsp) {
7✔
13919
  SDecoder decoder = {0};
7✔
13920
  int32_t  code = 0;
7✔
13921
  int32_t  lino;
13922

13923
  tDecoderInit(&decoder, buf, bufLen);
7✔
13924

13925
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
7!
13926
  TAOS_CHECK_EXIT(tDecodeSViewMetaRsp(&decoder, pRsp));
7!
13927

13928
  tEndDecode(&decoder);
7✔
13929

13930
_exit:
7✔
13931
  tDecoderClear(&decoder);
7✔
13932
  return code;
7✔
13933
}
13934

13935
void tFreeSViewMetaRsp(SViewMetaRsp *pRsp) {
342✔
13936
  if (NULL == pRsp) {
342!
13937
    return;
×
13938
  }
13939

13940
  taosMemoryFree(pRsp->user);
342!
13941
  taosMemoryFree(pRsp->querySql);
342!
13942
  taosMemoryFree(pRsp->pSchema);
342!
13943
}
13944

13945
int32_t tSerializeSViewHbRsp(void *buf, int32_t bufLen, SViewHbRsp *pRsp) {
10✔
13946
  SEncoder encoder = {0};
10✔
13947
  int32_t  code = 0;
10✔
13948
  int32_t  lino;
13949
  int32_t  tlen;
13950
  tEncoderInit(&encoder, buf, bufLen);
10✔
13951

13952
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
10!
13953

13954
  int32_t numOfMeta = taosArrayGetSize(pRsp->pViewRsp);
10✔
13955
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, numOfMeta));
10!
13956
  for (int32_t i = 0; i < numOfMeta; ++i) {
12✔
13957
    SViewMetaRsp *pMetaRsp = taosArrayGetP(pRsp->pViewRsp, i);
2✔
13958
    TAOS_CHECK_EXIT(tEncodeSViewMetaRsp(&encoder, pMetaRsp));
2!
13959
  }
13960

13961
  tEndEncode(&encoder);
10✔
13962

13963
_exit:
10✔
13964
  if (code) {
10!
13965
    tlen = code;
×
13966
  } else {
13967
    tlen = encoder.pos;
10✔
13968
  }
13969
  tEncoderClear(&encoder);
10✔
13970
  return tlen;
10✔
13971
}
13972

13973
int32_t tDeserializeSViewHbRsp(void *buf, int32_t bufLen, SViewHbRsp *pRsp) {
6✔
13974
  SDecoder decoder = {0};
6✔
13975
  int32_t  code = 0;
6✔
13976
  int32_t  lino;
13977

13978
  tDecoderInit(&decoder, buf, bufLen);
6✔
13979

13980
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
6!
13981

13982
  int32_t numOfMeta = 0;
6✔
13983
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &numOfMeta));
6!
13984
  pRsp->pViewRsp = taosArrayInit(numOfMeta, POINTER_BYTES);
6✔
13985
  if (pRsp->pViewRsp == NULL) {
6!
13986
    TAOS_CHECK_EXIT(terrno);
×
13987
  }
13988

13989
  for (int32_t i = 0; i < numOfMeta; ++i) {
6!
13990
    SViewMetaRsp *metaRsp = taosMemoryCalloc(1, sizeof(SViewMetaRsp));
×
13991
    if (NULL == metaRsp) {
×
13992
      TAOS_CHECK_EXIT(terrno);
×
13993
    }
13994
    TAOS_CHECK_EXIT(tDecodeSViewMetaRsp(&decoder, metaRsp));
×
13995
    if (taosArrayPush(pRsp->pViewRsp, &metaRsp) == NULL) {
×
13996
      TAOS_CHECK_EXIT(terrno);
×
13997
    }
13998
  }
13999

14000
  tEndDecode(&decoder);
6✔
14001

14002
_exit:
6✔
14003
  tDecoderClear(&decoder);
6✔
14004
  return code;
6✔
14005
}
14006

14007
void tFreeSViewHbRsp(SViewHbRsp *pRsp) {
5✔
14008
  int32_t numOfMeta = taosArrayGetSize(pRsp->pViewRsp);
5✔
14009
  for (int32_t i = 0; i < numOfMeta; ++i) {
6✔
14010
    SViewMetaRsp *pMetaRsp = taosArrayGetP(pRsp->pViewRsp, i);
1✔
14011
    tFreeSViewMetaRsp(pMetaRsp);
1✔
14012
    taosMemoryFree(pMetaRsp);
1!
14013
  }
14014

14015
  taosArrayDestroy(pRsp->pViewRsp);
5✔
14016
}
5✔
14017

14018
void setDefaultOptionsForField(SFieldWithOptions *field) {
2,767✔
14019
  setColEncode(&field->compress, getDefaultEncode(field->type));
2,767✔
14020
  setColCompress(&field->compress, getDefaultCompress(field->type));
2,759✔
14021
  setColLevel(&field->compress, getDefaultLevel(field->type));
2,750✔
14022
}
2,750✔
14023

14024
void setFieldWithOptions(SFieldWithOptions *fieldWithOptions, SField *field) {
2,763✔
14025
  fieldWithOptions->bytes = field->bytes;
2,763✔
14026
  fieldWithOptions->flags = field->flags;
2,763✔
14027
  fieldWithOptions->type = field->type;
2,763✔
14028
  tstrncpy(fieldWithOptions->name, field->name, TSDB_COL_NAME_LEN);
2,763✔
14029
}
2,763✔
14030
int32_t tSerializeTableTSMAInfoReq(void *buf, int32_t bufLen, const STableTSMAInfoReq *pReq) {
×
14031
  SEncoder encoder = {0};
×
14032
  int32_t  code = 0;
×
14033
  int32_t  lino;
14034
  int32_t  tlen;
14035
  tEncoderInit(&encoder, buf, bufLen);
×
14036

14037
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
14038
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->name));
×
14039
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->fetchingWithTsmaName));
×
14040

14041
  tEndEncode(&encoder);
×
14042

14043
_exit:
×
14044
  if (code) {
×
14045
    tlen = code;
×
14046
  } else {
14047
    tlen = encoder.pos;
×
14048
  }
14049
  tEncoderClear(&encoder);
×
14050
  return tlen;
×
14051
}
14052

14053
int32_t tDeserializeTableTSMAInfoReq(void *buf, int32_t bufLen, STableTSMAInfoReq *pReq) {
7✔
14054
  SDecoder decoder = {0};
7✔
14055
  int32_t  code = 0;
7✔
14056
  int32_t  lino;
14057

14058
  tDecoderInit(&decoder, buf, bufLen);
7✔
14059

14060
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
7!
14061
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->name));
7!
14062
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, (uint8_t *)&pReq->fetchingWithTsmaName));
14!
14063

14064
  tEndDecode(&decoder);
7✔
14065

14066
_exit:
7✔
14067
  tDecoderClear(&decoder);
7✔
14068
  return code;
7✔
14069
}
14070

14071
static int32_t tEncodeTableTSMAInfo(SEncoder *pEncoder, const STableTSMAInfo *pTsmaInfo) {
×
14072
  int32_t code = 0;
×
14073
  int32_t lino;
14074

14075
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pTsmaInfo->name));
×
14076
  TAOS_CHECK_EXIT(tEncodeU64(pEncoder, pTsmaInfo->tsmaId));
×
14077
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pTsmaInfo->tb));
×
14078
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pTsmaInfo->dbFName));
×
14079
  TAOS_CHECK_EXIT(tEncodeU64(pEncoder, pTsmaInfo->suid));
×
14080
  TAOS_CHECK_EXIT(tEncodeU64(pEncoder, pTsmaInfo->destTbUid));
×
14081
  TAOS_CHECK_EXIT(tEncodeU64(pEncoder, pTsmaInfo->dbId));
×
14082
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pTsmaInfo->version));
×
14083
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pTsmaInfo->targetTb));
×
14084
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pTsmaInfo->targetDbFName));
×
14085
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pTsmaInfo->interval));
×
14086
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pTsmaInfo->unit));
×
14087

14088
  int32_t size = pTsmaInfo->pFuncs ? pTsmaInfo->pFuncs->size : 0;
×
14089
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
×
14090
  for (int32_t i = 0; i < size; ++i) {
×
14091
    STableTSMAFuncInfo *pFuncInfo = taosArrayGet(pTsmaInfo->pFuncs, i);
×
14092
    TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pFuncInfo->funcId));
×
14093
    TAOS_CHECK_EXIT(tEncodeI16(pEncoder, pFuncInfo->colId));
×
14094
  }
14095

14096
  size = pTsmaInfo->pTags ? pTsmaInfo->pTags->size : 0;
×
14097
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
×
14098
  for (int32_t i = 0; i < size; ++i) {
×
14099
    const SSchema *pSchema = taosArrayGet(pTsmaInfo->pTags, i);
×
14100
    TAOS_CHECK_EXIT(tEncodeSSchema(pEncoder, pSchema));
×
14101
  }
14102
  size = pTsmaInfo->pUsedCols ? pTsmaInfo->pUsedCols->size : 0;
×
14103
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
×
14104
  for (int32_t i = 0; i < size; ++i) {
×
14105
    const SSchema *pSchema = taosArrayGet(pTsmaInfo->pUsedCols, i);
×
14106
    TAOS_CHECK_EXIT(tEncodeSSchema(pEncoder, pSchema));
×
14107
  }
14108

14109
  TAOS_CHECK_EXIT(tEncodeCStr(pEncoder, pTsmaInfo->ast));
×
14110
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pTsmaInfo->streamUid));
×
14111
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pTsmaInfo->reqTs));
×
14112
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pTsmaInfo->rspTs));
×
14113
  TAOS_CHECK_EXIT(tEncodeI64(pEncoder, pTsmaInfo->delayDuration));
×
14114
  TAOS_CHECK_EXIT(tEncodeI8(pEncoder, pTsmaInfo->fillHistoryFinished));
×
14115
  size = pTsmaInfo->streamAddr ? 1 : 0;
×
14116
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
×
14117
  if (pTsmaInfo->streamAddr) {
×
14118
    TAOS_CHECK_EXIT(tEncodeSStreamTaskAddr(pEncoder, pTsmaInfo->streamAddr));
×
14119
  }
14120

14121
_exit:
×
14122
  return code;
×
14123
}
14124

14125
static int32_t tDecodeTableTSMAInfo(SDecoder *pDecoder, STableTSMAInfo *pTsmaInfo) {
×
14126
  int32_t code = 0;
×
14127
  int32_t lino;
14128

14129
  TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTsmaInfo->name));
×
14130
  TAOS_CHECK_EXIT(tDecodeU64(pDecoder, &pTsmaInfo->tsmaId));
×
14131
  TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTsmaInfo->tb));
×
14132
  TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTsmaInfo->dbFName));
×
14133
  TAOS_CHECK_EXIT(tDecodeU64(pDecoder, &pTsmaInfo->suid));
×
14134
  TAOS_CHECK_EXIT(tDecodeU64(pDecoder, &pTsmaInfo->destTbUid));
×
14135
  TAOS_CHECK_EXIT(tDecodeU64(pDecoder, &pTsmaInfo->dbId));
×
14136
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pTsmaInfo->version));
×
14137
  TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTsmaInfo->targetTb));
×
14138
  TAOS_CHECK_EXIT(tDecodeCStrTo(pDecoder, pTsmaInfo->targetDbFName));
×
14139
  TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pTsmaInfo->interval));
×
14140
  TAOS_CHECK_EXIT(tDecodeI8(pDecoder, &pTsmaInfo->unit));
×
14141
  int32_t size = 0;
×
14142
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
×
14143
  if (size > 0) {
×
14144
    pTsmaInfo->pFuncs = taosArrayInit(size, sizeof(STableTSMAFuncInfo));
×
14145
    if (!pTsmaInfo->pFuncs) {
×
14146
      TAOS_CHECK_EXIT(terrno);
×
14147
    }
14148
    for (int32_t i = 0; i < size; ++i) {
×
14149
      STableTSMAFuncInfo funcInfo = {0};
×
14150
      TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &funcInfo.funcId));
×
14151
      TAOS_CHECK_EXIT(tDecodeI16(pDecoder, &funcInfo.colId));
×
14152
      if (!taosArrayPush(pTsmaInfo->pFuncs, &funcInfo)) {
×
14153
        TAOS_CHECK_EXIT(terrno);
×
14154
      }
14155
    }
14156
  }
14157

14158
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
×
14159
  if (size > 0) {
×
14160
    pTsmaInfo->pTags = taosArrayInit(size, sizeof(SSchema));
×
14161
    if (!pTsmaInfo->pTags) {
×
14162
      TAOS_CHECK_EXIT(terrno);
×
14163
    }
14164
    for (int32_t i = 0; i < size; ++i) {
×
14165
      SSchema schema = {0};
×
14166
      TAOS_CHECK_EXIT(tDecodeSSchema(pDecoder, &schema));
×
14167
      if (taosArrayPush(pTsmaInfo->pTags, &schema) == NULL) {
×
14168
        TAOS_CHECK_EXIT(terrno);
×
14169
      }
14170
    }
14171
  }
14172

14173
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
×
14174
  if (size > 0) {
×
14175
    pTsmaInfo->pUsedCols = taosArrayInit(size, sizeof(SSchema));
×
14176
    if (!pTsmaInfo->pUsedCols) {
×
14177
      TAOS_CHECK_EXIT(terrno);
×
14178
    }
14179
    for (int32_t i = 0; i < size; ++i) {
×
14180
      SSchema schema = {0};
×
14181
      TAOS_CHECK_EXIT(tDecodeSSchema(pDecoder, &schema));
×
14182
      if (taosArrayPush(pTsmaInfo->pUsedCols, &schema) == NULL) {
×
14183
        TAOS_CHECK_EXIT(terrno);
×
14184
      }
14185
    }
14186
  }
14187
  TAOS_CHECK_EXIT(tDecodeCStrAlloc(pDecoder, &pTsmaInfo->ast));
×
14188
  TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pTsmaInfo->streamUid));
×
14189
  TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pTsmaInfo->reqTs));
×
14190
  TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pTsmaInfo->rspTs));
×
14191
  TAOS_CHECK_EXIT(tDecodeI64(pDecoder, &pTsmaInfo->delayDuration));
×
14192
  TAOS_CHECK_EXIT(tDecodeI8(pDecoder, (int8_t *)&pTsmaInfo->fillHistoryFinished));
×
14193
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
×
14194
  if (size > 0) {
×
14195
    pTsmaInfo->streamAddr = taosMemoryCalloc(1, sizeof(SStreamTaskAddr));
×
14196
    if (!pTsmaInfo->streamAddr) {
×
14197
      TAOS_CHECK_EXIT(terrno);
×
14198
    }
14199

14200
    TAOS_CHECK_EXIT(tDecodeSStreamTaskAddr(pDecoder, pTsmaInfo->streamAddr));
×
14201
  } else {
14202
    pTsmaInfo->streamAddr = NULL;
×
14203
  }
14204

14205

14206
_exit:
×
14207
  return code;
×
14208
}
14209

14210
static int32_t tEncodeTableTSMAInfoRsp(SEncoder *pEncoder, const STableTSMAInfoRsp *pRsp) {
29,304✔
14211
  int32_t code = 0;
29,304✔
14212
  int32_t lino;
14213

14214
  int32_t size = pRsp->pTsmas ? pRsp->pTsmas->size : 0;
29,304!
14215
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
29,304!
14216
  for (int32_t i = 0; i < size; ++i) {
29,304!
14217
    STableTSMAInfo *pInfo = taosArrayGetP(pRsp->pTsmas, i);
×
14218
    TAOS_CHECK_EXIT(tEncodeTableTSMAInfo(pEncoder, pInfo));
×
14219
  }
14220
_exit:
29,304✔
14221
  return code;
29,304✔
14222
}
14223

14224
static int32_t tDecodeTableTSMAInfoRsp(SDecoder *pDecoder, STableTSMAInfoRsp *pRsp) {
371✔
14225
  int32_t size = 0;
371✔
14226
  int32_t code = 0;
371✔
14227
  int32_t lino;
14228

14229
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
371!
14230
  if (size <= 0) return 0;
371!
14231
  pRsp->pTsmas = taosArrayInit(size, POINTER_BYTES);
×
14232
  if (!pRsp->pTsmas) {
×
14233
    TAOS_CHECK_EXIT(terrno);
×
14234
  }
14235
  for (int32_t i = 0; i < size; ++i) {
×
14236
    STableTSMAInfo *pTsma = taosMemoryCalloc(1, sizeof(STableTSMAInfo));
×
14237
    if (!pTsma) {
×
14238
      TAOS_CHECK_EXIT(terrno);
×
14239
    }
14240
    if (taosArrayPush(pRsp->pTsmas, &pTsma) == NULL) {
×
14241
      TAOS_CHECK_EXIT(terrno);
×
14242
    }
14243
    TAOS_CHECK_EXIT(tDecodeTableTSMAInfo(pDecoder, pTsma));
×
14244
  }
14245
_exit:
×
14246
  return code;
×
14247
}
14248

14249
int32_t tSerializeTableTSMAInfoRsp(void *buf, int32_t bufLen, const STableTSMAInfoRsp *pRsp) {
×
14250
  SEncoder encoder = {0};
×
14251
  int32_t  code = 0;
×
14252
  int32_t  lino;
14253
  int32_t  tlen;
14254
  tEncoderInit(&encoder, buf, bufLen);
×
14255

14256
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
14257
  TAOS_CHECK_EXIT(tEncodeTableTSMAInfoRsp(&encoder, pRsp));
×
14258

14259
  tEndEncode(&encoder);
×
14260

14261
_exit:
×
14262
  if (code) {
×
14263
    tlen = code;
×
14264
  } else {
14265
    tlen = encoder.pos;
×
14266
  }
14267
  tEncoderClear(&encoder);
×
14268
  return tlen;
×
14269
}
14270

14271
int32_t tDeserializeTableTSMAInfoRsp(void *buf, int32_t bufLen, STableTSMAInfoRsp *pRsp) {
×
14272
  SDecoder decoder = {0};
×
14273
  int32_t  code = 0;
×
14274
  int32_t  lino;
14275

14276
  tDecoderInit(&decoder, buf, bufLen);
×
14277

14278
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
14279
  TAOS_CHECK_EXIT(tDecodeTableTSMAInfoRsp(&decoder, pRsp));
×
14280

14281
  tEndDecode(&decoder);
×
14282

14283
_exit:
×
14284
  tDecoderClear(&decoder);
×
14285
  return code;
×
14286
}
14287

14288
void tFreeTableTSMAInfo(void *p) {
×
14289
  STableTSMAInfo *pTsmaInfo = p;
×
14290
  if (pTsmaInfo) {
×
14291
    taosArrayDestroy(pTsmaInfo->pFuncs);
×
14292
    taosArrayDestroy(pTsmaInfo->pTags);
×
14293
    taosArrayDestroy(pTsmaInfo->pUsedCols);
×
14294
    taosMemoryFree(pTsmaInfo->ast);
×
14295
  }
14296
}
×
14297

14298
void tFreeAndClearTableTSMAInfo(void *p) {
×
14299
  STableTSMAInfo *pTsmaInfo = (STableTSMAInfo *)p;
×
14300
  if (pTsmaInfo) {
×
14301
    tFreeTableTSMAInfo(pTsmaInfo);
×
14302
    taosMemoryFree(pTsmaInfo);
×
14303
  }
14304
}
×
14305

14306
void tFreeAndClearRefDbName(void *p) {
×
14307
  char *dbName = (char *)p;
×
14308
  if (dbName) {
×
14309
    taosMemoryFree(dbName);
×
14310
  }
14311
}
×
14312

14313
int32_t tCloneTbTSMAInfo(STableTSMAInfo *pInfo, STableTSMAInfo **pRes) {
×
14314
  int32_t code = TSDB_CODE_SUCCESS;
×
14315
  if (NULL == pInfo) {
×
14316
    return TSDB_CODE_SUCCESS;
×
14317
  }
14318
  STableTSMAInfo *pRet = taosMemoryCalloc(1, sizeof(STableTSMAInfo));
×
14319
  if (!pRet) return terrno;
×
14320

14321
  *pRet = *pInfo;
×
14322
  if (pInfo->pFuncs) {
×
14323
    pRet->pFuncs = taosArrayDup(pInfo->pFuncs, NULL);
×
14324
    if (!pRet->pFuncs) code = terrno;
×
14325
  }
14326
  if (pInfo->pTags && code == TSDB_CODE_SUCCESS) {
×
14327
    pRet->pTags = taosArrayDup(pInfo->pTags, NULL);
×
14328
    if (!pRet->pTags) code = terrno;
×
14329
  }
14330
  if (pInfo->pUsedCols && code == TSDB_CODE_SUCCESS) {
×
14331
    pRet->pUsedCols = taosArrayDup(pInfo->pUsedCols, NULL);
×
14332
    if (!pRet->pUsedCols) code = terrno;
×
14333
  }
14334
  if (pInfo->ast && code == TSDB_CODE_SUCCESS) {
×
14335
    pRet->ast = taosStrdup(pInfo->ast);
×
14336
    if (!pRet->ast) code = terrno;
×
14337
  }
14338
  if (code) {
×
14339
    tFreeAndClearTableTSMAInfo(pRet);
×
14340
    pRet = NULL;
×
14341
  }
14342
  *pRes = pRet;
×
14343
  return code;
×
14344
}
14345

14346
void tFreeTableTSMAInfoRsp(STableTSMAInfoRsp *pRsp) {
15,030✔
14347
  if (pRsp && pRsp->pTsmas) {
15,030!
14348
    taosArrayDestroyP(pRsp->pTsmas, tFreeAndClearTableTSMAInfo);
14,659✔
14349
  }
14350
}
15,030✔
14351

14352
int32_t tEncodeSMDropTbReqOnSingleVg(SEncoder *pEncoder, const SMDropTbReqsOnSingleVg *pReq) {
×
14353
  const SVgroupInfo *pVgInfo = &pReq->vgInfo;
×
14354
  int32_t            code = 0;
×
14355
  int32_t            lino;
14356

14357
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pVgInfo->vgId));
×
14358
  TAOS_CHECK_EXIT(tEncodeU32(pEncoder, pVgInfo->hashBegin));
×
14359
  TAOS_CHECK_EXIT(tEncodeU32(pEncoder, pVgInfo->hashEnd));
×
14360
  TAOS_CHECK_EXIT(tEncodeSEpSet(pEncoder, &pVgInfo->epSet));
×
14361
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, pVgInfo->numOfTable));
×
14362
  int32_t size = pReq->pTbs ? pReq->pTbs->size : 0;
×
14363
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
×
14364
  for (int32_t i = 0; i < size; ++i) {
×
14365
    const SVDropTbReq *pInfo = taosArrayGet(pReq->pTbs, i);
×
14366
    TAOS_CHECK_EXIT(tEncodeSVDropTbReq(pEncoder, pInfo));
×
14367
  }
14368
_exit:
×
14369
  return code;
×
14370
}
14371

14372
int32_t tDecodeSMDropTbReqOnSingleVg(SDecoder *pDecoder, SMDropTbReqsOnSingleVg *pReq) {
×
14373
  int32_t code = 0;
×
14374
  int32_t lino;
14375

14376
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pReq->vgInfo.vgId));
×
14377
  TAOS_CHECK_EXIT(tDecodeU32(pDecoder, &pReq->vgInfo.hashBegin));
×
14378
  TAOS_CHECK_EXIT(tDecodeU32(pDecoder, &pReq->vgInfo.hashEnd));
×
14379
  TAOS_CHECK_EXIT(tDecodeSEpSet(pDecoder, &pReq->vgInfo.epSet));
×
14380
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &pReq->vgInfo.numOfTable));
×
14381
  int32_t size = 0;
×
14382
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
×
14383
  pReq->pTbs = taosArrayInit(size, sizeof(SVDropTbReq));
×
14384
  if (!pReq->pTbs) {
×
14385
    TAOS_CHECK_EXIT(terrno);
×
14386
  }
14387
  SVDropTbReq pTbReq = {0};
×
14388
  for (int32_t i = 0; i < size; ++i) {
×
14389
    TAOS_CHECK_EXIT(tDecodeSVDropTbReq(pDecoder, &pTbReq));
×
14390
    if (taosArrayPush(pReq->pTbs, &pTbReq) == NULL) {
×
14391
      TAOS_CHECK_EXIT(terrno);
×
14392
    }
14393
  }
14394

14395
_exit:
×
14396
  return code;
×
14397
}
14398

14399
void tFreeSMDropTbReqOnSingleVg(void *p) {
×
14400
  SMDropTbReqsOnSingleVg *pReq = p;
×
14401
  taosArrayDestroy(pReq->pTbs);
×
14402
}
×
14403

14404
int32_t tSerializeSMDropTbsReq(void *buf, int32_t bufLen, const SMDropTbsReq *pReq) {
×
14405
  SEncoder encoder = {0};
×
14406
  int32_t  code = 0;
×
14407
  int32_t  lino;
14408
  int32_t  tlen;
14409

14410
  tEncoderInit(&encoder, buf, bufLen);
×
14411
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
14412
  int32_t size = pReq->pVgReqs ? pReq->pVgReqs->size : 0;
×
14413
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, size));
×
14414
  for (int32_t i = 0; i < size; ++i) {
×
14415
    SMDropTbReqsOnSingleVg *pVgReq = taosArrayGet(pReq->pVgReqs, i);
×
14416
    TAOS_CHECK_EXIT(tEncodeSMDropTbReqOnSingleVg(&encoder, pVgReq));
×
14417
  }
14418
  tEndEncode(&encoder);
×
14419

14420
_exit:
×
14421
  if (code) {
×
14422
    tlen = code;
×
14423
  } else {
14424
    tlen = encoder.pos;
×
14425
  }
14426
  tEncoderClear(&encoder);
×
14427
  return tlen;
×
14428
}
14429

14430
int32_t tDeserializeSMDropTbsReq(void *buf, int32_t bufLen, SMDropTbsReq *pReq) {
×
14431
  SDecoder decoder = {0};
×
14432
  int32_t  code = 0;
×
14433
  int32_t  lino;
14434

14435
  tDecoderInit(&decoder, buf, bufLen);
×
14436
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
14437
  int32_t size = 0;
×
14438
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &size));
×
14439
  pReq->pVgReqs = taosArrayInit(size, sizeof(SMDropTbReqsOnSingleVg));
×
14440
  if (!pReq->pVgReqs) {
×
14441
    TAOS_CHECK_EXIT(terrno);
×
14442
  }
14443
  for (int32_t i = 0; i < size; ++i) {
×
14444
    SMDropTbReqsOnSingleVg vgReq = {0};
×
14445
    TAOS_CHECK_EXIT(tDecodeSMDropTbReqOnSingleVg(&decoder, &vgReq));
×
14446
    if (taosArrayPush(pReq->pVgReqs, &vgReq) == NULL) {
×
14447
      TAOS_CHECK_EXIT(terrno);
×
14448
    }
14449
  }
14450
  tEndDecode(&decoder);
×
14451
_exit:
×
14452
  tDecoderClear(&decoder);
×
14453
  return code;
×
14454
}
14455

14456
void tFreeSMDropTbsReq(void *p) {
×
14457
  SMDropTbsReq *pReq = p;
×
14458
  taosArrayDestroyEx(pReq->pVgReqs, tFreeSMDropTbReqOnSingleVg);
×
14459
}
×
14460

14461
int32_t tEncodeVFetchTtlExpiredTbsRsp(SEncoder *pCoder, const SVFetchTtlExpiredTbsRsp *pRsp) {
62✔
14462
  int32_t code = 0;
62✔
14463
  int32_t lino;
14464

14465
  TAOS_CHECK_EXIT(tEncodeI32(pCoder, pRsp->vgId));
124!
14466
  int32_t size = pRsp->pExpiredTbs ? pRsp->pExpiredTbs->size : 0;
62!
14467
  TAOS_CHECK_EXIT(tEncodeI32(pCoder, size));
62!
14468
  for (int32_t i = 0; i < size; ++i) {
312✔
14469
    TAOS_CHECK_EXIT(tEncodeSVDropTbReq(pCoder, taosArrayGet(pRsp->pExpiredTbs, i)));
250!
14470
  }
14471

14472
_exit:
62✔
14473
  return code;
62✔
14474
}
14475

14476
int32_t tDecodeVFetchTtlExpiredTbsRsp(SDecoder *pCoder, SVFetchTtlExpiredTbsRsp *pRsp) {
31✔
14477
  int32_t code = 0;
31✔
14478
  int32_t lino;
14479

14480
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &pRsp->vgId));
62!
14481
  int32_t size = 0;
31✔
14482
  TAOS_CHECK_EXIT(tDecodeI32(pCoder, &size));
31!
14483
  if (size > 0) {
31!
14484
    pRsp->pExpiredTbs = taosArrayInit(size, sizeof(SVDropTbReq));
31✔
14485
    if (!pRsp->pExpiredTbs) {
31!
14486
      TAOS_CHECK_EXIT(terrno);
×
14487
    }
14488
    SVDropTbReq tb = {0};
31✔
14489
    for (int32_t i = 0; i < size; ++i) {
156✔
14490
      TAOS_CHECK_EXIT(tDecodeSVDropTbReq(pCoder, &tb));
125!
14491
      if (taosArrayPush(pRsp->pExpiredTbs, &tb) == NULL) {
250!
14492
        TAOS_CHECK_EXIT(terrno);
×
14493
      }
14494
    }
14495
  }
14496
_exit:
×
14497
  return code;
31✔
14498
}
14499

14500
void tFreeFetchTtlExpiredTbsRsp(void *p) {
67,036✔
14501
  SVFetchTtlExpiredTbsRsp *pRsp = p;
67,036✔
14502
  taosArrayDestroy(pRsp->pExpiredTbs);
67,036✔
14503
}
67,036✔
14504

14505
int32_t tEncodeMqBatchMetaRsp(SEncoder *pEncoder, const SMqBatchMetaRsp *pRsp) {
34✔
14506
  int32_t code = 0;
34✔
14507
  int32_t lino;
14508

14509
  TAOS_CHECK_EXIT(tEncodeSTqOffsetVal(pEncoder, &pRsp->rspOffset));
34!
14510

14511
  int32_t size = taosArrayGetSize(pRsp->batchMetaReq);
34✔
14512
  TAOS_CHECK_EXIT(tEncodeI32(pEncoder, size));
34!
14513
  if (size > 0) {
34!
14514
    for (int32_t i = 0; i < size; i++) {
306✔
14515
      void   *pMetaReq = taosArrayGetP(pRsp->batchMetaReq, i);
272✔
14516
      int32_t metaLen = *(int32_t *)taosArrayGet(pRsp->batchMetaLen, i);
272✔
14517
      TAOS_CHECK_EXIT(tEncodeBinary(pEncoder, pMetaReq, metaLen));
544!
14518
    }
14519
  }
14520
_exit:
34✔
14521
  return code;
34✔
14522
}
14523

14524
int32_t tDecodeMqBatchMetaRsp(SDecoder *pDecoder, SMqBatchMetaRsp *pRsp) {
26✔
14525
  int32_t size = 0;
26✔
14526
  int32_t code = 0;
26✔
14527
  int32_t lino;
14528

14529
  TAOS_CHECK_EXIT(tDecodeI32(pDecoder, &size));
26!
14530
  if (size > 0) {
26!
14531
    pRsp->batchMetaReq = taosArrayInit(size, POINTER_BYTES);
26✔
14532
    if (!pRsp->batchMetaReq) {
26!
14533
      TAOS_CHECK_EXIT(terrno);
×
14534
    }
14535
    pRsp->batchMetaLen = taosArrayInit(size, sizeof(int32_t));
26✔
14536
    if (!pRsp->batchMetaLen) {
26!
14537
      TAOS_CHECK_EXIT(terrno);
×
14538
    }
14539
    for (int32_t i = 0; i < size; i++) {
278✔
14540
      void    *pCreate = NULL;
252✔
14541
      uint64_t len = 0;
252✔
14542
      TAOS_CHECK_EXIT(tDecodeBinaryAlloc(pDecoder, &pCreate, &len));
252!
14543
      int32_t l = (int32_t)len;
252✔
14544
      if (taosArrayPush(pRsp->batchMetaReq, &pCreate) == NULL) {
504!
14545
        TAOS_CHECK_EXIT(terrno);
×
14546
      }
14547
      if (taosArrayPush(pRsp->batchMetaLen, &l) == NULL) {
504!
14548
        TAOS_CHECK_EXIT(terrno);
×
14549
      }
14550
    }
14551
  }
14552
_exit:
26✔
14553
  return code;
26✔
14554
}
14555

14556
int32_t tSemiDecodeMqBatchMetaRsp(SDecoder *pDecoder, SMqBatchMetaRsp *pRsp) {
13✔
14557
  int32_t code = 0;
13✔
14558
  int32_t lino;
14559

14560
  TAOS_CHECK_EXIT(tDecodeSTqOffsetVal(pDecoder, &pRsp->rspOffset));
13!
14561
  if (pDecoder->size < pDecoder->pos) {
13!
14562
    return TSDB_CODE_INVALID_PARA;
×
14563
  }
14564
  pRsp->metaBuffLen = TD_CODER_REMAIN_CAPACITY(pDecoder);
13✔
14565
  pRsp->pMetaBuff = taosMemoryCalloc(1, pRsp->metaBuffLen);
13!
14566
  if (pRsp->pMetaBuff == NULL) {
13!
14567
    TAOS_CHECK_EXIT(terrno);
×
14568
  }
14569
  memcpy(pRsp->pMetaBuff, TD_CODER_CURRENT(pDecoder), pRsp->metaBuffLen);
13✔
14570

14571
_exit:
13✔
14572
  return code;
13✔
14573
}
14574

14575
void tDeleteMqBatchMetaRsp(SMqBatchMetaRsp *pRsp) {
9,911✔
14576
  taosMemoryFreeClear(pRsp->pMetaBuff);
9,911!
14577
  taosArrayDestroyP(pRsp->batchMetaReq, NULL);
9,911✔
14578
  taosArrayDestroy(pRsp->batchMetaLen);
9,911✔
14579
  pRsp->batchMetaReq = NULL;
9,912✔
14580
  pRsp->batchMetaLen = NULL;
9,912✔
14581
}
9,912✔
14582

14583
bool hasExtSchema(const SExtSchema *pExtSchema) { return pExtSchema->typeMod != 0; }
×
14584

14585
#ifdef USE_MOUNT
14586
int32_t tSerializeSMountStbInfo(void *buf, int32_t bufLen, int32_t *pFLen, SMountStbInfo *pInfo) {
24✔
14587
  SEncoder        encoder = {0};
24✔
14588
  int32_t         code = 0, lino = 0;
24✔
14589
  int32_t         flen = 0, qlen = 0;
24✔
14590
  SMCreateStbReq *pReq = &pInfo->req;
24✔
14591
  void           *qBuf = NULL;
24✔
14592

14593
  flen = tSerializeSMCreateStbReq(buf, bufLen, pReq);
24✔
14594
  if (flen <= 0) {
24!
14595
    TAOS_RETURN(flen < 0 ? flen : TSDB_CODE_INTERNAL_ERROR);
×
14596
  }
14597
  if (pFLen) *pFLen = flen;
24✔
14598

14599
  if (buf) qBuf = POINTER_SHIFT(buf, flen);
24✔
14600
  tEncoderInit(&encoder, qBuf, qBuf ? bufLen - flen : 0);
24✔
14601
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
24!
14602
  for (int32_t i = 0; i < pReq->numOfColumns; ++i) {
144✔
14603
    void *pColExt = taosArrayGet(pInfo->pColExts, i);
120✔
14604
    TAOS_CHECK_EXIT(tEncodeI16v(&encoder, *(col_id_t *)pColExt));
240!
14605
  }
14606
  for (int32_t i = 0; i < pReq->numOfTags; ++i) {
56✔
14607
    void *pTagExt = taosArrayGet(pInfo->pTagExts, i);
32✔
14608
    TAOS_CHECK_EXIT(tEncodeI16v(&encoder, *(col_id_t *)pTagExt));
64!
14609
  }
14610
  tEndEncode(&encoder);
24✔
14611
_exit:
24✔
14612
  qlen = code ? code : encoder.pos;
24!
14613
  tEncoderClear(&encoder);
24✔
14614
  return code ? code : (flen + qlen);
24!
14615
}
14616

14617
int32_t tDeserializeSMountStbInfo(void *buf, int32_t bufLen, int32_t flen, SMountStbInfo *pInfo) {
12✔
14618
  SDecoder decoder = {0};
12✔
14619
  int32_t  code = 0, lino = 0;
12✔
14620
  void    *qBuf = POINTER_SHIFT(buf, flen);
12✔
14621

14622
  TAOS_CHECK_EXIT(tDeserializeSMCreateStbReq(buf, flen, &pInfo->req));
12!
14623

14624
  tDecoderInit(&decoder, qBuf, bufLen - flen);
12✔
14625
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
12!
14626
  if ((pInfo->pColExts = taosArrayInit(pInfo->req.numOfColumns, sizeof(col_id_t))) == NULL) {
12!
14627
    TAOS_CHECK_EXIT(terrno);
×
14628
  }
14629
  if ((pInfo->pTagExts = taosArrayInit(pInfo->req.numOfTags, sizeof(col_id_t))) == NULL) {
12!
14630
    TAOS_CHECK_EXIT(terrno);
×
14631
  }
14632
  for (int32_t i = 0; i < pInfo->req.numOfColumns; ++i) {
72✔
14633
    col_id_t colId = 0;
60✔
14634
    TAOS_CHECK_EXIT(tDecodeI16v(&decoder, &colId));
60!
14635
    if (taosArrayPush(pInfo->pColExts, &colId) == NULL) {
120!
14636
      TAOS_CHECK_EXIT(terrno);
×
14637
    }
14638
  }
14639
  for (int32_t i = 0; i < pInfo->req.numOfTags; ++i) {
28✔
14640
    col_id_t colId = 0;
16✔
14641
    TAOS_CHECK_EXIT(tDecodeI16v(&decoder, &colId));
16!
14642
    if (taosArrayPush(pInfo->pTagExts, &colId) == NULL) {
32!
14643
      TAOS_CHECK_EXIT(terrno);
×
14644
    }
14645
  }
14646
  tEndDecode(&decoder);
12✔
14647
_exit:
12✔
14648
  tDecoderClear(&decoder);
12✔
14649
  return code;
12✔
14650
}
14651

14652
int32_t tSerializeSCreateMountReq(void *buf, int32_t bufLen, SCreateMountReq *pReq) {
×
14653
  SEncoder encoder = {0};
×
14654
  int32_t  code = 0, lino = 0;
×
14655
  int32_t  tlen;
14656

14657
  tEncoderInit(&encoder, buf, bufLen);
×
14658

14659
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
14660
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->mountName));
×
14661
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ignoreExist));
×
14662
  TAOS_CHECK_EXIT(tEncodeI16v(&encoder, pReq->nMounts));
×
14663
  for (int32_t i = 0; i < pReq->nMounts; ++i) {
×
14664
    TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->dnodeIds[i]));
×
14665
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->mountPaths[i]));
×
14666
  }
14667
  ENCODESQL();
×
14668

14669
  tEndEncode(&encoder);
×
14670
_exit:
×
14671
  if (code) {
×
14672
    tlen = code;
×
14673
  } else {
14674
    tlen = encoder.pos;
×
14675
  }
14676
  tEncoderClear(&encoder);
×
14677
  return tlen;
×
14678
}
14679

14680
int32_t tDeserializeSCreateMountReq(void *buf, int32_t bufLen, SCreateMountReq *pReq) {
9✔
14681
  SDecoder decoder = {0};
9✔
14682
  int32_t  code = 0, lino = 0;
9✔
14683
  tDecoderInit(&decoder, buf, bufLen);
9✔
14684

14685
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
9!
14686
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->mountName));
9!
14687
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ignoreExist));
18!
14688
  TAOS_CHECK_EXIT(tDecodeI16v(&decoder, &pReq->nMounts));
18!
14689
  if(pReq->nMounts > 0) {
9!
14690
    TSDB_CHECK_NULL((pReq->dnodeIds = taosMemoryMalloc(pReq->nMounts * sizeof(int32_t))), code, lino, _exit, terrno);
9!
14691
    TSDB_CHECK_NULL((pReq->mountPaths = taosMemoryMalloc(pReq->nMounts * sizeof(char*))), code, lino, _exit, terrno);
9!
14692
    for (int32_t i = 0; i < pReq->nMounts; ++i) {
18✔
14693
      TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->dnodeIds[i]));
18!
14694
      TAOS_CHECK_EXIT(tDecodeCStrAlloc(&decoder, &pReq->mountPaths[i]));
18!
14695
    }
14696
  }
14697
  DECODESQL();
27!
14698

14699
  tEndDecode(&decoder);
9✔
14700
_exit:
9✔
14701
  tDecoderClear(&decoder);
9✔
14702
  return code;
9✔
14703
}
14704

14705
void tFreeSCreateMountReq(SCreateMountReq *pReq) {
9✔
14706
  if (pReq) {
9!
14707
    taosMemoryFreeClear(pReq->dnodeIds);
9!
14708
    if (pReq->mountPaths) {
9!
14709
      for (int32_t i = 0; i < pReq->nMounts; ++i) {
18✔
14710
        taosMemoryFreeClear(pReq->mountPaths[i]);
9!
14711
      }
14712
      taosMemoryFreeClear(pReq->mountPaths);
9!
14713
    }
14714
    FREESQL();
9!
14715
  }
14716
}
9✔
14717

14718
int32_t tSerializeSDropMountReq(void *buf, int32_t bufLen, SDropMountReq *pReq) {
×
14719
  SEncoder encoder = {0};
×
14720
  int32_t  code = 0, lino = 0;
×
14721
  int32_t  tlen;
14722
  tEncoderInit(&encoder, buf, bufLen);
×
14723

14724
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
×
14725
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->mountName));
×
14726
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ignoreNotExists));
×
14727
  ENCODESQL();
×
14728
  tEndEncode(&encoder);
×
14729

14730
_exit:
×
14731
  if (code) {
×
14732
    tlen = code;
×
14733
  } else {
14734
    tlen = encoder.pos;
×
14735
  }
14736
  tEncoderClear(&encoder);
×
14737
  return tlen;
×
14738
}
14739

14740
int32_t tDeserializeSDropMountReq(void *buf, int32_t bufLen, SDropMountReq *pReq) {
4✔
14741
  SDecoder decoder = {0};
4✔
14742
  int32_t  code = 0, lino = 0;
4✔
14743
  tDecoderInit(&decoder, buf, bufLen);
4✔
14744

14745
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
4!
14746
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->mountName));
4!
14747
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ignoreNotExists));
8!
14748
  DECODESQL();
12!
14749
  tEndDecode(&decoder);
4✔
14750

14751
_exit:
4✔
14752
  tDecoderClear(&decoder);
4✔
14753
  return code;
4✔
14754
}
14755

14756
void tFreeSDropMountReq(SDropMountReq *pReq) { FREESQL(); }
4!
14757

14758
int32_t tSerializeSDropMountRsp(void *buf, int32_t bufLen, SDropMountRsp *pRsp) {
4✔
14759
  SEncoder encoder = {0};
4✔
14760
  int32_t  code = 0, lino = 0;
4✔
14761
  int32_t  tlen;
14762
  tEncoderInit(&encoder, buf, bufLen);
4✔
14763

14764
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
4!
14765
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pRsp->name));
8!
14766
  TAOS_CHECK_EXIT(tEncodeI64(&encoder, pRsp->uid));
8!
14767
  tEndEncode(&encoder);
4✔
14768

14769
_exit:
4✔
14770
  if (code) {
4!
14771
    tlen = code;
×
14772
  } else {
14773
    tlen = encoder.pos;
4✔
14774
  }
14775
  tEncoderClear(&encoder);
4✔
14776
  return tlen;
4✔
14777
}
14778

14779
int32_t tDeserializeSDropMountRsp(void *buf, int32_t bufLen, SDropMountRsp *pRsp) {
×
14780
  SDecoder decoder = {0};
×
14781
  int32_t  code = 0, lino = 0;
×
14782
  tDecoderInit(&decoder, buf, bufLen);
×
14783

14784
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
×
14785
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pRsp->name));
×
14786
  TAOS_CHECK_EXIT(tDecodeI64(&decoder, &pRsp->uid));
×
14787
  tEndDecode(&decoder);
×
14788

14789
_exit:
×
14790
  tDecoderClear(&decoder);
×
14791
  return code;
×
14792
}
14793

14794
int32_t tSerializeSRetrieveMountPathReq(void *buf, int32_t bufLen, SRetrieveMountPathReq *pReq) {
12✔
14795
  SEncoder encoder = {0};
12✔
14796
  int32_t  code = 0, lino = 0;
12✔
14797
  int32_t  tlen;
14798
  tEncoderInit(&encoder, buf, bufLen);
12✔
14799

14800
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
12!
14801
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->mountName));
24!
14802
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->mountPath));
24!
14803
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->mountUid));
24!
14804
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->dnodeId));
24!
14805
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pReq->ignoreExist));
24!
14806
  TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t*)pReq->pVal, pReq->valLen));
24!
14807
  tEndEncode(&encoder);
12✔
14808

14809
_exit:
12✔
14810
  if (code) {
12!
14811
    tlen = code;
×
14812
  } else {
14813
    tlen = encoder.pos;
12✔
14814
  }
14815
  tEncoderClear(&encoder);
12✔
14816
  return tlen;
12✔
14817
}
14818

14819
int32_t tDeserializeSRetrieveMountPathReq(void *buf, int32_t bufLen, SRetrieveMountPathReq *pReq) {
6✔
14820
  SDecoder decoder = {0};
6✔
14821
  int32_t  code = 0, lino = 0;
6✔
14822
  tDecoderInit(&decoder, buf, bufLen);
6✔
14823

14824
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
6!
14825
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->mountName));
6!
14826
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->mountPath));
6!
14827
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->mountUid));
12!
14828
  TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->dnodeId));
12!
14829
  TAOS_CHECK_EXIT(tDecodeI8(&decoder, &pReq->ignoreExist));
12!
14830
  TAOS_CHECK_EXIT(tDecodeBinary(&decoder, (uint8_t**)&pReq->pVal, &pReq->valLen));
12!
14831
  tEndDecode(&decoder);
6✔
14832

14833
_exit:
6✔
14834
  tDecoderClear(&decoder);
6✔
14835
  return code;
6✔
14836
}
14837

14838
int32_t tSerializeSMountInfo(void *buf, int32_t bufLen, SMountInfo *pInfo) {
16✔
14839
  SEncoder encoder = {0};
16✔
14840
  int32_t  code = 0, lino = 0;
16✔
14841
  int32_t  tlen, nDb = 0, nVg = 0, nStb = 0;
16✔
14842
  tEncoderInit(&encoder, buf, bufLen);
16✔
14843

14844
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
16!
14845
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pInfo->mountName));
32!
14846
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pInfo->mountPath));
32!
14847
  TAOS_CHECK_EXIT(tEncodeI8(&encoder, pInfo->ignoreExist));
32!
14848
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pInfo->mountUid));
32!
14849
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pInfo->clusterId));
32!
14850
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pInfo->dnodeId));
32!
14851
  TAOS_CHECK_EXIT(tEncodeBinary(&encoder, (const uint8_t *)pInfo->pVal, pInfo->valLen));
32!
14852
  nDb = taosArrayGetSize(pInfo->pDbs);
16✔
14853
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, nDb));
16!
14854
  for (int32_t i = 0; i < nDb; ++i) {
32✔
14855
    SMountDbInfo *pDbInfo = TARRAY_GET_ELEM(pInfo->pDbs, i);
16✔
14856
    TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pDbInfo->dbName));
32!
14857
    TAOS_CHECK_EXIT(tEncodeU64v(&encoder, pDbInfo->dbId));
32!
14858
    nVg = taosArrayGetSize(pDbInfo->pVgs);
16✔
14859
    TAOS_CHECK_EXIT(tEncodeI32v(&encoder, nVg));
16!
14860
    for (int32_t j = 0; j < nVg; ++j) {
48✔
14861
      SMountVgInfo *pVgInfo = TARRAY_GET_ELEM(pDbInfo->pVgs, j);
32✔
14862
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->diskPrimary));
64!
14863
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->vgId));
64!
14864
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->cacheLastSize));
64!
14865
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->szPage));
64!
14866
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->szCache));
64!
14867
      TAOS_CHECK_EXIT(tEncodeU64v(&encoder, pVgInfo->szBuf));
64!
14868
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pVgInfo->cacheLast));
64!
14869
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pVgInfo->standby));
64!
14870
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pVgInfo->hashMethod));
64!
14871
      TAOS_CHECK_EXIT(tEncodeU32v(&encoder, pVgInfo->hashBegin));
64!
14872
      TAOS_CHECK_EXIT(tEncodeU32v(&encoder, pVgInfo->hashEnd));
64!
14873
      TAOS_CHECK_EXIT(tEncodeI16v(&encoder, pVgInfo->hashPrefix));
64!
14874
      TAOS_CHECK_EXIT(tEncodeI16v(&encoder, pVgInfo->hashSuffix));
64!
14875
      TAOS_CHECK_EXIT(tEncodeI16v(&encoder, pVgInfo->sttTrigger));
64!
14876
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->replications));
64!
14877
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pVgInfo->precision));
64!
14878
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pVgInfo->compression));
64!
14879
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pVgInfo->slLevel));
64!
14880
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->daysPerFile));
64!
14881
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->keep0));
64!
14882
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->keep1));
64!
14883
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->keep2));
64!
14884
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->keepTimeOffset));
64!
14885
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->minRows));
64!
14886
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->maxRows));
64!
14887
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->tsdbPageSize));
64!
14888
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->ssChunkSize));
64!
14889
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->ssKeepLocal));
64!
14890
      TAOS_CHECK_EXIT(tEncodeI8(&encoder, pVgInfo->ssCompact));
64!
14891
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->walFsyncPeriod));
64!
14892
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->walRetentionPeriod));
64!
14893
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->walRollPeriod));
64!
14894
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->walRetentionSize));
64!
14895
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->walSegSize));
64!
14896
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->walLevel));
64!
14897
      TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pVgInfo->encryptAlgorithm));
64!
14898
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->committed));
64!
14899
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->commitID));
64!
14900
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->commitTerm));
64!
14901
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->numOfSTables));
64!
14902
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->numOfCTables));
64!
14903
      TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pVgInfo->numOfNTables));
64!
14904
      TAOS_CHECK_EXIT(tEncodeU64v(&encoder, pVgInfo->dbId));
64!
14905
    }
14906
    nStb = taosArrayGetSize(pDbInfo->pStbs);
16✔
14907
    TAOS_CHECK_EXIT(tEncodeI32v(&encoder, nStb));
16!
14908
    for (int32_t k = 0; k < nStb; ++k) {
64✔
14909
      void **pVal = TARRAY_GET_ELEM(pDbInfo->pStbs, k);
48✔
14910
      TAOS_CHECK_EXIT(tEncodeBinary(&encoder, *(const uint8_t **)(pVal), **(int32_t **)pVal));
96!
14911
    }
14912
  }
14913

14914
  tEndEncode(&encoder);
16✔
14915

14916
_exit:
16✔
14917
  if (code) {
16!
14918
    tlen = code;
×
14919
  } else {
14920
    tlen = encoder.pos;
16✔
14921
  }
14922
  tEncoderClear(&encoder);
16✔
14923
  return tlen;
16✔
14924
}
14925

14926
int32_t tDeserializeSMountInfo(SDecoder *decoder, SMountInfo *pInfo, bool extractStb) {
8✔
14927
  int32_t code = 0, lino = 0;
8✔
14928
  int32_t nDb = 0, nVg = 0, nStb = 0;
8✔
14929

14930
  TAOS_CHECK_EXIT(tStartDecode(decoder));
8!
14931
  TAOS_CHECK_EXIT(tDecodeCStrTo(decoder, pInfo->mountName));
8!
14932
  TAOS_CHECK_EXIT(tDecodeCStrTo(decoder, pInfo->mountPath));
8!
14933
  TAOS_CHECK_EXIT(tDecodeI8(decoder, &pInfo->ignoreExist));
16!
14934
  TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pInfo->mountUid));
16!
14935
  TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pInfo->clusterId));
16!
14936
  TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pInfo->dnodeId));
16!
14937
  TAOS_CHECK_EXIT(tDecodeBinary(decoder, (uint8_t **)&pInfo->pVal, &pInfo->valLen));
16!
14938
  TAOS_CHECK_EXIT(tDecodeI32v(decoder, &nDb));
8!
14939
  if (nDb > 0) {
8✔
14940
    TSDB_CHECK_NULL((pInfo->pDbs = taosArrayInit_s(sizeof(SMountDbInfo), nDb)), code, lino, _exit, terrno);
4!
14941
    for (int32_t i = 0; i < nDb; ++i) {
12✔
14942
      SMountDbInfo *pDbInfo = TARRAY_GET_ELEM(pInfo->pDbs, i);
8✔
14943
      TAOS_CHECK_EXIT(tDecodeCStrTo(decoder, pDbInfo->dbName));
8!
14944
      TAOS_CHECK_EXIT(tDecodeU64v(decoder, &pDbInfo->dbId));
16!
14945
      TAOS_CHECK_EXIT(tDecodeI32v(decoder, &nVg));
8!
14946
      if (nVg > 0) {
8!
14947
        TSDB_CHECK_NULL((pDbInfo->pVgs = taosArrayInit_s(sizeof(SMountVgInfo), nVg)), code, lino, _exit, terrno);
8!
14948
        for (int32_t j = 0; j < nVg; ++j) {
24✔
14949
          SMountVgInfo *pVgInfo = TARRAY_GET_ELEM(pDbInfo->pVgs, j);
16✔
14950
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->diskPrimary));
32!
14951
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->vgId));
32!
14952
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->cacheLastSize));
32!
14953
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->szPage));
32!
14954
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->szCache));
32!
14955
          TAOS_CHECK_EXIT(tDecodeU64v(decoder, &pVgInfo->szBuf));
32!
14956
          TAOS_CHECK_EXIT(tDecodeI8(decoder, &pVgInfo->cacheLast));
32!
14957
          TAOS_CHECK_EXIT(tDecodeI8(decoder, &pVgInfo->standby));
32!
14958
          TAOS_CHECK_EXIT(tDecodeI8(decoder, &pVgInfo->hashMethod));
32!
14959
          TAOS_CHECK_EXIT(tDecodeU32v(decoder, &pVgInfo->hashBegin));
32!
14960
          TAOS_CHECK_EXIT(tDecodeU32v(decoder, &pVgInfo->hashEnd));
32!
14961
          TAOS_CHECK_EXIT(tDecodeI16v(decoder, &pVgInfo->hashPrefix));
32!
14962
          TAOS_CHECK_EXIT(tDecodeI16v(decoder, &pVgInfo->hashSuffix));
32!
14963
          TAOS_CHECK_EXIT(tDecodeI16v(decoder, &pVgInfo->sttTrigger));
32!
14964
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->replications));
32!
14965
          TAOS_CHECK_EXIT(tDecodeI8(decoder, &pVgInfo->precision));
32!
14966
          TAOS_CHECK_EXIT(tDecodeI8(decoder, &pVgInfo->compression));
32!
14967
          TAOS_CHECK_EXIT(tDecodeI8(decoder, &pVgInfo->slLevel));
32!
14968
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->daysPerFile));
32!
14969
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->keep0));
32!
14970
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->keep1));
32!
14971
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->keep2));
32!
14972
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->keepTimeOffset));
32!
14973
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->minRows));
32!
14974
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->maxRows));
32!
14975
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->tsdbPageSize));
32!
14976
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->ssChunkSize));
32!
14977
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->ssKeepLocal));
32!
14978
          TAOS_CHECK_EXIT(tDecodeI8(decoder, &pVgInfo->ssCompact));
32!
14979
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->walFsyncPeriod));
32!
14980
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->walRetentionPeriod));
32!
14981
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->walRollPeriod));
32!
14982
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->walRetentionSize));
32!
14983
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->walSegSize));
32!
14984
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->walLevel));
32!
14985
          TAOS_CHECK_EXIT(tDecodeI32v(decoder, &pVgInfo->encryptAlgorithm));
32!
14986
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->committed));
32!
14987
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->commitID));
32!
14988
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->commitTerm));
32!
14989
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->numOfSTables));
32!
14990
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->numOfCTables));
32!
14991
          TAOS_CHECK_EXIT(tDecodeI64v(decoder, &pVgInfo->numOfNTables));
32!
14992
          TAOS_CHECK_EXIT(tDecodeU64v(decoder, &pVgInfo->dbId));
32!
14993
        }
14994
      }
14995
      TAOS_CHECK_EXIT(tDecodeI32v(decoder, &nStb));
8!
14996
      if (nStb > 0) {
8!
14997
        if (extractStb) {
8✔
14998
          TSDB_CHECK_NULL((pDbInfo->pStbs = taosArrayInit_s(sizeof(SMountStbInfo), nStb)), code, lino, _exit, terrno);
4!
14999
          for (int32_t k = 0; k < nStb; ++k) {
16✔
15000
            int32_t vlen = 0;
12✔
15001
            void   *pVal = NULL;
12✔
15002
            TAOS_CHECK_EXIT(tDecodeBinary(decoder, (uint8_t **)&pVal, &vlen));
12!
15003
            if (vlen < 8) {
12!
15004
              TAOS_CHECK_EXIT(TSDB_CODE_INVALID_MSG);  // totalLen(4) + 1stPartLen(4) + 1stPart(SMCreateStbReq) + 2ndPart(colIds and tagIds)
×
15005
            }
15006
            int32_t flen = *(int32_t *)POINTER_SHIFT(pVal,4);
12✔
15007
            SMountStbInfo *pStbInfo = TARRAY_GET_ELEM(pDbInfo->pStbs, k);
12✔
15008
            TAOS_CHECK_EXIT(tDeserializeSMountStbInfo(POINTER_SHIFT(pVal, 8), vlen - 8, flen, pStbInfo));
12!
15009
          }
15010
        } else {
15011
          TSDB_CHECK_NULL((pDbInfo->pStbs = taosArrayInit_s(sizeof(void *), nStb)), code, lino, _exit, terrno);
4!
15012
          for (int32_t k = 0; k < nStb; ++k) {
16✔
15013
            int32_t vlen = 0;
12✔
15014
            void   *pVal = NULL;
12✔
15015
            TAOS_CHECK_EXIT(tDecodeBinary(decoder, (uint8_t **)&pVal, &vlen));
12!
15016
            if (vlen < 8) {
12!
15017
              TAOS_CHECK_EXIT(TSDB_CODE_INVALID_MSG);  // totalLen(4) + 1stPartLen(4) + 1stPart + 2ndPart
×
15018
            }
15019
            void *pStb = TARRAY_GET_ELEM(pDbInfo->pStbs, k);
12✔
15020
            void *pNewVal = taosMemoryMalloc(vlen);
12!
15021
            if (pNewVal == NULL) {
12!
15022
              TAOS_CHECK_EXIT(terrno);
×
15023
            }
15024
            memcpy(pNewVal, pVal, vlen);
12✔
15025
            *(void **)pStb = pNewVal;
12✔
15026
          }
15027
        }
15028
      }
15029
    }
15030
  }
15031

15032
  tEndDecode(decoder);
8✔
15033
_exit:
8✔
15034
  return code;
8✔
15035
}
15036

15037
void tFreeMountInfo(SMountInfo *pInfo, bool stbExtracted) {
14✔
15038
  if (pInfo) {
14!
15039
    if (pInfo->pDbs) {
14✔
15040
      for (int32_t i = 0; i < TARRAY_SIZE(pInfo->pDbs); ++i) {
18✔
15041
        SMountDbInfo *pDbInfo = TARRAY_GET_ELEM(pInfo->pDbs, i);
12✔
15042
        taosArrayDestroy(pDbInfo->pVgs);
12✔
15043
        if (stbExtracted) {
12✔
15044
          for (int32_t j = 0; j < taosArrayGetSize(pDbInfo->pStbs); ++j) {
16✔
15045
            SMountStbInfo *pStbInfo = TARRAY_GET_ELEM(pDbInfo->pStbs, j);
12✔
15046
            tFreeSMCreateStbReq(&pStbInfo->req);
12✔
15047
            taosArrayDestroy(pStbInfo->pColExts);
12✔
15048
            taosArrayDestroy(pStbInfo->pTagExts);
12✔
15049
          }
15050
          taosArrayDestroy(pDbInfo->pStbs);
4✔
15051
        } else {
15052
          taosArrayDestroyP(pDbInfo->pStbs, NULL);
8✔
15053
        }
15054
      }
15055
      taosArrayDestroy(pInfo->pDbs);
6✔
15056
    }
15057
    for (int32_t i = 0; i < TFS_MAX_TIERS; ++i) {
56✔
15058
      taosArrayDestroyP(pInfo->pDisks[i], NULL);
42✔
15059
    }
15060
    if (pInfo->pFile) {
14✔
15061
      (void)taosUnLockFile(pInfo->pFile);
4✔
15062
      (void)taosCloseFile(&pInfo->pFile);
4✔
15063
    }
15064
  }
15065
}
14✔
15066

15067
int32_t tSerializeSMountVnodeReq(void *buf, int32_t *cBufLen, int32_t *tBufLen, SMountVnodeReq *pReq) {
16✔
15068
  SEncoder encoder = {0};
16✔
15069
  int32_t  code = 0, lino = 0;
16✔
15070
  int32_t  clen = 0, tlen = 0;
16✔
15071

15072
  tEncoderInit(&encoder, buf, *tBufLen);
16✔
15073
  TAOS_CHECK_EXIT(tStartEncode(&encoder));
16!
15074
  TAOS_CHECK_EXIT(tEncodeI32(&encoder, *cBufLen));  // createReq
32!
15075
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->mountName));
32!
15076
  TAOS_CHECK_EXIT(tEncodeCStr(&encoder, pReq->mountPath));
32!
15077
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->mountId));
32!
15078
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->diskPrimary));
32!
15079
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, pReq->mountVgId));
32!
15080
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->committed));
32!
15081
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->commitID));
32!
15082
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->commitTerm));
32!
15083
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->numOfSTables));
32!
15084
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->numOfCTables));
32!
15085
  TAOS_CHECK_EXIT(tEncodeI64v(&encoder, pReq->numOfNTables));
32!
15086
  TAOS_CHECK_EXIT(tEncodeI32v(&encoder, 10));  // nReserved
16!
15087
  for (int32_t i = 0; i < 10; ++i) {           // reserved fields
176✔
15088
    TAOS_CHECK_EXIT(tEncodeI64v(&encoder, 0));
160!
15089
  }
15090
  tEndEncode(&encoder);
16✔
15091

15092
  if (buf == NULL) {
16✔
15093
    clen = tSerializeSCreateVnodeReq(NULL, 0, &pReq->createReq);
8✔
15094
  } else {
15095
    clen = tSerializeSCreateVnodeReq(POINTER_SHIFT(buf, encoder.pos), *cBufLen, &pReq->createReq);
8✔
15096
  }
15097

15098
_exit:
16✔
15099
  if (code || clen < 0) {
16!
15100
    if (clen < 0) code = clen;
×
15101
  } else {
15102
    *cBufLen = clen;
16✔
15103
    *tBufLen = encoder.pos + clen;
16✔
15104
  }
15105
  tEncoderClear(&encoder);
16✔
15106
  return code;
16✔
15107
}
15108

15109
int32_t tDeserializeSMountVnodeReq(void *buf, int32_t bufLen, SMountVnodeReq *pReq) {
8✔
15110
  SDecoder         decoder = {0};
8✔
15111
  int32_t          code = 0, lino = 0;
8✔
15112
  int32_t          cBufLen = 0, tBufLen = 0, nReserved = 0;
8✔
15113
  int64_t          padding;
15114
  SCreateVnodeReq *pCreateReq = &pReq->createReq;
8✔
15115

15116
  tDecoderInit(&decoder, buf, bufLen);
8✔
15117

15118
  TAOS_CHECK_EXIT(tStartDecode(&decoder));
8!
15119
  TAOS_CHECK_EXIT(tDecodeI32(&decoder, &cBufLen));  // createReq
8!
15120
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->mountName));
8!
15121
  TAOS_CHECK_EXIT(tDecodeCStrTo(&decoder, pReq->mountPath));
8!
15122
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->mountId));
16!
15123
  TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->diskPrimary));
16!
15124
  TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &pReq->mountVgId));
16!
15125
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->committed));
16!
15126
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->commitID));
16!
15127
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->commitTerm));
16!
15128
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->numOfSTables));
16!
15129
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->numOfCTables));
16!
15130
  TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &pReq->numOfNTables));
16!
15131
  // reserved fields
15132
  TAOS_CHECK_EXIT(tDecodeI32v(&decoder, &nReserved));
8!
15133
  for(int32_t i = 0; i < nReserved; ++i) {
87✔
15134
    TAOS_CHECK_EXIT(tDecodeI64v(&decoder, &padding));
79!
15135
  }
15136
  tEndDecode(&decoder);
8✔
15137
  TAOS_CHECK_EXIT(tDeserializeSCreateVnodeReq(POINTER_SHIFT(buf, decoder.pos), cBufLen, pCreateReq));
8!
15138
_exit:
8✔
15139
  tDecoderClear(&decoder);
8✔
15140
  return code;
8✔
15141
}
15142

15143
int32_t tFreeSMountVnodeReq(SMountVnodeReq *pReq) {
8✔
15144
  (void)tFreeSCreateVnodeReq(&pReq->createReq);
8✔
15145
  return 0;
8✔
15146
}
15147
#endif // USE_MOUNT
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