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

taosdata / TDengine / #3621

22 Feb 2025 11:44AM UTC coverage: 2.037% (-61.5%) from 63.573%
#3621

push

travis-ci

web-flow
Merge pull request #29874 from taosdata/merge/mainto3.0

merge: from main to 3.0 branch

4357 of 287032 branches covered (1.52%)

Branch coverage included in aggregate %.

0 of 174 new or added lines in 18 files covered. (0.0%)

213359 existing lines in 469 files now uncovered.

7260 of 283369 relevant lines covered (2.56%)

23737.72 hits per line

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

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

16
#include "catalog.h"
17
#include "clientInt.h"
18
#include "clientLog.h"
19
#include "clientMonitor.h"
20
#include "cmdnodes.h"
21
#include "command.h"
22
#include "os.h"
23
#include "query.h"
24
#include "systable.h"
25
#include "tdatablock.h"
26
#include "tdef.h"
27
#include "tglobal.h"
28
#include "tname.h"
29
#include "tversion.h"
30

31
extern SClientHbMgr clientHbMgr;
32

33
static void setErrno(SRequestObj* pRequest, int32_t code) {
11✔
34
  pRequest->code = code;
11✔
35
  terrno = code;
11✔
36
}
11✔
37

38
int32_t genericRspCallback(void* param, SDataBuf* pMsg, int32_t code) {
8✔
39
  SRequestObj* pRequest = param;
8✔
40
  setErrno(pRequest, code);
8✔
41

42
  if (NEED_CLIENT_RM_TBLMETA_REQ(pRequest->type)) {
8!
UNCOV
43
    if (removeMeta(pRequest->pTscObj, pRequest->targetTableList, IS_VIEW_REQUEST(pRequest->type)) != 0) {
×
44
      tscError("failed to remove meta data for table");
×
45
    }
46
  }
47

48
  taosMemoryFree(pMsg->pEpSet);
8!
49
  taosMemoryFree(pMsg->pData);
8!
50
  if (pRequest->body.queryFp != NULL) {
8!
51
    doRequestCallback(pRequest, code);
8✔
52
  } else {
UNCOV
53
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
54
      tscError("failed to post semaphore");
×
55
    }
56
  }
57
  return code;
8✔
58
}
59

