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

taosdata / TDengine / #3720

26 Mar 2025 06:20AM UTC coverage: 30.242% (-31.7%) from 61.936%
#3720

push

travis-ci

web-flow
feat(taosBenchmark): supports decimal data type (#30456)

* feat: taosBenchmark supports decimal data type

* build: decimal script not use pytest.sh

* fix: fix typo for decimal script

* test: insertBasic.py debug

71234 of 313946 branches covered (22.69%)

Branch coverage included in aggregate %.

38 of 423 new or added lines in 8 files covered. (8.98%)

120240 existing lines in 447 files now uncovered.

118188 of 312400 relevant lines covered (37.83%)

1450220.33 hits per line

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

0.0
/source/dnode/mnode/impl/src/mndDump.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 "mndDb.h"
18
#include "mndInt.h"
19
#include "mndShow.h"
20
#include "mndStb.h"
21
#include "sdb.h"
22
#include "tconfig.h"
23
#include "tjson.h"
24
#include "ttypes.h"
25

26
#pragma GCC diagnostic push
27
#pragma GCC diagnostic ignored "-Wunused-result"
28

UNCOV
29
void reportStartup(const char *name, const char *desc) {}
×
30
void sendRsp(SRpcMsg *pMsg) { rpcFreeCont(pMsg->pCont); }
×
31

32
int32_t sendReq(const SEpSet *pEpSet, SRpcMsg *pMsg) {
×
33
  int32_t code = 0;
×
34
  code = TSDB_CODE_INVALID_PTR;
×
35
  TAOS_RETURN(code);
×
36
}
37
int32_t sendSyncReq(const SEpSet *pEpSet, SRpcMsg *pMsg) {
×
38
  int32_t code = 0;
×
39
  code = TSDB_CODE_INVALID_PTR;
×
40
  TAOS_RETURN(code);
×
41
}
42

UNCOV
43
char *i642str(int64_t val) {
×
44
  static threadlocal char str[24] = {0};
UNCOV
45
  (void)snprintf(str, sizeof(str), "%" PRId64, val);
×
UNCOV
46
  return str;
×
47
}
48

UNCOV
49
void dumpFunc(SSdb *pSdb, SJson *json) {
×
UNCOV
50
  int32_t code = 0;
×
UNCOV
51
  int32_t lino = 0;
×
UNCOV
52
  void   *pIter = NULL;
×
UNCOV
53
  SJson *items = tjsonAddArrayToObject(json, "funcs");
×
54

55
  while (1) {
×
UNCOV
56
    SFuncObj *pObj = NULL;
×
UNCOV
57
    pIter = sdbFetch(pSdb, SDB_FUNC, pIter, (void **)&pObj);
×
UNCOV
58
    if (pIter == NULL) break;
×
59

60
    SJson *item = tjsonCreateObject();
×
61
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
62
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", pObj->name), pObj, &lino, _OVER);
×
63
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
64
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "funcType", i642str(pObj->funcType)), pObj, &lino, _OVER);
×
65
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "scriptType", i642str(pObj->scriptType)), pObj, &lino, _OVER);
×
66
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "align", i642str(pObj->align)), pObj, &lino, _OVER);
×
67
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "outputType", i642str(pObj->outputType)), pObj, &lino, _OVER);
×
68
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "outputLen", i642str(pObj->outputLen)), pObj, &lino, _OVER);
×
69
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "bufSize", i642str(pObj->bufSize)), pObj, &lino, _OVER);
×
70
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "signature", i642str(pObj->signature)), pObj, &lino, _OVER);
×
71
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "commentSize", i642str(pObj->commentSize)), pObj, &lino, _OVER);
×
72
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "codeSize", i642str(pObj->codeSize)), pObj, &lino, _OVER);
×
73
    sdbRelease(pSdb, pObj);
×
74
  }
UNCOV
75
_OVER:
×
UNCOV
76
  if (code != 0) mError("failed to dump func info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
77
}
×
78

UNCOV
79
void dumpDb(SSdb *pSdb, SJson *json) {
×
UNCOV
80
  int32_t code = 0;
×
UNCOV
81
  int32_t lino = 0;
×
UNCOV
82
  void  *pIter = NULL;
×
UNCOV
83
  SJson *items = tjsonCreateObject();
×
UNCOV
84
  TAOS_CHECK_GOTO(tjsonAddItemToObject(json, "dbs", items), &lino, _OVER);
×
85

86
  while (1) {
×
UNCOV
87
    SDbObj *pObj = NULL;
×
UNCOV
88
    pIter = sdbFetch(pSdb, SDB_DB, pIter, (void **)&pObj);
×
UNCOV
89
    if (pIter == NULL) break;
×
90

91
    SJson *item = tjsonCreateObject();
×
92
    RETRIEVE_CHECK_GOTO(tjsonAddItemToObject(items, "db", item), pObj, &lino, _OVER);
×
93

94
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)), pObj, &lino, _OVER);
×
95
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acct", pObj->acct), pObj, &lino, _OVER);
×
96
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createUser", pObj->createUser), pObj, &lino, _OVER);
×
97
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
98
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
99
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER);
×
100
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cfgVersion", i642str(pObj->cfgVersion)), pObj, &lino, _OVER);
×
101
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "vgVersion", i642str(pObj->vgVersion)), pObj, &lino, _OVER);
×
102
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfVgroups", i642str(pObj->cfg.numOfVgroups)), pObj, &lino,
×
103
                        _OVER);
104
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfStables", i642str(pObj->cfg.numOfStables)), pObj, &lino,
×
105
                        _OVER);