60
int32_t processConnectRsp(void* param, SDataBuf* pMsg, int32_t code) {
85✔
61
  SRequestObj* pRequest = acquireRequest(*(int64_t*)param);
85✔
62
  if (NULL == pRequest) {
85!
63
    goto EXIT;
×
64
  }
65

66
  if (code != TSDB_CODE_SUCCESS) {
85✔
67
    goto End;
1✔
68
  }
69

70
  STscObj* pTscObj = pRequest->pTscObj;
84✔
71

72
  if (NULL == pTscObj->pAppInfo) {
84!
73
    code = TSDB_CODE_TSC_DISCONNECTED;
×
74
    goto End;
×
75
  }
76

77
  SConnectRsp connectRsp = {0};
84✔
78
  if (tDeserializeSConnectRsp(pMsg->pData, pMsg->len, &connectRsp) != 0) {
84!
79
    code = TSDB_CODE_TSC_INVALID_VERSION;
×
80
    goto End;
×
81
  }
82

83
  if ((code = taosCheckVersionCompatibleFromStr(td_version, connectRsp.sVer, 3)) != 0) {
84!
84
    tscError("version not compatible. client version: %s, server version: %s", td_version, connectRsp.sVer);
×
85
    goto End;
×
86
  }
87

88
  int32_t now = taosGetTimestampSec();
84✔
89
  int32_t delta = abs(now - connectRsp.svrTimestamp);
84✔
90
  if (delta > timestampDeltaLimit) {
84!
91
    code = TSDB_CODE_TIME_UNSYNCED;
×
92
    tscError("time diff:%ds is too big", delta);
×
93
    goto End;
×
94
  }
95

96
  if (connectRsp.epSet.numOfEps == 0) {
84!
97
    code = TSDB_CODE_APP_ERROR;
×
98
    goto End;
×
99
  }
100

101
  int updateEpSet = 1;
84✔
102
  if (connectRsp.dnodeNum == 1) {
84✔
103
    SEpSet srcEpSet = getEpSet_s(&pTscObj->pAppInfo->mgmtEp);
9✔
104
    SEpSet dstEpSet = connectRsp.epSet;
9✔
105
    if (srcEpSet.numOfEps == 1) {
9!
106
      if (rpcSetDefaultAddr(pTscObj->pAppInfo->pTransporter, srcEpSet.eps[srcEpSet.inUse].fqdn,
9!
107
                            dstEpSet.eps[dstEpSet.inUse].fqdn) != 0) {
9✔
108
        tscError("failed to set default addr for rpc");
×
109
      }
110
      updateEpSet = 0;
9✔
111
    }
112
  }
113
  if (updateEpSet == 1 && !isEpsetEqual(&pTscObj->pAppInfo->mgmtEp.epSet, &connectRsp.epSet)) {
84✔
114
    SEpSet corEpSet = getEpSet_s(&pTscObj->pAppInfo->mgmtEp);
21✔
115

116
    SEpSet* pOrig = &corEpSet;
21✔
117
    SEp*    pOrigEp = &pOrig->eps[pOrig->inUse];
21✔
118
    SEp*    pNewEp = &connectRsp.epSet.eps[connectRsp.epSet.inUse];
21✔
119
    tscDebug("mnode epset updated from %d/%d=>%s:%d to %d/%d=>%s:%d in connRsp", pOrig->inUse, pOrig->numOfEps,
21!
120
             pOrigEp->fqdn, pOrigEp->port, connectRsp.epSet.inUse, connectRsp.epSet.numOfEps, pNewEp->fqdn,
121
             pNewEp->port);
122
    updateEpSet_s(&pTscObj->pAppInfo->mgmtEp, &connectRsp.epSet);
21✔
123
  }
124

125
  for (int32_t i = 0; i < connectRsp.epSet.numOfEps; ++i) {
168✔
126
    tscDebug("0x%" PRIx64 " epSet.fqdn[%d]:%s port:%d, connObj:0x%" PRIx64, pRequest->requestId, i,
84!
127
             connectRsp.epSet.eps[i].fqdn, connectRsp.epSet.eps[i].port, pTscObj->id);
128
  }
129

130
  pTscObj->sysInfo = connectRsp.sysInfo;
84✔
131
  pTscObj->connId = connectRsp.connId;
84✔
132
  pTscObj->acctId = connectRsp.acctId;
84✔
133
  tstrncpy(pTscObj->sVer, connectRsp.sVer, tListLen(pTscObj->sVer));
84✔
134
  tstrncpy(pTscObj->sDetailVer, connectRsp.sDetailVer, tListLen(pTscObj->sDetailVer));
84✔
135

136
  // update the appInstInfo
137
  pTscObj->pAppInfo->clusterId = connectRsp.clusterId;
84✔
138
  pTscObj->pAppInfo->serverCfg.monitorParas = connectRsp.monitorParas;
84✔
139
  pTscObj->pAppInfo->serverCfg.enableAuditDelete = connectRsp.enableAuditDelete;
84✔
140
  tscDebug("[monitor] paras from connect rsp, clusterId:%" PRIx64 " monitorParas threshold:%d scope:%d",
84!
141
           connectRsp.clusterId, connectRsp.monitorParas.tsSlowLogThreshold, connectRsp.monitorParas.tsSlowLogScope);
142
  lastClusterId = connectRsp.clusterId;
84✔
143

144
  pTscObj->connType = connectRsp.connType;
84✔
145
  pTscObj->passInfo.ver = connectRsp.passVer;
84✔
146
  pTscObj->authVer = connectRsp.authVer;
84✔
147
  pTscObj->whiteListInfo.ver = connectRsp.whiteListVer;
84✔
148

149
  if (taosHashGet(appInfo.pInstMapByClusterId, &connectRsp.clusterId, LONG_BYTES) == NULL) {
84✔
150
    if (taosHashPut(appInfo.pInstMapByClusterId, &connectRsp.clusterId, LONG_BYTES, &pTscObj->pAppInfo,
4!
151
                    POINTER_BYTES) != 0) {
152
      tscError("failed to put appInfo into appInfo.pInstMapByClusterId");
×
153
    } else {
154
      MonitorSlowLogData data = {0};
4✔
155
      data.clusterId = pTscObj->pAppInfo->clusterId;
4✔
156
      data.type = SLOW_LOG_READ_BEGINNIG;
4✔
157
      (void)monitorPutData2MonitorQueue(data);  // ignore
4✔
158
      monitorClientSlowQueryInit(connectRsp.clusterId);
4✔
159
      monitorClientSQLReqInit(connectRsp.clusterId);
4✔
160
    }
161
  }
162

163
  (void)taosThreadMutexLock(&clientHbMgr.lock);
84✔
164
  SAppHbMgr* pAppHbMgr = taosArrayGetP(clientHbMgr.appHbMgrs, pTscObj->appHbMgrIdx);
84✔
165
  if (pAppHbMgr) {
84!
166
    if (hbRegisterConn(pAppHbMgr, pTscObj->id, connectRsp.clusterId, connectRsp.connType) != 0) {
84!
167
      tscError("0x%" PRIx64 " failed to register conn to hbMgr", pRequest->requestId);
×
168
    }
169
  } else {
170
    (void)taosThreadMutexUnlock(&clientHbMgr.lock);
×
171
    code = TSDB_CODE_TSC_DISCONNECTED;
×
172
    goto End;
×
173
  }
174
  (void)taosThreadMutexUnlock(&clientHbMgr.lock);
84✔
175

176
  tscDebug("0x%" PRIx64 " clusterId:%" PRId64 ", totalConn:%" PRId64, pRequest->requestId, connectRsp.clusterId,
84!
177
           pTscObj->pAppInfo->numOfConns);
178

179
End:
84✔
180
  if (code != 0) {
85✔
181
    setErrno(pRequest, code);
1✔
182
  }
183
  if (tsem_post(&pRequest->body.rspSem) != 0) {
85!
184
    tscError("failed to post semaphore");
×
185
  }
186

187
  if (pRequest) {
85!
188
    (void)releaseRequest(pRequest->self);
85✔
189
  }
190

191
EXIT:
×
192
  taosMemoryFree(param);
85!
193
  taosMemoryFree(pMsg->pEpSet);
85!
194
  taosMemoryFree(pMsg->pData);
85!
195
  return code;
85✔
196
}
197

198
SMsgSendInfo* buildMsgInfoImpl(SRequestObj* pRequest) {
167✔
199
  SMsgSendInfo* pMsgSendInfo = taosMemoryCalloc(1, sizeof(SMsgSendInfo));
167!
200
  if (pMsgSendInfo == NULL) return pMsgSendInfo;
167!
201
  pMsgSendInfo->requestObjRefId = pRequest->self;
167✔
202
  pMsgSendInfo->requestId = pRequest->requestId;
167✔
203
  pMsgSendInfo->param = pRequest;
167✔
204
  pMsgSendInfo->msgType = pRequest->type;
167✔
205
  pMsgSendInfo->target.type = TARGET_TYPE_MNODE;
167✔
206

207
  pMsgSendInfo->msgInfo = pRequest->body.requestMsg;
167✔
208
  pMsgSendInfo->fp = getMsgRspHandle(pRequest->type);
167✔
209
  return pMsgSendInfo;
167✔
210
}
211

212
int32_t processCreateDbRsp(void* param, SDataBuf* pMsg, int32_t code) {
42✔
213
  // todo rsp with the vnode id list
214
  SRequestObj* pRequest = param;
42✔
215
  taosMemoryFree(pMsg->pData);
42!
216
  taosMemoryFree(pMsg->pEpSet);
42!
217
  if (code != TSDB_CODE_SUCCESS) {
42✔
218
    setErrno(pRequest, code);
1✔
219
  } else {
220
    struct SCatalog* pCatalog = NULL;
41✔
221
    code = catalogGetHandle(pRequest->pTscObj->pAppInfo->clusterId, &pCatalog);
41✔
222
    if (TSDB_CODE_SUCCESS == code) {
41!
223
      STscObj* pTscObj = pRequest->pTscObj;
41✔
224

225
      SRequestConnInfo conn = {.pTrans = pTscObj->pAppInfo->pTransporter,
41✔
226
                               .requestId = pRequest->requestId,
41✔
227
                               .requestObjRefId = pRequest->self,
41✔
228
                               .mgmtEps = getEpSet_s(&pTscObj->pAppInfo->mgmtEp)};
41✔
229
      char             dbFName[TSDB_DB_FNAME_LEN];
230
      (void)snprintf(dbFName, sizeof(dbFName) - 1, "%d.%s", pTscObj->acctId, TSDB_INFORMATION_SCHEMA_DB);
41✔
231
      if (catalogRefreshDBVgInfo(pCatalog, &conn, dbFName) != 0) {
41!
232
        tscError("0x%" PRIx64 " failed to refresh db vg info", pRequest->requestId);
×
233
      }
234
      (void)snprintf(dbFName, sizeof(dbFName) - 1, "%d.%s", pTscObj->acctId, TSDB_PERFORMANCE_SCHEMA_DB);
41✔
235
      if (catalogRefreshDBVgInfo(pCatalog, &conn, dbFName) != 0) {
41!
236
        tscError("0x%" PRIx64 " failed to refresh db vg info", pRequest->requestId);
×
237
      }
238
    }
239
  }
240

241
  if (pRequest->body.queryFp) {
42!
242
    doRequestCallback(pRequest, code);
42✔
243
  } else {
244
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
245
      tscError("failed to post semaphore");
×
246
    }
247
  }
248
  return code;
42✔
249
}
250

251
int32_t processUseDbRsp(void* param, SDataBuf* pMsg, int32_t code) {
28✔
252
  SRequestObj* pRequest = param;
28✔
253
  if (TSDB_CODE_MND_DB_NOT_EXIST == code || TSDB_CODE_MND_DB_IN_CREATING == code ||
28!
254
      TSDB_CODE_MND_DB_IN_DROPPING == code) {
UNCOV
255
    SUseDbRsp usedbRsp = {0};
×
UNCOV
256
    if (tDeserializeSUseDbRsp(pMsg->pData, pMsg->len, &usedbRsp) != 0) {
×
UNCOV
257
      tscError("0x%" PRIx64 " deserialize SUseDbRsp failed", pRequest->requestId);
×
258
    }
UNCOV
259
    struct SCatalog* pCatalog = NULL;
×
260

UNCOV
261
    if (usedbRsp.vgVersion >= 0) {  // cached in local
×
UNCOV
262
      int64_t clusterId = pRequest->pTscObj->pAppInfo->clusterId;
×
UNCOV
263
      int32_t code1 = catalogGetHandle(clusterId, &pCatalog);
×
UNCOV
264
      if (code1 != TSDB_CODE_SUCCESS) {
×
265
        tscWarn("0x%" PRIx64 "catalogGetHandle failed, clusterId:%" PRIx64 ", error:%s", pRequest->requestId, clusterId,
×
266
                tstrerror(code1));
267
      } else {
UNCOV
268
        if (catalogRemoveDB(pCatalog, usedbRsp.db, usedbRsp.uid) != 0) {
×
269
          tscError("0x%" PRIx64 "catalogRemoveDB failed, db:%s, uid:%" PRId64, pRequest->requestId, usedbRsp.db,
×
270
                   usedbRsp.uid);
271
        }
272
      }
273
    }
UNCOV
274
    tFreeSUsedbRsp(&usedbRsp);
×
275
  }
276

277
  if (code != TSDB_CODE_SUCCESS) {
28!
UNCOV
278
    taosMemoryFree(pMsg->pData);
×
UNCOV
279
    taosMemoryFree(pMsg->pEpSet);
×
UNCOV
280
    setErrno(pRequest, code);
×
281

UNCOV
282
    if (pRequest->body.queryFp != NULL) {
×
UNCOV
283
      doRequestCallback(pRequest, pRequest->code);
×
284

285
    } else {
286
      if (tsem_post(&pRequest->body.rspSem) != 0) {
×
287
        tscError("failed to post semaphore");
×
288
      }
289
    }
290

UNCOV
291
    return code;
×
292
  }
293

294
  SUseDbRsp usedbRsp = {0};
28✔
295
  if (tDeserializeSUseDbRsp(pMsg->pData, pMsg->len, &usedbRsp) != 0) {
28!
296
    tscError("0x%" PRIx64 " deserialize SUseDbRsp failed", pRequest->requestId);
×
297
  }
298

299
  if (strlen(usedbRsp.db) == 0) {
28!
300
    taosMemoryFree(pMsg->pData);
×
301
    taosMemoryFree(pMsg->pEpSet);
×
302

303
    if (usedbRsp.errCode != 0) {
×
304
      return usedbRsp.errCode;
×
305
    } else {
306
      return TSDB_CODE_APP_ERROR;
×
307
    }
308
  }
309

310
  tscTrace("db:%s, usedbRsp received, numOfVgroups:%d", usedbRsp.db, usedbRsp.vgNum);
28!
311
  for (int32_t i = 0; i < usedbRsp.vgNum; ++i) {
54✔
312
    SVgroupInfo* pInfo = taosArrayGet(usedbRsp.pVgroupInfos, i);
26✔
313
    if (pInfo == NULL) {
26!
314
      continue;
×
315
    }
316
    tscTrace("vgId:%d, numOfEps:%d inUse:%d ", pInfo->vgId, pInfo->epSet.numOfEps, pInfo->epSet.inUse);
26!
317
    for (int32_t j = 0; j < pInfo->epSet.numOfEps; ++j) {
52✔
318
      tscTrace("vgId:%d, index:%d epset:%s:%u", pInfo->vgId, j, pInfo->epSet.eps[j].fqdn, pInfo->epSet.eps[j].port);
26!
319
    }
320
  }
321

322
  SName name = {0};
28✔
323
  if (tNameFromString(&name, usedbRsp.db, T_NAME_ACCT | T_NAME_DB) != TSDB_CODE_SUCCESS) {
28!
324
    tscError("0x%" PRIx64 " failed to parse db name:%s", pRequest->requestId, usedbRsp.db);
×
325
  }
326

327
  SUseDbOutput output = {0};
28✔
328
  code = queryBuildUseDbOutput(&output, &usedbRsp);
28✔
329
  if (code != 0) {
28!
330
    terrno = code;
×
331
    if (output.dbVgroup) taosHashCleanup(output.dbVgroup->vgHash);
×
332

333
    tscError("0x%" PRIx64 " failed to build use db output since %s", pRequest->requestId, terrstr());
×
334
  } else if (output.dbVgroup && output.dbVgroup->vgHash) {
28!
335
    struct SCatalog* pCatalog = NULL;
13✔
336

337
    int32_t code1 = catalogGetHandle(pRequest->pTscObj->pAppInfo->clusterId, &pCatalog);
13✔
338
    if (code1 != TSDB_CODE_SUCCESS) {
13!
339
      tscWarn("catalogGetHandle failed, clusterId:%" PRIx64 ", error:%s", pRequest->pTscObj->pAppInfo->clusterId,
×
340
              tstrerror(code1));
341
    } else {
342
      if (catalogUpdateDBVgInfo(pCatalog, output.db, output.dbId, output.dbVgroup) != 0) {
13!
343
        tscError("0x%" PRIx64 " failed to update db vg info, db:%s, dbId:%" PRId64, pRequest->requestId, output.db,
×
344
                 output.dbId);
345
      }
346
      output.dbVgroup = NULL;
13✔
347
    }
348
  }
349

350
  taosMemoryFreeClear(output.dbVgroup);
28!
351
  tFreeSUsedbRsp(&usedbRsp);
28✔
352

353
  char db[TSDB_DB_NAME_LEN] = {0};
28✔
354
  if (tNameGetDbName(&name, db) != TSDB_CODE_SUCCESS) {
28!
355
    tscError("0x%" PRIx64 " failed to get db name since %s", pRequest->requestId, tstrerror(code));
×
356
  }
357

358
  setConnectionDB(pRequest->pTscObj, db);
28✔
359

360
  taosMemoryFree(pMsg->pData);
28!
361
  taosMemoryFree(pMsg->pEpSet);
28!
362

363
  if (pRequest->body.queryFp != NULL) {
28!
364
    doRequestCallback(pRequest, pRequest->code);
28✔
365
  } else {
366
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
367
      tscError("failed to post semaphore");
×
368
    }
369
  }