106
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "buffer", i642str(pObj->cfg.buffer)), pObj, &lino, _OVER);
×
107
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "pageSize", i642str(pObj->cfg.pageSize)), pObj, &lino, _OVER);
×
108
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "pages", i642str(pObj->cfg.pages)), pObj, &lino, _OVER);
×
109
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cacheLastSize", i642str(pObj->cfg.cacheLastSize)), pObj, &lino,
×
110
                        _OVER);
111
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysPerFile", i642str(pObj->cfg.daysPerFile)), pObj, &lino,
×
112
                        _OVER);
113
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysToKeep0", i642str(pObj->cfg.daysToKeep0)), pObj, &lino,
×
114
                        _OVER);
115
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysToKeep1", i642str(pObj->cfg.daysToKeep1)), pObj, &lino,
×
116
                        _OVER);
117
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "daysToKeep2", i642str(pObj->cfg.daysToKeep2)), pObj, &lino,
×
118
                        _OVER);
119
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "minRows", i642str(pObj->cfg.minRows)), pObj, &lino, _OVER);
×
120
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "maxRows", i642str(pObj->cfg.maxRows)), pObj, &lino, _OVER);
×
121
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "precision", i642str(pObj->cfg.precision)), pObj, &lino, _OVER);
×
122
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "compression", i642str(pObj->cfg.compression)), pObj, &lino,
×
123
                        _OVER);
124
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "encryptAlgorithm", i642str(pObj->cfg.encryptAlgorithm)), pObj,
×
125
                        &lino, _OVER);
126
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "replications", i642str(pObj->cfg.replications)), pObj, &lino,
×
127
                        _OVER);
128
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "strict", i642str(pObj->cfg.strict)), pObj, &lino, _OVER);
×
129
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cacheLast", i642str(pObj->cfg.cacheLast)), pObj, &lino, _OVER);
×
130
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashMethod", i642str(pObj->cfg.hashMethod)), pObj, &lino, _OVER);
×
131
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashPrefix", i642str(pObj->cfg.hashPrefix)), pObj, &lino, _OVER);
×
132
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashSuffix", i642str(pObj->cfg.hashSuffix)), pObj, &lino, _OVER);
×
133
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sstTrigger", i642str(pObj->cfg.sstTrigger)), pObj, &lino, _OVER);
×
134
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "tsdbPageSize", i642str(pObj->cfg.tsdbPageSize)), pObj, &lino,
×
135
                        _OVER);
136
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "schemaless", i642str(pObj->cfg.schemaless)), pObj, &lino, _OVER);
×
137
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walLevel", i642str(pObj->cfg.walLevel)), pObj, &lino, _OVER);
×
138
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walFsyncPeriod", i642str(pObj->cfg.walFsyncPeriod)), pObj, &lino,
×
139
                        _OVER);
140
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walRetentionPeriod", i642str(pObj->cfg.walRetentionPeriod)), pObj,
×
141
                        &lino, _OVER);
142
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walRetentionSize", i642str(pObj->cfg.walRetentionSize)), pObj,
×
143
                        &lino, _OVER);
144
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walRollPeriod", i642str(pObj->cfg.walRollPeriod)), pObj, &lino,
×
145
                        _OVER);
146
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "walSegmentSize", i642str(pObj->cfg.walSegmentSize)), pObj, &lino,
×
147
                        _OVER);
148

149
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfRetensions", i642str(pObj->cfg.numOfRetensions)), pObj,
×
150
                        &lino, _OVER);
151
    for (int32_t i = 0; i < pObj->cfg.numOfRetensions; ++i) {
×
152
      SJson *rentensions = tjsonAddArrayToObject(item, "rentensions");
×
153
      SJson *rentension = tjsonCreateObject();
×
154
      RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(rentensions, rentension), pObj, &lino, _OVER);
×
155

156
      SRetention *pRetension = taosArrayGet(pObj->cfg.pRetensions, i);
×
157
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "freq", i642str(pRetension->freq)), pObj, &lino, _OVER);
×
158
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "freqUnit", i642str(pRetension->freqUnit)), pObj, &lino, _OVER);
×
159
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "keep", i642str(pRetension->keep)), pObj, &lino, _OVER);
×
160
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "keepUnit", i642str(pRetension->keepUnit)), pObj, &lino, _OVER);
×
161
    }
162

163
    sdbRelease(pSdb, pObj);
×
164
  }
UNCOV
165
_OVER:
×
UNCOV
166
  if (code != 0) mError("failed to dump db info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
167
}
×
168

UNCOV
169
void dumpStb(SSdb *pSdb, SJson *json) {
×
UNCOV
170
  int32_t code = 0;
×
UNCOV
171
  int32_t lino = 0;
×
UNCOV
172
  void  *pIter = NULL;
×
UNCOV
173
  SJson *items = tjsonAddArrayToObject(json, "stbs");
×
174

175
  while (1) {
×
UNCOV
176
    SStbObj *pObj = NULL;
×
UNCOV
177
    pIter = sdbFetch(pSdb, SDB_STB, pIter, (void **)&pObj);
×
UNCOV
178
    if (pIter == NULL) break;
×
179

180
    SJson *item = tjsonCreateObject();
×
181
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
182
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetStbStr(pObj->name)), pObj, &lino, _OVER);
×
183
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->db)), pObj, &lino, _OVER);
×
184
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
185
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
186
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER);
×
187
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER);
×
188
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "tagVer", i642str(pObj->tagVer)), pObj, &lino, _OVER);
×
189
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "colVer", i642str(pObj->colVer)), pObj, &lino, _OVER);
×
190
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "smaVer", i642str(pObj->smaVer)), pObj, &lino, _OVER);
×
191
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "nextColId", i642str(pObj->nextColId)), pObj, &lino, _OVER);
×
192
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "watermark1", i642str(pObj->watermark[0])), pObj, &lino, _OVER);
×
193
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "watermark2", i642str(pObj->watermark[1])), pObj, &lino, _OVER);
×
194
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "maxdelay0", i642str(pObj->maxdelay[0])), pObj, &lino, _OVER);
×
195
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "maxdelay1", i642str(pObj->maxdelay[1])), pObj, &lino, _OVER);
×
196
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ttl", i642str(pObj->ttl)), pObj, &lino, _OVER);
×
197
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfFuncs", i642str(pObj->numOfFuncs)), pObj, &lino, _OVER);
×
198
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "commentLen", i642str(pObj->commentLen)), pObj, &lino, _OVER);
×
199
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ast1Len", i642str(pObj->ast1Len)), pObj, &lino, _OVER);
×
200
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ast2Len", i642str(pObj->ast2Len)), pObj, &lino, _OVER);
×
201
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "virtual", i642str(pObj->virtualStb)), pObj, &lino, _OVER);
×
202

203
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfColumns", i642str(pObj->numOfColumns)), pObj, &lino, _OVER);
×
204
    SJson *columns = tjsonAddArrayToObject(item, "columns");
×
205
    for (int32_t i = 0; i < pObj->numOfColumns; ++i) {
×
206
      SJson *column = tjsonCreateObject();
×
207
      RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(columns, column), pObj, &lino, _OVER);
×
208

209
      SSchema *pColumn = &pObj->pColumns[i];
×
210
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "type", i642str(pColumn->type)), pObj, &lino, _OVER);
×
211
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "typestr", tDataTypes[pColumn->type].name), pObj, &lino,
×
212
                          _OVER);
213
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "flags", i642str(pColumn->flags)), pObj, &lino, _OVER);
×
214
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "colId", i642str(pColumn->colId)), pObj, &lino, _OVER);
×
215
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "bytes", i642str(pColumn->bytes)), pObj, &lino, _OVER);
×
216
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(column, "name", pColumn->name), pObj, &lino, _OVER);
×
217
    }
218

219
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfTags", i642str(pObj->numOfTags)), pObj, &lino, _OVER);
×
220
    SJson *tags = tjsonAddArrayToObject(item, "tags");
×
221
    for (int32_t i = 0; i < pObj->numOfTags; ++i) {
×
222
      SJson *tag = tjsonCreateObject();
×
223
      RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(tags, tag), pObj, &lino, _OVER);
×
224

225
      SSchema *pTag = &pObj->pTags[i];
×
226
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "type", i642str(pTag->type)), pObj, &lino, _OVER);
×
227
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "typestr", tDataTypes[pTag->type].name), pObj, &lino, _OVER);
×
228
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "flags", i642str(pTag->flags)), pObj, &lino, _OVER);
×
229
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "colId", i642str(pTag->colId)), pObj, &lino, _OVER);
×
230
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "bytes", i642str(pTag->bytes)), pObj, &lino, _OVER);
×
231
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(tag, "name", pTag->name), pObj, &lino, _OVER);
×
232
    }
233

234
    sdbRelease(pSdb, pObj);
×
235
  }
UNCOV
236
_OVER:
×
UNCOV
237
  if (code != 0) mError("failed to dump stable info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
238
}
×
239

UNCOV
240
void dumpSma(SSdb *pSdb, SJson *json) {
×
UNCOV
241
  int32_t code = 0;
×
UNCOV
242
  int32_t lino = 0;
×
UNCOV
243
  void  *pIter = NULL;
×
UNCOV
244
  SJson *items = tjsonAddArrayToObject(json, "smas");
×
245

246
  while (1) {
×
UNCOV
247
    SSmaObj *pObj = NULL;
×
UNCOV
248
    pIter = sdbFetch(pSdb, SDB_SMA, pIter, (void **)&pObj);
×
UNCOV
249
    if (pIter == NULL) break;
×
250

251
    SJson *item = tjsonCreateObject();
×
252
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
253
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetStbStr(pObj->name)), pObj, &lino, _OVER);
×
254
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stb", mndGetStbStr(pObj->stb)), pObj, &lino, _OVER);
×
255
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->db)), pObj, &lino, _OVER);
×
256
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dstTbName", mndGetStbStr(pObj->dstTbName)), pObj, &lino, _OVER);
×
257
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
258
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER);
×
259
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)), pObj, &lino, _OVER);
×
260
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER);
×
261
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dstTbUid", i642str(pObj->dstTbUid)), pObj, &lino, _OVER);
×
262
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "intervalUnit", i642str(pObj->intervalUnit)), pObj, &lino, _OVER);
×
263
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "slidingUnit", i642str(pObj->slidingUnit)), pObj, &lino, _OVER);
×
264
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "timezone", i642str(pObj->timezone)), pObj, &lino, _OVER);
×
265
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dstVgId", i642str(pObj->dstVgId)), pObj, &lino, _OVER);
×
266
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "interval", i642str(pObj->interval)), pObj, &lino, _OVER);
×
267
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "offset", i642str(pObj->offset)), pObj, &lino, _OVER);
×
268
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sliding", i642str(pObj->sliding)), pObj, &lino, _OVER);
×
269
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "exprLen", i642str(pObj->exprLen)), pObj, &lino, _OVER);
×
270
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "tagsFilterLen", i642str(pObj->tagsFilterLen)), pObj, &lino,
×
271
                        _OVER);
272
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)), pObj, &lino, _OVER);
×
273
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "astLen", i642str(pObj->astLen)), pObj, &lino, _OVER);
×
274
    sdbRelease(pSdb, pObj);