370
  return 0;
28✔
371
}
372

373
int32_t processCreateSTableRsp(void* param, SDataBuf* pMsg, int32_t code) {
33✔
374
  if (pMsg == NULL) {
33!
375
    return TSDB_CODE_TSC_INVALID_INPUT;
×
376
  }
377
  if (param == NULL) {
33!
378
    taosMemoryFree(pMsg->pEpSet);
×
379
    taosMemoryFree(pMsg->pData);
×
380
    return TSDB_CODE_TSC_INVALID_INPUT;
×
381
  }
382

383
  SRequestObj* pRequest = param;
33✔
384

385
  if (code != TSDB_CODE_SUCCESS) {
33!
UNCOV
386
    setErrno(pRequest, code);
×
387
  } else {
388
    SMCreateStbRsp createRsp = {0};
33✔
389
    SDecoder       coder = {0};
33✔
390
    tDecoderInit(&coder, pMsg->pData, pMsg->len);
33✔
391
    if (pMsg->len > 0) {
33✔
392
      code = tDecodeSMCreateStbRsp(&coder, &createRsp);  // pMsg->len == 0
31✔
393
      if (code != TSDB_CODE_SUCCESS) {
31!
394
        setErrno(pRequest, code);
×
395
      }
396
    }
397
    tDecoderClear(&coder);
33✔
398

399
    pRequest->body.resInfo.execRes.msgType = TDMT_MND_CREATE_STB;
33✔
400
    pRequest->body.resInfo.execRes.res = createRsp.pMeta;
33✔
401
  }
402

403
  taosMemoryFree(pMsg->pEpSet);
33!
404
  taosMemoryFree(pMsg->pData);
33!
405

406
  if (pRequest->body.queryFp != NULL) {
33!
407
    SExecResult* pRes = &pRequest->body.resInfo.execRes;
33✔
408

409
    if (code == TSDB_CODE_SUCCESS) {
33!
410
      SCatalog* pCatalog = NULL;
33✔
411
      int32_t   ret = catalogGetHandle(pRequest->pTscObj->pAppInfo->clusterId, &pCatalog);
33✔
412
      if (pRes->res != NULL) {
33✔
413
        ret = handleCreateTbExecRes(pRes->res, pCatalog);
31✔
414
      }
415

416
      if (ret != TSDB_CODE_SUCCESS) {
33!
417
        code = ret;
×
418
      }
419
    }
420

421
    doRequestCallback(pRequest, code);
33✔
422
  } else {
UNCOV
423
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
424
      tscError("failed to post semaphore");
×
425
    }
426
  }
427
  return code;
33✔
428
}
429

430
int32_t processDropDbRsp(void* param, SDataBuf* pMsg, int32_t code) {
56✔
431
  SRequestObj* pRequest = param;
56✔
432
  if (code != TSDB_CODE_SUCCESS) {
56✔
433
    setErrno(pRequest, code);
1✔
434
  } else {
435
    SDropDbRsp dropdbRsp = {0};
55✔
436
    if (tDeserializeSDropDbRsp(pMsg->pData, pMsg->len, &dropdbRsp) != 0) {
55!
437
      tscError("0x%" PRIx64 " deserialize SDropDbRsp failed", pRequest->requestId);
×
438
    }
439
    struct SCatalog* pCatalog = NULL;
55✔
440
    code = catalogGetHandle(pRequest->pTscObj->pAppInfo->clusterId, &pCatalog);
55✔
441
    if (TSDB_CODE_SUCCESS == code) {
55!
442
      if (catalogRemoveDB(pCatalog, dropdbRsp.db, dropdbRsp.uid) != 0) {
55!
443
        tscError("0x%" PRIx64 " failed to remove db:%s", pRequest->requestId, dropdbRsp.db);
×
444
      }
445
      STscObj* pTscObj = pRequest->pTscObj;
55✔
446

447
      SRequestConnInfo conn = {.pTrans = pTscObj->pAppInfo->pTransporter,
55✔
448
                               .requestId = pRequest->requestId,
55✔
449
                               .requestObjRefId = pRequest->self,
55✔
450
                               .mgmtEps = getEpSet_s(&pTscObj->pAppInfo->mgmtEp)};
55✔
451
      char             dbFName[TSDB_DB_FNAME_LEN] = {0};
55✔
452
      (void)snprintf(dbFName, sizeof(dbFName) - 1, "%d.%s", pTscObj->acctId, TSDB_INFORMATION_SCHEMA_DB);
55✔
453
      if (catalogRefreshDBVgInfo(pCatalog, &conn, dbFName) != TSDB_CODE_SUCCESS) {
55!
454
        tscError("0x%" PRIx64 " failed to refresh db vg info, db:%s", pRequest->requestId, dbFName);
×
455
      }
456
      (void)snprintf(dbFName, sizeof(dbFName) - 1, "%d.%s", pTscObj->acctId, TSDB_PERFORMANCE_SCHEMA_DB);
55✔
457
      if (catalogRefreshDBVgInfo(pCatalog, &conn, dbFName) != 0) {
55!
458
        tscError("0x%" PRIx64 " failed to refresh db vg info, db:%s", pRequest->requestId, dbFName);
×
459
      }
460
    }
461
  }
462

463
  taosMemoryFree(pMsg->pData);
56!
464
  taosMemoryFree(pMsg->pEpSet);
56!
465

466
  if (pRequest->body.queryFp != NULL) {
56!
467
    doRequestCallback(pRequest, code);
56✔
468
  } else {
469
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
470
      tscError("failed to post semaphore");
×
471
    }
472
  }