×
275
  }
UNCOV
276
_OVER:
×
UNCOV
277
  if (code != 0) mError("failed to dump sma info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
278
}
×
279

UNCOV
280
void dumpVgroup(SSdb *pSdb, SJson *json) {
×
UNCOV
281
  int32_t code = 0;
×
UNCOV
282
  int32_t lino = 0;
×
UNCOV
283
  void  *pIter = NULL;
×
UNCOV
284
  SJson *items = tjsonAddArrayToObject(json, "vgroups");
×
285

286
  while (1) {
×
UNCOV
287
    SVgObj *pObj = NULL;
×
UNCOV
288
    pIter = sdbFetch(pSdb, SDB_VGROUP, pIter, (void **)&pObj);
×
UNCOV
289
    if (pIter == NULL) break;
×
290

291
    SJson *item = tjsonCreateObject();
×
292
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
293
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "vgId", i642str(pObj->vgId)), pObj, &lino, _OVER);
×
294
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
295
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
296
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "version", i642str(pObj->version)), pObj, &lino, _OVER);
×
297
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashBegin", i642str(pObj->hashBegin)), pObj, &lino, _OVER);
×
298
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "hashEnd", i642str(pObj->hashEnd)), pObj, &lino, _OVER);
×
299
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "db", mndGetDbStr(pObj->dbName)), pObj, &lino, _OVER);
×
300
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER);
×
301
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "isTsma", i642str(pObj->isTsma)), pObj, &lino, _OVER);
×
302
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "replica", i642str(pObj->replica)), pObj, &lino, _OVER);
×
303
    for (int32_t i = 0; i < pObj->replica; ++i) {
×
304
      SJson *replicas = tjsonAddArrayToObject(item, "replicas");
×
305
      SJson *replica = tjsonCreateObject();
×
306
      RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(replicas, replica), pObj, &lino, _OVER);
×
307
      RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(replica, "dnodeId", i642str(pObj->vnodeGid[i].dnodeId)), pObj, &lino,
×
308
                          _OVER);
309
    }
310
    sdbRelease(pSdb, pObj);
×
311
  }
UNCOV
312
_OVER:
×
UNCOV
313
  if (code != 0) mError("failed to dump vgroup info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
314
}
×
315

UNCOV
316
void dumpTopic(SSdb *pSdb, SJson *json) {
×
UNCOV
317
  int32_t code = 0;
×
UNCOV
318
  int32_t lino = 0;
×
UNCOV
319
  void  *pIter = NULL;
×
UNCOV
320
  SJson *items = tjsonAddArrayToObject(json, "topics");
×
321

322
  while (1) {
×
UNCOV
323
    SMqTopicObj *pObj = NULL;
×
UNCOV
324
    pIter = sdbFetch(pSdb, SDB_TOPIC, pIter, (void **)&pObj);
×
UNCOV
325
    if (pIter == NULL) break;
×
326

327
    SJson *item = tjsonCreateObject();
×
328
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
329
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)), pObj, &lino, _OVER);
×
330
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->db)), pObj, &lino, _OVER);
×
331
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createTime", i642str(pObj->createTime)), pObj, &lino, _OVER);
×
332
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
333
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER);
×
334
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER);
×
335
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "version", i642str(pObj->version)), pObj, &lino, _OVER);
×
336
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "subType", i642str(pObj->subType)), pObj, &lino, _OVER);
×
337
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "withMeta", i642str(pObj->withMeta)), pObj, &lino, _OVER);
×
338
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)), pObj, &lino, _OVER);
×
339
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbName", mndGetStableStr(pObj->stbName)), pObj, &lino, _OVER);
×
340
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)), pObj, &lino, _OVER);
×
341
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "astLen", i642str(pObj->astLen)), pObj, &lino, _OVER);
×
342
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sqlLen", i642str(pObj->sqlLen)), pObj, &lino, _OVER);
×
343
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ntbUid", i642str(pObj->ntbUid)), pObj, &lino, _OVER);
×
344
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "ctbStbUid", i642str(pObj->ctbStbUid)), pObj, &lino, _OVER);
×
345
    sdbRelease(pSdb, pObj);
×
346
  }
UNCOV
347
_OVER:
×
UNCOV
348
  if (code != 0) mError("failed to dump topic info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
349
}
×
350

UNCOV
351
void dumpConsumer(SSdb *pSdb, SJson *json) {
×
UNCOV
352
  int32_t code = 0;
×
UNCOV
353
  int32_t lino = 0;
×
UNCOV
354
  void  *pIter = NULL;
×
UNCOV
355
  SJson *items = tjsonAddArrayToObject(json, "consumers");
×
356

357
  while (1) {
×
UNCOV
358
    SMqConsumerObj *pObj = NULL;
×
UNCOV
359
    pIter = sdbFetch(pSdb, SDB_CONSUMER, pIter, (void **)&pObj);
×
UNCOV
360
    if (pIter == NULL) break;
×
361

362
    SJson *item = tjsonCreateObject();
×
363
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
364
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "consumerId", i642str(pObj->consumerId)), pObj, &lino, _OVER);
×
365
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "cgroup", pObj->cgroup), pObj, &lino, _OVER);
×
366
    sdbRelease(pSdb, pObj);
×
367
  }
UNCOV
368
_OVER:
×
UNCOV
369
  if (code != 0) mError("failed to dump consumer info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
370
}
×
371