473
  return code;
56✔
474
}
475

UNCOV
476
int32_t processAlterStbRsp(void* param, SDataBuf* pMsg, int32_t code) {
×
UNCOV
477
  SRequestObj* pRequest = param;
×
UNCOV
478
  if (code != TSDB_CODE_SUCCESS) {
×
UNCOV
479
    setErrno(pRequest, code);
×
480
  } else {
UNCOV
481
    SMAlterStbRsp alterRsp = {0};
×
UNCOV
482
    SDecoder      coder = {0};
×
UNCOV
483
    tDecoderInit(&coder, pMsg->pData, pMsg->len);
×
UNCOV
484
    if (pMsg->len > 0) {
×
UNCOV
485
      code = tDecodeSMAlterStbRsp(&coder, &alterRsp);  // pMsg->len == 0
×
UNCOV
486
      if (code != TSDB_CODE_SUCCESS) {
×
487
        setErrno(pRequest, code);
×
488
      }
489
    }
UNCOV
490
    tDecoderClear(&coder);
×
491

UNCOV
492
    pRequest->body.resInfo.execRes.msgType = TDMT_MND_ALTER_STB;
×
UNCOV
493
    pRequest->body.resInfo.execRes.res = alterRsp.pMeta;
×
494
  }
495

UNCOV
496
  taosMemoryFree(pMsg->pData);
×
UNCOV
497
  taosMemoryFree(pMsg->pEpSet);
×
498

UNCOV
499
  if (pRequest->body.queryFp != NULL) {
×
UNCOV
500
    SExecResult* pRes = &pRequest->body.resInfo.execRes;
×
501

UNCOV
502
    if (code == TSDB_CODE_SUCCESS) {
×
UNCOV
503
      SCatalog* pCatalog = NULL;
×
UNCOV
504
      int32_t   ret = catalogGetHandle(pRequest->pTscObj->pAppInfo->clusterId, &pCatalog);
×
UNCOV
505
      if (pRes->res != NULL) {
×
UNCOV
506
        ret = handleAlterTbExecRes(pRes->res, pCatalog);
×
507
      }
508

UNCOV
509
      if (ret != TSDB_CODE_SUCCESS) {
×
510
        code = ret;
×
511
      }
512
    }
513

UNCOV
514
    doRequestCallback(pRequest, code);
×
515
  } else {
516
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
517
      tscError("failed to post semaphore");
×
518
    }
519
  }
UNCOV
520
  return code;
×
521
}
522

UNCOV
523
static int32_t buildShowVariablesBlock(SArray* pVars, SSDataBlock** block) {
×
UNCOV
524
  int32_t      code = 0;
×
UNCOV
525
  int32_t      line = 0;
×
UNCOV
526
  SSDataBlock* pBlock = taosMemoryCalloc(1, sizeof(SSDataBlock));
×
UNCOV
527
  TSDB_CHECK_NULL(pBlock, code, line, END, terrno);
×
UNCOV
528
  pBlock->info.hasVarCol = true;
×
529

UNCOV
530
  pBlock->pDataBlock = taosArrayInit(SHOW_VARIABLES_RESULT_COLS, sizeof(SColumnInfoData));
×
UNCOV
531
  TSDB_CHECK_NULL(pBlock->pDataBlock, code, line, END, terrno);
×
UNCOV
532
  SColumnInfoData infoData = {0};
×
UNCOV
533
  infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
×
UNCOV
534
  infoData.info.bytes = SHOW_VARIABLES_RESULT_FIELD1_LEN;
×
UNCOV
535
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
536

UNCOV
537
  infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
×
UNCOV
538
  infoData.info.bytes = SHOW_VARIABLES_RESULT_FIELD2_LEN;
×
UNCOV
539
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
540

UNCOV
541
  infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
×
UNCOV
542
  infoData.info.bytes = SHOW_VARIABLES_RESULT_FIELD3_LEN;
×
UNCOV
543
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
544

UNCOV
545
  infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
×
UNCOV
546
  infoData.info.bytes = SHOW_VARIABLES_RESULT_FIELD4_LEN;
×
UNCOV
547
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
548

UNCOV
549
  infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
×
UNCOV
550
  infoData.info.bytes = SHOW_VARIABLES_RESULT_FIELD5_LEN;
×
UNCOV
551
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
552

UNCOV
553
  int32_t numOfCfg = taosArrayGetSize(pVars);
×
UNCOV
554
  code = blockDataEnsureCapacity(pBlock, numOfCfg);
×
UNCOV
555
  TSDB_CHECK_CODE(code, line, END);
×
556

UNCOV
557
  for (int32_t i = 0, c = 0; i < numOfCfg; ++i, c = 0) {
×
UNCOV
558
    SVariablesInfo* pInfo = taosArrayGet(pVars, i);
×
UNCOV
559
    TSDB_CHECK_NULL(pInfo, code, line, END, terrno);
×
560

UNCOV
561
    char name[TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE] = {0};
×
UNCOV
562
    STR_WITH_MAXSIZE_TO_VARSTR(name, pInfo->name, TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE);
×
UNCOV
563
    SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
×
UNCOV
564
    TSDB_CHECK_NULL(pColInfo, code, line, END, terrno);
×
UNCOV
565
    code = colDataSetVal(pColInfo, i, name, false);
×
UNCOV
566
    TSDB_CHECK_CODE(code, line, END);
×
567

UNCOV
568
    char value[TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE] = {0};
×
UNCOV
569
    STR_WITH_MAXSIZE_TO_VARSTR(value, pInfo->value, TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE);
×
UNCOV
570
    pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
×
UNCOV
571
    TSDB_CHECK_NULL(pColInfo, code, line, END, terrno);
×
UNCOV
572
    code = colDataSetVal(pColInfo, i, value, false);
×
UNCOV
573
    TSDB_CHECK_CODE(code, line, END);
×
574

UNCOV
575
    char scope[TSDB_CONFIG_SCOPE_LEN + VARSTR_HEADER_SIZE] = {0};
×
UNCOV
576
    STR_WITH_MAXSIZE_TO_VARSTR(scope, pInfo->scope, TSDB_CONFIG_SCOPE_LEN + VARSTR_HEADER_SIZE);
×
UNCOV
577
    pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
×
UNCOV
578
    TSDB_CHECK_NULL(pColInfo, code, line, END, terrno);
×
UNCOV
579
    code = colDataSetVal(pColInfo, i, scope, false);
×
UNCOV
580
    TSDB_CHECK_CODE(code, line, END);
×
581

UNCOV
582
    char category[TSDB_CONFIG_CATEGORY_LEN + VARSTR_HEADER_SIZE] = {0};
×
UNCOV
583
    STR_WITH_MAXSIZE_TO_VARSTR(category, pInfo->category, TSDB_CONFIG_CATEGORY_LEN + VARSTR_HEADER_SIZE);
×
UNCOV
584
    pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
×
UNCOV
585
    TSDB_CHECK_NULL(pColInfo, code, line, END, terrno);
×
UNCOV
586
    code = colDataSetVal(pColInfo, i, category, false);
×
UNCOV
587
    TSDB_CHECK_CODE(code, line, END);
×
588

UNCOV
589
    char info[TSDB_CONFIG_INFO_LEN + VARSTR_HEADER_SIZE] = {0};
×
UNCOV
590
    STR_WITH_MAXSIZE_TO_VARSTR(info, pInfo->info, TSDB_CONFIG_INFO_LEN + VARSTR_HEADER_SIZE);
×
UNCOV
591
    pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
×
UNCOV
592
    TSDB_CHECK_NULL(pColInfo, code, line, END, terrno);
×
UNCOV
593
    code = colDataSetVal(pColInfo, i, info, false);
×
UNCOV
594
    TSDB_CHECK_CODE(code, line, END);
×
595
  }
596

UNCOV
597
  pBlock->info.rows = numOfCfg;
×
598

UNCOV
599
  *block = pBlock;
×
UNCOV
600
  return code;
×
601

602
END:
×
603
  taosArrayDestroy(pBlock->pDataBlock);
×
604
  taosMemoryFree(pBlock);
×
605
  return code;
×
606
}
607

UNCOV
608
static int32_t buildShowVariablesRsp(SArray* pVars, SRetrieveTableRsp** pRsp) {
×
UNCOV
609
  SSDataBlock* pBlock = NULL;
×
UNCOV
610
  int32_t      code = buildShowVariablesBlock(pVars, &pBlock);
×
UNCOV
611
  if (code) {
×
612
    return code;
×
613
  }
614

UNCOV
615
  size_t dataEncodeBufSize = blockGetEncodeSize(pBlock);
×
UNCOV
616
  size_t rspSize = sizeof(SRetrieveTableRsp) + dataEncodeBufSize + PAYLOAD_PREFIX_LEN;
×
UNCOV
617
  *pRsp = taosMemoryCalloc(1, rspSize);
×
UNCOV
618
  if (NULL == *pRsp) {
×
619
    code = terrno;
×
620
    goto _exit;
×
621
  }
622

UNCOV
623
  (*pRsp)->useconds = 0;
×
UNCOV
624
  (*pRsp)->completed = 1;
×
UNCOV
625
  (*pRsp)->precision = 0;
×
UNCOV
626
  (*pRsp)->compressed = 0;
×
627

UNCOV
628
  (*pRsp)->numOfRows = htobe64((int64_t)pBlock->info.rows);
×
UNCOV
629
  (*pRsp)->numOfCols = htonl(SHOW_VARIABLES_RESULT_COLS);
×
630

UNCOV
631
  int32_t len = blockEncode(pBlock, (*pRsp)->data + PAYLOAD_PREFIX_LEN, dataEncodeBufSize, SHOW_VARIABLES_RESULT_COLS);
×
UNCOV
632
  if (len < 0) {
×
633
    uError("buildShowVariablesRsp error, len:%d", len);
×
634
    code = terrno;
×
635
    goto _exit;
×
636
  }
UNCOV
637
  blockDataDestroy(pBlock);
×
638

UNCOV
639
  SET_PAYLOAD_LEN((*pRsp)->data, len, len);
×
640

UNCOV
641
  int32_t payloadLen = len + PAYLOAD_PREFIX_LEN;
×
UNCOV
642
  (*pRsp)->payloadLen = htonl(payloadLen);
×
UNCOV
643
  (*pRsp)->compLen = htonl(payloadLen);
×
644

UNCOV
645
  if (payloadLen != rspSize - sizeof(SRetrieveTableRsp)) {
×
646
    uError("buildShowVariablesRsp error, len:%d != rspSize - sizeof(SRetrieveTableRsp):%" PRIu64, len,
×
647
           (uint64_t)(rspSize - sizeof(SRetrieveTableRsp)));
648
    code = TSDB_CODE_TSC_INVALID_INPUT;
×
649
    goto _exit;
×
650
  }
651

UNCOV
652
  return TSDB_CODE_SUCCESS;
×
653
_exit:
×
654
  if (*pRsp) {
×
655
    taosMemoryFree(*pRsp);
×
656
    *pRsp = NULL;
×
657
  }
658
  if (pBlock) {
×
659
    blockDataDestroy(pBlock);
×
660
    pBlock = NULL;
×
661
  }
662
  return code;
×
663
}
664