UNCOV
372
void dumpSubscribe(SSdb *pSdb, SJson *json) {
×
UNCOV
373
  int32_t code = 0;
×
UNCOV
374
  int32_t lino = 0;
×
UNCOV
375
  void  *pIter = NULL;
×
UNCOV
376
  SJson *items = tjsonAddArrayToObject(json, "subscribes");
×
377

378
  while (1) {
×
UNCOV
379
    SMqSubscribeObj *pObj = NULL;
×
UNCOV
380
    pIter = sdbFetch(pSdb, SDB_SUBSCRIBE, pIter, (void **)&pObj);
×
UNCOV
381
    if (pIter == NULL) break;
×
382

383
    SJson *item = tjsonCreateObject();
×
384
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
385
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "key", pObj->key), pObj, &lino, _OVER);
×
386
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbUid", i642str(pObj->dbUid)), pObj, &lino, _OVER);
×
387
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbUid", i642str(pObj->stbUid)), pObj, &lino, _OVER);
×
388
    sdbRelease(pSdb, pObj);
×
389
  }
UNCOV
390
_OVER:
×
UNCOV
391
  if (code != 0) mError("failed to dump subscribe info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
392
}
×
393

UNCOV
394
void dumpStream(SSdb *pSdb, SJson *json) {
×
UNCOV
395
  int32_t code = 0;
×
UNCOV
396
  int32_t lino = 0;
×
UNCOV
397
  void   *pIter = NULL;
×
UNCOV
398
  SJson *items = tjsonAddArrayToObject(json, "streams");
×
399

400
  while (1) {
×
UNCOV
401
    SStreamObj *pObj = NULL;
×
UNCOV
402
    pIter = sdbFetch(pSdb, SDB_STREAM, pIter, (void **)&pObj);
×
UNCOV
403
    if (pIter == NULL) break;
×
404

405
    SJson *item = tjsonCreateObject();
×
406
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
407
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", mndGetDbStr(pObj->name)), pObj, &lino, _OVER);
×
408
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createTime", i642str(pObj->createTime)), pObj, &lino, _OVER);
×
409
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
410
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "version", i642str(pObj->version)), pObj, &lino, _OVER);
×
411
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "totalLevel", i642str(pObj->totalLevel)), pObj, &lino, _OVER);
×
412
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "smaId", i642str(pObj->smaId)), pObj, &lino, _OVER);
×
413
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "uid", i642str(pObj->uid)), pObj, &lino, _OVER);
×
414
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "status", i642str(pObj->status)), pObj, &lino, _OVER);
×
415
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "igExpired", i642str(pObj->conf.igExpired)), pObj, &lino, _OVER);
×
416
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "trigger", i642str(pObj->conf.trigger)), pObj, &lino, _OVER);
×
417
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "triggerParam", i642str(pObj->conf.triggerParam)), pObj, &lino,
×
418
                        _OVER);
419
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "watermark", i642str(pObj->conf.watermark)), pObj, &lino, _OVER);
×
420
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sourceDbUid", i642str(pObj->sourceDbUid)), pObj, &lino, _OVER);
×
421
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetDbUid", i642str(pObj->targetDbUid)), pObj, &lino, _OVER);
×
422
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "sourceDb", mndGetDbStr(pObj->sourceDb)), pObj, &lino, _OVER);
×
423
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetDb", mndGetDbStr(pObj->targetDb)), pObj, &lino, _OVER);
×
424
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetSTbName", mndGetStbStr(pObj->targetSTbName)), pObj, &lino,
×
425
                        _OVER);
426
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "targetStbUid", i642str(pObj->targetStbUid)), pObj, &lino, _OVER);
×
427
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "fixedSinkVgId", i642str(pObj->fixedSinkVgId)), pObj, &lino,
×
428
                        _OVER);
429
    sdbRelease(pSdb, pObj);
×
430
  }
UNCOV
431
_OVER:
×
UNCOV
432
  if (code != 0) mError("failed to dump stream info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
433
}
×
434

UNCOV
435
void dumpAcct(SSdb *pSdb, SJson *json) {
×
UNCOV
436
  int32_t code = 0;
×
UNCOV
437
  int32_t lino = 0;
×
UNCOV
438
  void  *pIter = NULL;
×
UNCOV
439
  SJson *items = tjsonAddArrayToObject(json, "accts");
×
440

UNCOV
441
  while (1) {
×
UNCOV
442
    SAcctObj *pObj = NULL;
×
UNCOV
443
    pIter = sdbFetch(pSdb, SDB_ACCT, pIter, (void **)&pObj);
×
UNCOV
444
    if (pIter == NULL) break;
×
445

UNCOV
446
    SJson *item = tjsonCreateObject();
×
UNCOV
447
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
UNCOV
448
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acct", pObj->acct), pObj, &lino, _OVER);
×
UNCOV
449
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
UNCOV
450
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
UNCOV
451
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acctId", i642str(pObj->acctId)), pObj, &lino, _OVER);
×
UNCOV
452
    sdbRelease(pSdb, pObj);
×
453
  }
UNCOV
454
_OVER:
×
UNCOV
455
  if (code != 0) mError("failed to dump acct info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
456
}
×
457

UNCOV
458
void dumpAuth(SSdb *pSdb, SJson *json) {
×
459
  // todo
UNCOV
460
}
×
461

UNCOV
462
void dumpUser(SSdb *pSdb, SJson *json) {
×
UNCOV
463
  int32_t code = 0;
×
UNCOV
464
  int32_t lino = 0;
×
UNCOV
465
  void  *pIter = NULL;
×
UNCOV
466
  SJson *items = tjsonAddArrayToObject(json, "users");
×
467

UNCOV
468
  while (1) {
×
UNCOV
469
    SUserObj *pObj = NULL;
×
UNCOV
470
    pIter = sdbFetch(pSdb, SDB_USER, pIter, (void **)&pObj);
×
UNCOV
471
    if (pIter == NULL) break;
×
472

UNCOV
473
    SJson *item = tjsonCreateObject();
×
UNCOV
474
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
UNCOV
475
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", pObj->user), pObj, &lino, _OVER);
×
UNCOV
476
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "acct", pObj->acct), pObj, &lino, _OVER);
×
UNCOV
477
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
UNCOV
478
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
UNCOV
479
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "superUser", i642str(pObj->superUser)), pObj, &lino, _OVER);
×
UNCOV
480
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "authVersion", i642str(pObj->authVersion)), pObj, &lino, _OVER);
×
UNCOV
481
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "passVersion", i642str(pObj->passVersion)), pObj, &lino, _OVER);
×
UNCOV
482
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfReadDbs", i642str(taosHashGetSize(pObj->readDbs))), pObj,
×
483
                        &lino, _OVER);
UNCOV
484
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "numOfWriteDbs", i642str(taosHashGetSize(pObj->writeDbs))), pObj,
×
485
                        &lino, _OVER);
UNCOV
486
    sdbRelease(pSdb, pObj);
×
487
  }
UNCOV
488
_OVER:
×
UNCOV
489
  if (code != 0) mError("failed to dump user info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
490
}
×
491

UNCOV
492
void dumpDnode(SSdb *pSdb, SJson *json) {
×
UNCOV
493
  int32_t code = 0;
×
UNCOV
494
  int32_t lino = 0;
×
UNCOV
495
  void  *pIter = NULL;
×
UNCOV
496
  SJson *items = tjsonAddArrayToObject(json, "dnodes");
×
497

UNCOV
498
  while (1) {
×
UNCOV
499
    SDnodeObj *pObj = NULL;
×
UNCOV
500
    pIter = sdbFetch(pSdb, SDB_DNODE, pIter, (void **)&pObj);
×
UNCOV
501
    if (pIter == NULL) break;
×
502

UNCOV
503
    SJson *item = tjsonCreateObject();
×
UNCOV
504
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
UNCOV
505
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER);
×
UNCOV
506
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
UNCOV
507
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
UNCOV
508
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "port", i642str(pObj->port)), pObj, &lino, _OVER);
×
UNCOV
509
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "fqdn", pObj->fqdn), pObj, &lino, _OVER);
×
UNCOV
510
    sdbRelease(pSdb, pObj);
×
511
  }
UNCOV
512
_OVER:
×
UNCOV
513
  if (code != 0) mError("failed to dump dnode info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
514
}
×
515

UNCOV
516
void dumpSnode(SSdb *pSdb, SJson *json) {
×
UNCOV
517
  int32_t code = 0;
×
UNCOV
518
  int32_t lino = 0;
×
UNCOV
519
  void  *pIter = NULL;
×
UNCOV
520
  SJson *items = tjsonAddArrayToObject(json, "snodes");
×
521

522
  while (1) {
×
UNCOV
523
    SSnodeObj *pObj = NULL;
×
UNCOV
524
    pIter = sdbFetch(pSdb, SDB_QNODE, pIter, (void **)&pObj);
×
UNCOV
525
    if (pIter == NULL) break;
×
526

527
    SJson *item = tjsonCreateObject();
×
528
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
529
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER);
×
530
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
531
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
532
    sdbRelease(pSdb, pObj);
×
533
  }
UNCOV
534
_OVER:
×
UNCOV
535
  if (code != 0) mError("failed to dump snode info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
536
}
×
537

UNCOV
538
void dumpQnode(SSdb *pSdb, SJson *json) {
×
UNCOV
539
  int32_t code = 0;
×
UNCOV
540
  int32_t lino = 0;
×
UNCOV
541
  void  *pIter = NULL;
×
UNCOV
542
  SJson *items = tjsonAddArrayToObject(json, "qnodes");
×
543

544
  while (1) {
×
UNCOV
545
    SQnodeObj *pObj = NULL;
×
UNCOV
546
    pIter = sdbFetch(pSdb, SDB_QNODE, pIter, (void **)&pObj);
×
UNCOV
547
    if (pIter == NULL) break;
×
548

549
    SJson *item = tjsonCreateObject();
×
550
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
551
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER);
×
552
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
553
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
554
    sdbRelease(pSdb, pObj);
×
555
  }
UNCOV
556
_OVER:
×
UNCOV
557
  if (code != 0) mError("failed to dump qnode info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
558
}
×
559

UNCOV
560
void dumpMnode(SSdb *pSdb, SJson *json) {
×
UNCOV
561
  int32_t code = 0;
×
UNCOV
562
  int32_t lino = 0;
×
UNCOV
563
  void  *pIter = NULL;
×
UNCOV
564
  SJson *items = tjsonAddArrayToObject(json, "mnodes");
×
565

UNCOV
566
  while (1) {
×
UNCOV
567
    SMnodeObj *pObj = NULL;
×
UNCOV
568
    pIter = sdbFetch(pSdb, SDB_MNODE, pIter, (void **)&pObj);
×
UNCOV
569
    if (pIter == NULL) break;
×
570

UNCOV
571
    SJson *item = tjsonCreateObject();
×
UNCOV
572
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
UNCOV
573
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER);
×
UNCOV
574
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
UNCOV
575
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
UNCOV
576
    sdbRelease(pSdb, pObj);
×
577
  }
UNCOV
578
_OVER:
×
UNCOV
579
  if (code != 0) mError("failed to dump mnode info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
580
}
×
581