UNCOV
665
int32_t processShowVariablesRsp(void* param, SDataBuf* pMsg, int32_t code) {
×
UNCOV
666
  SRequestObj* pRequest = param;
×
UNCOV
667
  if (code != TSDB_CODE_SUCCESS) {
×
668
    setErrno(pRequest, code);
×
669
  } else {
UNCOV
670
    SShowVariablesRsp  rsp = {0};
×
UNCOV
671
    SRetrieveTableRsp* pRes = NULL;
×
UNCOV
672
    code = tDeserializeSShowVariablesRsp(pMsg->pData, pMsg->len, &rsp);
×
UNCOV
673
    if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
674
      code = buildShowVariablesRsp(rsp.variables, &pRes);
×
675
    }
UNCOV
676
    if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
677
      code = setQueryResultFromRsp(&pRequest->body.resInfo, pRes, false);
×
678
    }
679

UNCOV
680
    if (code != 0) {
×
681
      taosMemoryFree(pRes);
×
682
    }
UNCOV
683
    tFreeSShowVariablesRsp(&rsp);
×
684
  }
685

UNCOV
686
  taosMemoryFree(pMsg->pData);
×
UNCOV
687
  taosMemoryFree(pMsg->pEpSet);
×
688

UNCOV
689
  if (pRequest->body.queryFp != NULL) {
×
UNCOV
690
    doRequestCallback(pRequest, code);
×
691
  } else {
692
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
693
      tscError("failed to post semaphore");
×
694
    }
695
  }
UNCOV
696
  return code;
×
697
}
698

UNCOV
699
static int32_t buildCompactDbBlock(SCompactDbRsp* pRsp, SSDataBlock** block) {
×
UNCOV
700
  int32_t      code = 0;
×
UNCOV
701
  int32_t      line = 0;
×
UNCOV
702
  SSDataBlock* pBlock = taosMemoryCalloc(1, sizeof(SSDataBlock));
×
UNCOV
703
  TSDB_CHECK_NULL(pBlock, code, line, END, terrno);
×
UNCOV
704
  pBlock->info.hasVarCol = true;
×
705

UNCOV
706
  pBlock->pDataBlock = taosArrayInit(COMPACT_DB_RESULT_COLS, sizeof(SColumnInfoData));
×
UNCOV
707
  TSDB_CHECK_NULL(pBlock->pDataBlock, code, line, END, terrno);
×
UNCOV
708
  SColumnInfoData infoData = {0};
×
UNCOV
709
  infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
×
UNCOV
710
  infoData.info.bytes = COMPACT_DB_RESULT_FIELD1_LEN;
×
UNCOV
711
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
712

UNCOV
713
  infoData.info.type = TSDB_DATA_TYPE_INT;
×
UNCOV
714
  infoData.info.bytes = tDataTypes[TSDB_DATA_TYPE_INT].bytes;
×
UNCOV
715
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
716

UNCOV
717
  infoData.info.type = TSDB_DATA_TYPE_VARCHAR;
×
UNCOV
718
  infoData.info.bytes = COMPACT_DB_RESULT_FIELD3_LEN;
×
UNCOV
719
  TSDB_CHECK_NULL(taosArrayPush(pBlock->pDataBlock, &infoData), code, line, END, terrno);
×
720

UNCOV
721
  code = blockDataEnsureCapacity(pBlock, 1);
×
UNCOV
722
  TSDB_CHECK_CODE(code, line, END);
×
723

UNCOV
724
  SColumnInfoData* pResultCol = taosArrayGet(pBlock->pDataBlock, 0);
×
UNCOV
725
  TSDB_CHECK_NULL(pResultCol, code, line, END, terrno);
×
UNCOV
726
  SColumnInfoData* pIdCol = taosArrayGet(pBlock->pDataBlock, 1);
×
UNCOV
727
  TSDB_CHECK_NULL(pIdCol, code, line, END, terrno);
×
UNCOV
728
  SColumnInfoData* pReasonCol = taosArrayGet(pBlock->pDataBlock, 2);
×
UNCOV
729
  TSDB_CHECK_NULL(pReasonCol, code, line, END, terrno);
×
730

UNCOV
731
  char result[COMPACT_DB_RESULT_FIELD1_LEN] = {0};
×
UNCOV
732
  char reason[COMPACT_DB_RESULT_FIELD3_LEN] = {0};
×
UNCOV
733
  if (pRsp->bAccepted) {
×
UNCOV
734
    STR_TO_VARSTR(result, "accepted");
×
UNCOV
735
    code = colDataSetVal(pResultCol, 0, result, false);
×
UNCOV
736
    TSDB_CHECK_CODE(code, line, END);
×
UNCOV
737
    code = colDataSetVal(pIdCol, 0, (void*)&pRsp->compactId, false);
×
UNCOV
738
    TSDB_CHECK_CODE(code, line, END);
×
UNCOV
739
    STR_TO_VARSTR(reason, "success");
×
UNCOV
740
    code = colDataSetVal(pReasonCol, 0, reason, false);
×
UNCOV
741
    TSDB_CHECK_CODE(code, line, END);
×
742
  } else {
743
    STR_TO_VARSTR(result, "rejected");
×
744
    code = colDataSetVal(pResultCol, 0, result, false);
×
745
    TSDB_CHECK_CODE(code, line, END);
×
746
    colDataSetNULL(pIdCol, 0);
747
    STR_TO_VARSTR(reason, "compaction is ongoing");
×
748
    code = colDataSetVal(pReasonCol, 0, reason, false);
×
749
    TSDB_CHECK_CODE(code, line, END);
×
750
  }
UNCOV
751
  pBlock->info.rows = 1;
×
752

UNCOV
753
  *block = pBlock;
×
754

UNCOV
755
  return TSDB_CODE_SUCCESS;
×
756
END:
×
757
  taosMemoryFree(pBlock);
×
758
  taosArrayDestroy(pBlock->pDataBlock);
×
759
  return code;
×
760
}
761