UNCOV
582
void dumpCluster(SSdb *pSdb, SJson *json) {
×
UNCOV
583
  int32_t code = 0;
×
UNCOV
584
  int32_t lino = 0;
×
585

UNCOV
586
  void  *pIter = NULL;
×
UNCOV
587
  SJson *items = tjsonAddArrayToObject(json, "clusters");
×
588

UNCOV
589
  while (1) {
×
UNCOV
590
    SClusterObj *pObj = NULL;
×
UNCOV
591
    pIter = sdbFetch(pSdb, SDB_CLUSTER, pIter, (void **)&pObj);
×
UNCOV
592
    if (pIter == NULL) break;
×
593

UNCOV
594
    SJson *item = tjsonCreateObject();
×
UNCOV
595
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
UNCOV
596
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER);
×
UNCOV
597
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
UNCOV
598
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "updateTime", i642str(pObj->updateTime)), pObj, &lino, _OVER);
×
UNCOV
599
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "name", pObj->name), pObj, &lino, _OVER);
×
UNCOV
600
    sdbRelease(pSdb, pObj);
×
601
  }
602

UNCOV
603
_OVER:
×
UNCOV
604
  if (code != 0) mError("failed to dump cluster info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
605
}
×
606

UNCOV
607
void dumpTrans(SSdb *pSdb, SJson *json) {
×
UNCOV
608
  int32_t code = 0;
×
UNCOV
609
  int32_t lino = 0;
×
UNCOV
610
  void  *pIter = NULL;
×
UNCOV
611
  SJson *items = tjsonAddArrayToObject(json, "transactions");
×
612

613
  while (1) {
×
UNCOV
614
    STrans *pObj = NULL;
×
UNCOV
615
    pIter = sdbFetch(pSdb, SDB_TRANS, pIter, (void **)&pObj);
×
UNCOV
616
    if (pIter == NULL) break;
×
617

618
    SJson *item = tjsonCreateObject();
×
619
    RETRIEVE_CHECK_GOTO(tjsonAddItemToArray(items, item), pObj, &lino, _OVER);
×
620
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "id", i642str(pObj->id)), pObj, &lino, _OVER);
×
621
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stage", i642str(pObj->stage)), pObj, &lino, _OVER);
×
622
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "policy", i642str(pObj->policy)), pObj, &lino, _OVER);
×
623
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "conflict", i642str(pObj->conflict)), pObj, &lino, _OVER);
×
624
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "exec", i642str(pObj->exec)), pObj, &lino, _OVER);
×
625
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "oper", i642str(pObj->oper)), pObj, &lino, _OVER);
×
626
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "createdTime", i642str(pObj->createdTime)), pObj, &lino, _OVER);
×
627
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "dbname", pObj->dbname), pObj, &lino, _OVER);
×
628
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "stbname", pObj->stbname), pObj, &lino, _OVER);
×
629
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "opername", pObj->opername), pObj, &lino, _OVER);
×
630
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "commitLogNum", i642str(taosArrayGetSize(pObj->commitActions))),
×
631
                        pObj, &lino, _OVER);
632
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "redoActionNum", i642str(taosArrayGetSize(pObj->redoActions))),
×
633
                        pObj, &lino, _OVER);
634
    RETRIEVE_CHECK_GOTO(tjsonAddStringToObject(item, "undoActionNum", i642str(taosArrayGetSize(pObj->undoActions))),
×
635
                        pObj, &lino, _OVER);
636
    sdbRelease(pSdb, pObj);
×
637
  }
638

UNCOV
639
_OVER:
×
UNCOV
640
  if (code != 0) mError("failed to dump trans info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
641
}
×
642

UNCOV
643
void dumpHeader(SSdb *pSdb, SJson *json) {
×
UNCOV
644
  int32_t code = 0;
×
UNCOV
645
  int32_t lino = 0;
×
UNCOV
646
  TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "sver", i642str(1)), &lino, _OVER);
×
UNCOV
647
  TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "applyIndex", i642str(pSdb->applyIndex)), &lino, _OVER);
×
UNCOV
648
  TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "applyTerm", i642str(pSdb->applyTerm)), &lino, _OVER);
×
UNCOV
649
  TAOS_CHECK_GOTO(tjsonAddStringToObject(json, "applyConfig", i642str(pSdb->applyConfig)), &lino, _OVER);
×
650

UNCOV
651
  SJson *maxIdsJson = tjsonCreateObject();
×
UNCOV
652
  TAOS_CHECK_GOTO(tjsonAddItemToObject(json, "maxIds", maxIdsJson), &lino, _OVER);
×
UNCOV
653
  for (int32_t i = 0; i < SDB_MAX; ++i) {
×
UNCOV
654
    if(i == 5) continue;
×
UNCOV
655
    int64_t maxId = 0;
×
UNCOV
656
    if (i < SDB_MAX) {
×
UNCOV
657
      maxId = pSdb->maxId[i];
×
658
    }
UNCOV
659
    TAOS_CHECK_GOTO(tjsonAddStringToObject(maxIdsJson, sdbTableName(i), i642str(maxId)), &lino, _OVER);
×
660
  }
661

UNCOV
662
  SJson *tableVersJson = tjsonCreateObject();
×
UNCOV
663
  TAOS_CHECK_GOTO(tjsonAddItemToObject(json, "tableVers", tableVersJson), &lino, _OVER);
×
UNCOV
664
  for (int32_t i = 0; i < SDB_MAX; ++i) {
×
UNCOV
665
    int64_t tableVer = 0;
×
UNCOV
666
    if (i < SDB_MAX) {
×
UNCOV
667
      tableVer = pSdb->tableVer[i];
×
668
    }
UNCOV
669
    TAOS_CHECK_GOTO(tjsonAddStringToObject(tableVersJson, sdbTableName(i), i642str(tableVer)), &lino, _OVER);
×
670
  }
671

UNCOV
672
_OVER:
×
UNCOV
673
  if (code != 0) mError("failed to dump sdb info at line:%d since %s", lino, tstrerror(code));
×
UNCOV
674
}
×
675

UNCOV
676
int32_t mndDumpSdb() {
×
UNCOV
677
  mInfo("start to dump sdb info to sdb.json");
×
678

UNCOV
679
  char path[PATH_MAX * 2] = {0};
×
UNCOV
680
  (void)snprintf(path, sizeof(path), "%s%smnode", tsDataDir, TD_DIRSEP);
×
681

UNCOV
682
  SMsgCb msgCb = {0};
×
UNCOV
683
  msgCb.reportStartupFp = reportStartup;
×
UNCOV
684
  msgCb.sendReqFp = sendReq;
×
UNCOV
685
  msgCb.sendSyncReqFp = sendSyncReq;
×
UNCOV
686
  msgCb.sendRspFp = sendRsp;
×
UNCOV
687
  msgCb.mgmt = (SMgmtWrapper *)(&msgCb);  // hack
×
UNCOV
688
  tmsgSetDefault(&msgCb);
×
689

UNCOV
690
  TAOS_CHECK_RETURN(walInit(NULL));
×
UNCOV
691
  TAOS_CHECK_RETURN(syncInit());
×
692

UNCOV
693
  SMnodeOpt opt = {.msgCb = msgCb};
×
UNCOV
694
  SMnode   *pMnode = mndOpen(path, &opt);
×
UNCOV
695
  if (pMnode == NULL) return -1;
×
696

UNCOV
697
  SSdb  *pSdb = pMnode->pSdb;
×
UNCOV
698
  SJson *json = tjsonCreateObject();
×
UNCOV
699
  dumpHeader(pSdb, json);
×
UNCOV
700
  dumpFunc(pSdb, json);
×
UNCOV
701
  dumpDb(pSdb, json);
×
UNCOV
702
  dumpStb(pSdb, json);
×
UNCOV
703
  dumpSma(pSdb, json);
×
UNCOV
704
  dumpVgroup(pSdb, json);
×
UNCOV
705
  dumpTopic(pSdb, json);
×
UNCOV
706
  dumpConsumer(pSdb, json);
×
UNCOV
707
  dumpSubscribe(pSdb, json);
×
708
  //  dumpOffset(pSdb, json);
UNCOV
709
  dumpStream(pSdb, json);
×
UNCOV
710
  dumpAcct(pSdb, json);
×
UNCOV
711
  dumpAuth(pSdb, json);
×
UNCOV
712
  dumpUser(pSdb, json);
×
UNCOV
713
  dumpDnode(pSdb, json);
×
UNCOV
714
  dumpSnode(pSdb, json);
×
UNCOV
715
  dumpQnode(pSdb, json);
×
UNCOV
716
  dumpMnode(pSdb, json);
×
UNCOV
717
  dumpCluster(pSdb, json);
×
UNCOV
718
  dumpTrans(pSdb, json);
×
719

UNCOV
720
  char     *pCont = tjsonToString(json);
×
UNCOV
721
  int32_t   contLen = strlen(pCont);
×
UNCOV
722
  char      file[] = "sdb.json";
×
UNCOV
723
  TdFilePtr pFile = taosOpenFile(file, TD_FILE_CREATE | TD_FILE_WRITE | TD_FILE_TRUNC | TD_FILE_WRITE_THROUGH);
×
UNCOV
724
  if (pFile == NULL) {
×
725
    mError("failed to write %s since %s", file, terrstr());
×
726
    return terrno;
×
727
  }
UNCOV
728
  TAOS_CHECK_RETURN(taosWriteFile(pFile, pCont, contLen));
×
729
  TAOS_CHECK_RETURN(taosWriteFile(pFile, "\n", 1));
×
730
  TAOS_CHECK_RETURN(taosFsyncFile(pFile));
×
731
  TAOS_CHECK_RETURN(taosCloseFile(&pFile));
×
732
  tjsonDelete(json);
×
733
  taosMemoryFree(pCont);
×
734

735
  mInfo("dump sdb info success");
×
736
  return 0;
×
737
}
738

739
int32_t mndDeleteTrans() {
×
740
  mInfo("start to dump sdb info to sdb.json");
×
741

742
  char path[PATH_MAX * 2] = {0};
×
743
  (void)snprintf(path, sizeof(path), "%s%smnode", tsDataDir, TD_DIRSEP);
×
744

745
  SMsgCb msgCb = {0};
×
746
  msgCb.reportStartupFp = reportStartup;
×
747
  msgCb.sendReqFp = sendReq;
×
748
  msgCb.sendSyncReqFp = sendSyncReq;
×
749
  msgCb.sendRspFp = sendRsp;
×
750
  msgCb.mgmt = (SMgmtWrapper *)(&msgCb);  // hack
×
751
  tmsgSetDefault(&msgCb);
×
752

753
  TAOS_CHECK_RETURN(walInit(NULL));
×
754
  TAOS_CHECK_RETURN(syncInit());
×
755

756
  SMnodeOpt opt = {.msgCb = msgCb};
×
757
  SMnode   *pMnode = mndOpen(path, &opt);
×
758
  if (pMnode == NULL) return terrno;
×
759

760
  TAOS_CHECK_RETURN(sdbWriteFileForDump(pMnode->pSdb));
×
761

762
  mInfo("dump sdb info success");
×
763

764
  return 0;
×
765
}
766

767
#pragma GCC diagnostic pop
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