UNCOV
762
static int32_t buildRetriveTableRspForCompactDb(SCompactDbRsp* pCompactDb, SRetrieveTableRsp** pRsp) {
×
UNCOV
763
  SSDataBlock* pBlock = NULL;
×
UNCOV
764
  int32_t      code = buildCompactDbBlock(pCompactDb, &pBlock);
×
UNCOV
765
  if (code) {
×
766
    return code;
×
767
  }
768

UNCOV
769
  size_t dataEncodeBufSize = blockGetEncodeSize(pBlock);
×
UNCOV
770
  size_t rspSize = sizeof(SRetrieveTableRsp) + dataEncodeBufSize + PAYLOAD_PREFIX_LEN;
×
UNCOV
771
  *pRsp = taosMemoryCalloc(1, rspSize);
×
UNCOV
772
  if (NULL == *pRsp) {
×
773
    code = terrno;
×
774
    goto _exit;
×
775
  }
776

UNCOV
777
  (*pRsp)->useconds = 0;
×
UNCOV
778
  (*pRsp)->completed = 1;
×
UNCOV
779
  (*pRsp)->precision = 0;
×
UNCOV
780
  (*pRsp)->compressed = 0;
×
UNCOV
781
  (*pRsp)->compLen = 0;
×
UNCOV
782
  (*pRsp)->payloadLen = 0;
×
UNCOV
783
  (*pRsp)->numOfRows = htobe64((int64_t)pBlock->info.rows);
×
UNCOV
784
  (*pRsp)->numOfCols = htonl(COMPACT_DB_RESULT_COLS);
×
785

UNCOV
786
  int32_t len = blockEncode(pBlock, (*pRsp)->data + PAYLOAD_PREFIX_LEN, dataEncodeBufSize, COMPACT_DB_RESULT_COLS);
×
UNCOV
787
  if (len < 0) {
×
788
    uError("buildRetriveTableRspForCompactDb error, len:%d", len);
×
789
    code = terrno;
×
790
    goto _exit;
×
791
  }
UNCOV
792
  blockDataDestroy(pBlock);
×
793

UNCOV
794
  SET_PAYLOAD_LEN((*pRsp)->data, len, len);
×
795

UNCOV
796
  int32_t payloadLen = len + PAYLOAD_PREFIX_LEN;
×
UNCOV
797
  (*pRsp)->payloadLen = htonl(payloadLen);
×
UNCOV
798
  (*pRsp)->compLen = htonl(payloadLen);
×
799

UNCOV
800
  if (payloadLen != rspSize - sizeof(SRetrieveTableRsp)) {
×
801
    uError("buildRetriveTableRspForCompactDb error, len:%d != rspSize - sizeof(SRetrieveTableRsp):%" PRIu64, len,
×
802
           (uint64_t)(rspSize - sizeof(SRetrieveTableRsp)));
803
    code = TSDB_CODE_TSC_INVALID_INPUT;
×
804
    goto _exit;
×
805
  }
806

UNCOV
807
  return TSDB_CODE_SUCCESS;
×
808
_exit:
×
809
  if (*pRsp) {
×
810
    taosMemoryFree(*pRsp);
×
811
    *pRsp = NULL;
×
812
  }
813
  if (pBlock) {
×
814
    blockDataDestroy(pBlock);
×
815
    pBlock = NULL;
×
816
  }
817
  return code;
×
818
}
819

UNCOV
820
int32_t processCompactDbRsp(void* param, SDataBuf* pMsg, int32_t code) {
×
UNCOV
821
  SRequestObj* pRequest = param;
×
UNCOV
822
  if (code != TSDB_CODE_SUCCESS) {
×
UNCOV
823
    setErrno(pRequest, code);
×
824
  } else {
UNCOV
825
    SCompactDbRsp      rsp = {0};
×
UNCOV
826
    SRetrieveTableRsp* pRes = NULL;
×
UNCOV
827
    code = tDeserializeSCompactDbRsp(pMsg->pData, pMsg->len, &rsp);
×
UNCOV
828
    if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
829
      code = buildRetriveTableRspForCompactDb(&rsp, &pRes);
×
830
    }
UNCOV
831
    if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
832
      code = setQueryResultFromRsp(&pRequest->body.resInfo, pRes, false);
×
833
    }
834

UNCOV
835
    if (code != 0) {
×
836
      taosMemoryFree(pRes);
×
837
    }
838
  }
839

UNCOV
840
  taosMemoryFree(pMsg->pData);
×
UNCOV
841
  taosMemoryFree(pMsg->pEpSet);
×
842

UNCOV
843
  if (pRequest->body.queryFp != NULL) {
×
UNCOV
844
    pRequest->body.queryFp(((SSyncQueryParam*)pRequest->body.interParam)->userParam, pRequest, code);
×
845
  } else {
846
    if (tsem_post(&pRequest->body.rspSem) != 0) {
×
847
      tscError("failed to post semaphore");
×
848
    }
849
  }
UNCOV
850
  return code;
×
851
}
852

853
__async_send_cb_fn_t getMsgRspHandle(int32_t msgType) {
252✔
854
  switch (msgType) {
252!
855
    case TDMT_MND_CONNECT:
85✔
856
      return processConnectRsp;
85✔
857
    case TDMT_MND_CREATE_DB:
42✔
858
      return processCreateDbRsp;
42✔
859
    case TDMT_MND_USE_DB:
28✔
860
      return processUseDbRsp;
28✔
861
    case TDMT_MND_CREATE_STB:
33✔
862
      return processCreateSTableRsp;
33✔
863
    case TDMT_MND_DROP_DB:
56✔
864
      return processDropDbRsp;
56✔
UNCOV
865
    case TDMT_MND_ALTER_STB:
×
UNCOV
866
      return processAlterStbRsp;
×
UNCOV
867
    case TDMT_MND_SHOW_VARIABLES:
×
UNCOV
868
      return processShowVariablesRsp;
×
UNCOV
869
    case TDMT_MND_COMPACT_DB:
×
UNCOV
870
      return processCompactDbRsp;
×
871
    default:
8✔
872
      return genericRspCallback;
8✔
873
  }
874
}
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