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

taosdata / TDengine / #3548

04 Dec 2024 01:03PM UTC coverage: 59.846% (-0.8%) from 60.691%
#3548

push

travis-ci

web-flow
Merge pull request #29033 from taosdata/fix/calculate-vnode-memory-used

fix/calculate-vnode-memory-used

118484 of 254183 branches covered (46.61%)

Branch coverage included in aggregate %.

199691 of 277471 relevant lines covered (71.97%)

18794141.86 hits per line

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

83.95
/source/libs/parser/src/parAstParser.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 "functionMgt.h"
17
#include "os.h"
18
#include "parAst.h"
19
#include "parInt.h"
20
#include "parToken.h"
21
#include "systable.h"
22
#include "tglobal.h"
23

24
typedef void* (*FMalloc)(size_t);
25
typedef void (*FFree)(void*);
26

27
extern void* ParseAlloc(FMalloc);
28
extern void  Parse(void*, int, SToken, void*);
29
extern void  ParseFree(void*, FFree);
30
extern void  ParseTrace(FILE*, char*);
31

32
int32_t buildQueryAfterParse(SQuery** pQuery, SNode* pRootNode, int16_t placeholderNo, SArray** pPlaceholderValues) {
1,071,466✔
33
  *pQuery = NULL;
1,071,466✔
34
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
1,071,466✔
35
  if (NULL == *pQuery) {
1,071,497!
36
    return code;
×
37
  }
38
  (*pQuery)->pRoot = pRootNode;
1,071,497✔
39
  (*pQuery)->placeholderNum = placeholderNo;
1,071,497✔
40
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
1,071,497✔
41
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
1,071,497✔
42

43
  return TSDB_CODE_SUCCESS;
1,071,497✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
1,096,287✔
47
  SAstCreateContext cxt;
48
  initAstCreateContext(pParseCxt, &cxt);
1,096,287✔
49
  void* pParser = ParseAlloc((FMalloc)taosMemoryMalloc);
1,096,291✔
50
  if (!pParser) return terrno;
1,096,289!
51
  int32_t i = 0;
1,096,289✔
52
  while (1) {
68,820,208✔
53
    SToken t0 = {0};
69,916,497✔
54
    if (cxt.pQueryCxt->pSql[i] == 0) {
69,916,497✔
55
      Parse(pParser, 0, t0, &cxt);
676,552✔
56
      goto abort_parse;
1,104,892✔
57
    }
58
    t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type);
69,239,945✔
59
    t0.z = (char*)(cxt.pQueryCxt->pSql + i);
69,234,952✔
60
    i += t0.n;
69,234,952✔
61

62
    switch (t0.type) {
69,234,952!
63
      case TK_NK_SPACE:
22,139,505✔
64
      case TK_NK_COMMENT: {
65
        break;
22,139,505✔
66
      }
67
      case TK_NK_SEMI: {
396,386✔
68
        Parse(pParser, 0, t0, &cxt);
396,386✔
69
        goto abort_parse;
396,378✔
70
      }
71
      case TK_NK_ILLEGAL: {
1,561✔
72
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
1,561✔
73
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
1,561✔
74
        goto abort_parse;
1,561✔
75
      }
76
      case TK_NK_OCT: {
×
77
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unsupported token: \"%s\"", t0.z);
×
78
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
×
79
        goto abort_parse;
×
80
      }
81
      default:
46,697,500✔
82
        // ParseTrace(stdout, "");
83
        Parse(pParser, t0.type, t0, &cxt);
46,697,500✔
84
        if (TSDB_CODE_SUCCESS != cxt.errCode) {
46,711,112✔
85
          goto abort_parse;
30,409✔
86
        }
87
    }
88
  }
89

90
abort_parse:
1,104,892✔
91
  ParseFree(pParser, (FFree)taosMemoryFree);
1,104,892✔
92
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
1,096,290✔
93
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
1,071,499✔
94
    if (TSDB_CODE_SUCCESS != code) {
1,071,505!
95
      return code;
×
96
    }
97
  }
98
  taosArrayDestroy(cxt.pPlaceholderValues);
1,096,296✔
99
  return cxt.errCode;
1,096,274✔
100
}
101

102
typedef struct SCollectMetaKeyCxt {
103
  SParseContext*   pParseCxt;
104
  SParseMetaCache* pMetaCache;
105
  SNode*           pStmt;
106
} SCollectMetaKeyCxt;
107

108
typedef struct SCollectMetaKeyFromExprCxt {
109
  SCollectMetaKeyCxt* pComCxt;
110
  bool                hasLastRowOrLast;
111
  bool                tbnameCollect;
112
  int32_t             errCode;
113
} SCollectMetaKeyFromExprCxt;
114

115
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt);
116

117
static EDealRes collectMetaKeyFromFunction(SCollectMetaKeyFromExprCxt* pCxt, SFunctionNode* pFunc) {
2,995,397✔
118
  switch (fmGetFuncType(pFunc->functionName)) {
2,995,397✔
119
    case FUNCTION_TYPE_LAST_ROW:
22,547✔
120
    case FUNCTION_TYPE_LAST:
121
      pCxt->hasLastRowOrLast = true;
22,547✔
122
      break;
22,547✔
123
    case FUNCTION_TYPE_UDF:
212✔
124
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
212✔
125
      break;
212✔
126
    default:
2,972,642✔
127
      break;
2,972,642✔
128
  }
129
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
2,995,401!
130
}
131

132
static bool needGetTableIndex(SNode* pStmt) {
1,085,320✔
133
  if (QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && QUERY_NODE_SELECT_STMT == nodeType(pStmt)) {
1,085,320✔
134
    SSelectStmt* pSelect = (SSelectStmt*)pStmt;
13,220✔
135
    return (NULL != pSelect->pWindow && QUERY_NODE_INTERVAL_WINDOW == nodeType(pSelect->pWindow));
13,220!
136
  }
137
  return false;
1,072,100✔
138
}
139

140
static int32_t collectMetaKeyFromInsTagsImpl(SCollectMetaKeyCxt* pCxt, SName* pName) {
8,423✔
141
  if (0 == pName->type) {
8,423✔
142
    return TSDB_CODE_SUCCESS;
7,520✔
143
  }
144
  if (TSDB_DB_NAME_T == pName->type) {
903✔
145
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
226✔
146
  }
147
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
677✔
148
}
149

150
static int32_t collectMetaKeyFromInsTags(SCollectMetaKeyCxt* pCxt) {
8,423✔
151
  SSelectStmt* pSelect = (SSelectStmt*)pCxt->pStmt;
8,423✔
152
  SName        name = {0};
8,423✔
153
  int32_t      code = getVnodeSysTableTargetName(pCxt->pParseCxt->acctId, pSelect->pWhere, &name);
8,423✔
154
  if (TSDB_CODE_SUCCESS == code) {
8,423!
155
    code = collectMetaKeyFromInsTagsImpl(pCxt, &name);
8,423✔
156
  }
157
  return code;
8,424✔
158
}
159

160
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
1,085,287✔
161
                                               AUTH_TYPE authType) {
162
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
1,085,287✔
163
  if (TSDB_CODE_SUCCESS == code) {
1,085,334!
164
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
1,085,335✔
165
  }
166
  if (TSDB_CODE_SUCCESS == code) {
1,085,333!
167
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, authType,
1,085,335✔
168
                                  pCxt->pMetaCache);
169
  }
170
#ifdef TD_ENTERPRISE
171
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
1,085,330!
172
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, authType,
438✔
173
                                  pCxt->pMetaCache);
174
  }
175
#endif
176
  if (TSDB_CODE_SUCCESS == code) {
1,085,330✔
177
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
1,085,326✔
178
  }
179
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
1,085,337✔
180
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
7,419✔
181
  }
182
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
1,085,323✔
183
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
15✔
184
  }
185
  if (TSDB_CODE_SUCCESS == code &&
1,085,323✔
186
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
1,085,306✔
187
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_DISK_USAGE)) &&
1,083,713✔
188
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
8,430✔
189
    code = collectMetaKeyFromInsTags(pCxt);
8,424✔
190
  }
191
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
1,085,323✔
192
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
13,221✔
193
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
13,220✔
194
  }
195
  return code;
1,085,322✔
196
}
197

198
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
1,022,356✔
199
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
1,022,356✔
200
                                                  AUTH_TYPE_READ);
201
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
1,022,388!
202
}
203

204
static EDealRes collectMetaKeyFromTempTable(SCollectMetaKeyFromExprCxt* pCxt, STempTableNode* pTempTable) {
303,901✔
205
  pCxt->errCode = collectMetaKeyFromQuery(pCxt->pComCxt, pTempTable->pSubquery);
303,901✔
206
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
303,902!
207
}
208

209
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
1,139,002✔
210
  if (pOperator->opType != OP_TYPE_EQUAL) {
1,139,002✔
211
    return TSDB_CODE_SUCCESS;
1,060,146✔
212
  }
213

214
  SValueNode* pValueNode = NULL;
78,856✔
215
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
78,856✔
216
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
21,566✔
217
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
7,452✔
218
    pValueNode = (SValueNode*)pOperator->pRight;
7,447✔
219
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
71,409✔
220
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
327✔
221
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
5!
222
    pValueNode = (SValueNode*)pOperator->pLeft;
×
223
  } else {
224
    return TSDB_CODE_SUCCESS;
71,409✔
225
  }
226

227
  *ppTableName = pValueNode->literal;
7,447✔
228

229
  return TSDB_CODE_SUCCESS;
7,447✔
230
}
231

232
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
1,804,164✔
233
  if (!pCxt->tbnameCollect) {
1,804,164✔
234
    return DEAL_RES_CONTINUE;
665,162✔
235
  }
236

237
  char*   pTableName = NULL;
1,139,002✔
238
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
1,139,002✔
239
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
1,139,007!
240
  if (pTableName) {
1,139,007✔
241
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
7,447✔
242
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
7,447✔
243
                                                    pTableName, AUTH_TYPE_READ);
244
  }
245

246
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
1,139,007!
247
}
248

249
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
17,764,245✔
250
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
17,764,245✔
251
  switch (nodeType(pNode)) {
17,764,245✔
252
    case QUERY_NODE_FUNCTION:
2,995,410✔
253
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
2,995,410✔
254
    case QUERY_NODE_REAL_TABLE:
1,022,372✔
255
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
1,022,372✔
256
    case QUERY_NODE_TEMP_TABLE:
303,901✔
257
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
303,901✔
258
    case QUERY_NODE_OPERATOR:
1,804,191✔
259
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
1,804,191✔
260
    default:
11,638,371✔
261
      break;
11,638,371✔
262
  }
263
  return DEAL_RES_CONTINUE;
11,638,371✔
264
}
265

266
static int32_t collectMetaKeyFromExprs(SCollectMetaKeyCxt* pCxt, SNodeList* pList) {
81,378✔
267
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .errCode = TSDB_CODE_SUCCESS, .tbnameCollect = false};
81,378✔
268
  nodesWalkExprs(pList, collectMetaKeyFromExprImpl, &cxt);
81,378✔
269
  return cxt.errCode;
81,378✔
270
}
271

272
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt) {
81,378✔
273
  int32_t code = collectMetaKeyFromQuery(pCxt, pStmt->pLeft);
81,378✔
274
  if (TSDB_CODE_SUCCESS == code) {
81,378!
275
    code = collectMetaKeyFromQuery(pCxt, pStmt->pRight);
81,378✔
276
  }
277
  if (TSDB_CODE_SUCCESS == code) {
81,378!
278
    code = collectMetaKeyFromExprs(pCxt, pStmt->pOrderByList);
81,378✔
279
  }
280
  return code;
81,378✔
281
}
282

283
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
20,462✔
284
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
20,462!
285
    return TSDB_CODE_SUCCESS;
5,191✔
286
  }
287
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
15,271✔
288
}
289

290
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
1,283,273✔
291
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
1,283,273✔
292
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
1,283,273✔
293
    cxt.tbnameCollect = true;
783,711✔
294
  }
295
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
1,283,273✔
296
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
1,283,299!
297
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
20,202✔
298
  }
299
  return cxt.errCode;
1,283,302✔
300
}
301

302
static int32_t collectMetaKeyFromAlterDatabase(SCollectMetaKeyCxt* pCxt, SAlterDatabaseStmt* pStmt) {
116✔
303
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
116✔
304
}
305

306
static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) {
9,581✔
307
  return reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,581✔
308
}
309

310
static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) {
17,680✔
311
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
17,680✔
312
  if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) {
17,680!
313
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
12,611✔
314
  }
315
  if (TSDB_CODE_SUCCESS == code) {
17,680!
316
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
17,680✔
317
                                  pCxt->pMetaCache);
318
  }
319
  return code;
17,680✔
320
}
321

322
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
35,656✔
323
  int32_t code = TSDB_CODE_SUCCESS;
35,656✔
324
  SNode*  pNode = NULL;
35,656✔
325
  FOREACH(pNode, pStmt->pSubTables) {
104,949!
326
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
69,292!
327
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
69,292✔
328
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
69,292✔
329
      if (TSDB_CODE_SUCCESS == code) {
69,292!
330
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
69,292✔
331
                                       pCxt->pMetaCache);
332
      }
333
      if (TSDB_CODE_SUCCESS == code) {
69,296!
334
        code =
335
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
69,297✔
336
      }
337
      if (TSDB_CODE_SUCCESS == code) {
69,309!
338
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
69,310✔
339
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
340
      }
341
    } else {
342
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
343
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
344
      if (TSDB_CODE_SUCCESS == code) {
×
345
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
346
                                       pCxt->pMetaCache);
347
      }
348
      if (TSDB_CODE_SUCCESS == code) {
×
349
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
350
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
351
      }
352
    }
353

354
    if (TSDB_CODE_SUCCESS != code) {
69,293!
355
      break;
×
356
    }
357
  }
358
  return code;
35,657✔
359
}
360

361
static int32_t collectMetaKeyFromCreateSubTableFromFile(SCollectMetaKeyCxt*            pCxt,
×
362
                                                        SCreateSubTableFromFileClause* pClause) {
363
  int32_t code = TSDB_CODE_SUCCESS;
×
364
  SNode*  pNode = NULL;
×
365

366
  code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
367
  if (TSDB_CODE_SUCCESS == code) {
×
368
    code =
369
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, pCxt->pMetaCache);
×
370
  }
371
  if (TSDB_CODE_SUCCESS == code) {
×
372
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
373
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
374
  }
375

376
  return code;
×
377
}
378

379
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
3,206✔
380
  int32_t code = TSDB_CODE_SUCCESS;
3,206✔
381
  SNode*  pNode = NULL;
3,206✔
382
  FOREACH(pNode, pStmt->pTables) {
7,320!
383
    SDropTableClause* pClause = (SDropTableClause*)pNode;
4,114✔
384
    if (pStmt->withOpt) {
4,114✔
385
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,026✔
386
      if (TSDB_CODE_SUCCESS == code) {
1,026!
387
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
1,026✔
388
      }
389
      if (TSDB_CODE_SUCCESS == code) {
1,026!
390
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
1,026✔
391
      }
392
    } else {
393
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
3,088✔
394
      if (TSDB_CODE_SUCCESS == code) {
3,088!
395
        code =
396
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
3,088✔
397
      }
398
      if (TSDB_CODE_SUCCESS == code) {
3,088!
399
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
3,088✔
400
                                      pClause->tableName, AUTH_TYPE_WRITE, pCxt->pMetaCache);
3,088✔
401
      }
402
    }
403
    if (TSDB_CODE_SUCCESS != code) {
4,114!
404
      break;
×
405
    }
406
  }
407
  return code;
3,206✔
408
}
409

410
static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) {
314✔
411
  if (pStmt->withOpt) {
314✔
412
    return reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
293✔
413
  }
414
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
21✔
415
                                AUTH_TYPE_WRITE, pCxt->pMetaCache);
416
}
417

418
static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
2,111✔
419
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
2,111✔
420
  if (TSDB_CODE_SUCCESS == code) {
2,111!
421
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
2,111✔
422
  }
423
  if (TSDB_CODE_SUCCESS == code) {
2,111!
424
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
2,111✔
425
  }
426
  if (TSDB_CODE_SUCCESS == code) {
2,111!
427
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
2,111✔
428
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
429
  }
430
  return code;
2,111✔
431
}
432

433
static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
316✔
434
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
316✔
435
  if (TSDB_CODE_SUCCESS == code) {
316!
436
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
316✔
437
  }
438
  if (TSDB_CODE_SUCCESS == code) {
316!
439
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
316✔
440
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
441
  }
442
  return code;
316✔
443
}
444

445
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
9,243✔
446
  return reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,243✔
447
}
448

449
static int32_t collectMetaKeyFromCreateIndex(SCollectMetaKeyCxt* pCxt, SCreateIndexStmt* pStmt) {
64✔
450
  int32_t code = TSDB_CODE_SUCCESS;
64✔
451
  if (INDEX_TYPE_SMA == pStmt->indexType || INDEX_TYPE_NORMAL == pStmt->indexType) {
64!
452
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
64✔
453
    if (TSDB_CODE_SUCCESS == code) {
64!
454
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
64✔
455
    }
456
    if (TSDB_CODE_SUCCESS == code) {
64!
457
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
64✔
458
    }
459
    if (TSDB_CODE_SUCCESS == code) {
64!
460
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
64✔
461
    }
462
  }
463
  return code;
64✔
464
}
465

466
static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) {
598✔
467
  if (NULL != pStmt->pQuery) {
598✔
468
    return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
487✔
469
  }
470
  if (NULL != pStmt->pWhere) {
111✔
471
    int32_t code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, AUTH_TYPE_READ);
17✔
472
    return code;
17✔
473
  }
474
  return TSDB_CODE_SUCCESS;
94✔
475
}
476

477
static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) {
110,923✔
478
  return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
110,923✔
479
}
480

481
static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStmt* pStmt) {
1,118✔
482
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
1,118✔
483
  strcpy(name.dbname, pStmt->dbName);
1,118✔
484
  strcpy(name.tname, pStmt->tableName);
1,118✔
485
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
1,118✔
486
#ifdef TD_ENTERPRISE
487
  if (TSDB_CODE_SUCCESS == code) {
1,118!
488
    char dbFName[TSDB_DB_FNAME_LEN];
489
    (void)tNameGetFullDbName(&name, dbFName);
1,118✔
490
    code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->tableName, 0);
1,118✔
491
  }
492
#endif
493
  if (TSDB_CODE_SUCCESS == code) {
1,118!
494
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
1,118✔
495
  }
496
  return code;
1,118✔
497
}
498

499
static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) {
934✔
500
  int32_t code =
501
      reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache);
934✔
502
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pSubtable && NULL != pStmt->pQuery) {
934!
503
    SSelectStmt* pSelect = (SSelectStmt*)pStmt->pQuery;
276✔
504
    int32_t      code = nodesCloneNode(pStmt->pSubtable, &pSelect->pSubtable);
276✔
505
    if (NULL == pSelect->pSubtable) {
276!
506
      return code;
×
507
    }
508
  }
509
  if (TSDB_CODE_SUCCESS == code) {
934!
510
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
934✔
511
  }
512
  if (TSDB_CODE_SUCCESS == code && pStmt->pOptions->fillHistory) {
934!
513
    SSelectStmt* pSelect = (SSelectStmt*)pStmt->pQuery;
261✔
514
    code = reserveDbCfgForLastRow(pCxt, pSelect->pFromTable);
261✔
515
  }
516
  return code;
934✔
517
}
518

519
static int32_t collectMetaKeyFromShowDnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
87✔
520
  if (pCxt->pParseCxt->enableSysInfo) {
87✔
521
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DNODES,
83✔
522
                                   pCxt->pMetaCache);
523
  }
524
  return TSDB_CODE_SUCCESS;
4✔
525
}
526

527
static int32_t collectMetaKeyFromShowMnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
10✔
528
  if (pCxt->pParseCxt->enableSysInfo) {
10✔
529
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MNODES,
6✔
530
                                   pCxt->pMetaCache);
531
  }
532
  return TSDB_CODE_SUCCESS;
4✔
533
}
534

535
static int32_t collectMetaKeyFromShowModules(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
536
  if (pCxt->pParseCxt->enableSysInfo) {
×
537
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MODULES,
×
538
                                   pCxt->pMetaCache);
539
  }
540
  return TSDB_CODE_SUCCESS;
×
541
}
542

543
static int32_t collectMetaKeyFromShowQnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
19✔
544
  if (pCxt->pParseCxt->enableSysInfo) {
19✔
545
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_QNODES,
15✔
546
                                   pCxt->pMetaCache);
547
  }
548
  return TSDB_CODE_SUCCESS;
4✔
549
}
550

551
static int32_t collectMetaKeyFromShowSnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
35✔
552
  if (pCxt->pParseCxt->enableSysInfo) {
35✔
553
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SNODES,
27✔
554
                                   pCxt->pMetaCache);
555
  }
556
  return TSDB_CODE_SUCCESS;
8✔
557
}
558

559
static int32_t collectMetaKeyFromShowAnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
560
  if (pCxt->pParseCxt->enableSysInfo) {
×
561
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES,
×
562
                                   pCxt->pMetaCache);
563
  }
564
  return TSDB_CODE_SUCCESS;
×
565
}
566

567
static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
568
  if (pCxt->pParseCxt->enableSysInfo) {
×
569
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES_FULL,
×
570
                                   pCxt->pMetaCache);
571
  }
572
  return TSDB_CODE_SUCCESS;
×
573
}
574

575
static int32_t collectMetaKeyFromShowBnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
576
  if (pCxt->pParseCxt->enableSysInfo) {
×
577
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BNODES,
×
578
                                   pCxt->pMetaCache);
579
  }
580
  return TSDB_CODE_SUCCESS;
×
581
}
582

583
static int32_t collectMetaKeyFromShowArbGroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
584
  if (pCxt->pParseCxt->enableSysInfo) {
×
585
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ARBGROUPS,
×
586
                                   pCxt->pMetaCache);
587
  }
588
  return TSDB_CODE_SUCCESS;
×
589
}
590

591
static int32_t collectMetaKeyFromShowCluster(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8✔
592
  if (pCxt->pParseCxt->enableSysInfo) {
8✔
593
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CLUSTER,
4✔
594
                                   pCxt->pMetaCache);
595
  }
596
  return TSDB_CODE_SUCCESS;
4✔
597
}
598

599
static int32_t collectMetaKeyFromShowDatabases(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
244✔
600
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DATABASES,
244✔
601
                                 pCxt->pMetaCache);
602
}
603

604
static int32_t collectMetaKeyFromShowFunctions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
16✔
605
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FUNCTIONS,
16✔
606
                                 pCxt->pMetaCache);
607
}
608

609
static int32_t collectMetaKeyFromShowIndexes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
19✔
610
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_INDEXES,
19✔
611
                                 pCxt->pMetaCache);
612
}
613

614
static int32_t collectMetaKeyFromShowStables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
215✔
615
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STABLES,
215✔
616
                                         pCxt->pMetaCache);
617
  if (TSDB_CODE_SUCCESS == code) {
215!
618
    code =
619
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
215✔
620
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
621
  }
622
  return code;
215✔
623
}
624

625
static int32_t collectMetaKeyFromShowStreams(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
202✔
626
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STREAMS,
202✔
627
                                 pCxt->pMetaCache);
628
}
629

630
static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,152✔
631
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TABLES,
1,152✔
632
                                         pCxt->pMetaCache);
633
  if (TSDB_CODE_SUCCESS == code) {
1,152!
634
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
1,152✔
635
  }
636
  if (TSDB_CODE_SUCCESS == code) {
1,152!
637
    code =
638
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
1,152✔
639
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
640
  }
641
  return code;
1,152✔
642
}
643

644
static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
803✔
645
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS,
803✔
646
                                         pCxt->pMetaCache);
647
  if (TSDB_CODE_SUCCESS == code) {
803!
648
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
803✔
649
                                   ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
803✔
650
  }
651
  if (TSDB_CODE_SUCCESS == code) {
803!
652
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
803✔
653
  }
654
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) {
803!
655
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
803✔
656
                                     ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
803✔
657
  }
658
  return code;
803✔
659
}
660

661
static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) {
4✔
662
  return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal,
8✔
663
                                         ((SValueNode*)pStmt->pTbName)->literal, AUTH_TYPE_READ);
4✔
664
}
665

666
static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
13✔
667
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS,
13✔
668
                                 pCxt->pMetaCache);
669
}
670

671
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
672
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL,
×
673
                                 pCxt->pMetaCache);
674
}
675

676
static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
12✔
677
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES,
12✔
678
                                 pCxt->pMetaCache);
679
}
680

681
static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
490✔
682
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
490✔
683
                                         pCxt->pMetaCache);
684
  if (TSDB_CODE_SUCCESS == code) {
490!
685
    // just to verify whether the database exists
686
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
490✔
687
  }
688
  return code;
490✔
689
}
690

691
static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
30✔
692
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS,
30✔
693
                                 pCxt->pMetaCache);
694
}
695

696
static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
53✔
697
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONSUMERS,
53✔
698
                                 pCxt->pMetaCache);
699
}
700

701
static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
702
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONNECTIONS,
7✔
703
                                 pCxt->pMetaCache);
704
}
705

706
static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
707
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES,
7✔
708
                                 pCxt->pMetaCache);
709
}
710

711
static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
10✔
712
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS,
10✔
713
                                 pCxt->pMetaCache);
714
}
715

716
static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) {
14✔
717
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
14✔
718
                                         TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache);
719
  if (TSDB_CODE_SUCCESS == code) {
14!
720
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
14✔
721
  }
722
  return code;
14✔
723
}
724

725
static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) {
11✔
726
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES,
11✔
727
                                 pCxt->pMetaCache);
728
}
729

730
static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
14✔
731
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USER_PRIVILEGES,
14✔
732
                                 pCxt->pMetaCache);
733
}
734

735
static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
18✔
736
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS,
18✔
737
                                         pCxt->pMetaCache);
738
  if (TSDB_CODE_SUCCESS == code) {
18!
739
    code =
740
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
18✔
741
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
742
  }
743
  return code;
18✔
744
}
745

746
static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
110✔
747
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS,
110✔
748
                                         pCxt->pMetaCache);
749
  return code;
110✔
750
}
751

752
static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1✔
753
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1✔
754
                                         TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache);
755
  return code;
1✔
756
}
757

758
static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
759
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_FULL,
7✔
760
                                 pCxt->pMetaCache);
761
}
762

763
static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
764
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_LOGS,
7✔
765
                                 pCxt->pMetaCache);
766
}
767

768
static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8✔
769
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES,
8✔
770
                                 pCxt->pMetaCache);
771
}
772

773
static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
774
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS,
×
775
                                 pCxt->pMetaCache);
776
}
777

778
static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) {
22✔
779
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
22✔
780
}
781

782
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
98✔
783
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
98✔
784
  strcpy(name.dbname, pStmt->dbName);
98✔
785
  strcpy(name.tname, pStmt->tableName);
98✔
786
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
98✔
787
  if (TSDB_CODE_SUCCESS == code) {
98!
788
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
98✔
789
  }
790
  if (TSDB_CODE_SUCCESS == code) {
98!
791
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
98✔
792
  }
793
  if (TSDB_CODE_SUCCESS == code) {
98!
794
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
98✔
795
                                  AUTH_TYPE_READ, pCxt->pMetaCache);
796
  }
797
  return code;
98✔
798
}
799

800
static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) {
12✔
801
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
12✔
802
  strcpy(name.dbname, pStmt->dbName);
12✔
803
  strcpy(name.tname, pStmt->viewName);
12✔
804
  char dbFName[TSDB_DB_FNAME_LEN];
805
  (void)tNameGetFullDbName(&name, dbFName);
12✔
806
  int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0);
12✔
807
  if (TSDB_CODE_SUCCESS == code) {
12!
808
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
12✔
809
                                      AUTH_TYPE_READ, pCxt->pMetaCache);
810
  }
811
  if (TSDB_CODE_SUCCESS == code) {
12!
812
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
12✔
813
  }
814
  pCxt->pMetaCache->forceFetchViewMeta = true;
12✔
815
  return code;
12✔
816
}
817

818
static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
819
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS,
7✔
820
                                 pCxt->pMetaCache);
821
}
822

823
static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
376✔
824
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
376✔
825
                                 pCxt->pMetaCache);
826
}
827

828
static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) {
55,344✔
829
  STableNode* pTable = (STableNode*)pStmt->pFromTable;
55,344✔
830
  return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
55,344✔
831
}
832

833
static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) {
111✔
834
  STableNode* pTable = (STableNode*)pStmt->pTable;
111✔
835
  int32_t     code = collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
111✔
836
  if (TSDB_CODE_SUCCESS == code) {
111!
837
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
111✔
838
  }
839
  return code;
111✔
840
}
841

842
static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) {
7✔
843
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
7✔
844
  strcpy(name.dbname, pStmt->dbName);
7✔
845
  strcpy(name.tname, pStmt->tableName);
7✔
846
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
7✔
847
  if (TSDB_CODE_SUCCESS == code) {
7!
848
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, AUTH_TYPE_READ);
7✔
849
  }
850
  return code;
7✔
851
}
852

853
static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
75✔
854
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS,
75✔
855
                                 pCxt->pMetaCache);
856
}
857

858
static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) {
12✔
859
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
12✔
860
}
861

862
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
153✔
863
  if ('\0' == pStmt->tabName[0]) {
153✔
864
    return TSDB_CODE_SUCCESS;
94✔
865
  }
866
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
59✔
867
}
868

869
static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) {
69✔
870
  if ('\0' == pStmt->tabName[0]) {
69✔
871
    return TSDB_CODE_SUCCESS;
56✔
872
  }
873
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
13✔
874
}
875

876
static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) {
177✔
877
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
177✔
878
  if (TSDB_CODE_SUCCESS == code) {
177!
879
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
177✔
880
                                  pCxt->pMetaCache);
881
  }
882
  if (TSDB_CODE_SUCCESS == code) {
177!
883
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
177✔
884
                                      AUTH_TYPE_ALTER, pCxt->pMetaCache);
885
  }
886
  return code;
177✔
887
}
888

889
static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) {
118✔
890
  int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
118✔
891
                                            pStmt->viewName, AUTH_TYPE_ALTER, pCxt->pMetaCache);
118✔
892
  pCxt->pMetaCache->forceFetchViewMeta = true;
118✔
893
  return code;
118✔
894
}
895

896
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
360✔
897
  int32_t code;
898
  if (pStmt->pOptions->recursiveTsma) {
360✔
899
    // if creating recursive tsma, the tablename is tsmaName
900
    code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
128✔
901
    if (TSDB_CODE_SUCCESS == code) {
128!
902
      char dstTbName[TSDB_TABLE_NAME_LEN] = {0};
128✔
903
      snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName);
128✔
904
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
128✔
905
      if (TSDB_CODE_SUCCESS == code) {
128!
906
        code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
128✔
907
      }
908
    }
909
  } else {
910
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
232✔
911
    if (TSDB_CODE_SUCCESS == code) {
232!
912
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
232✔
913
    }
914
  }
915
  if (TSDB_CODE_SUCCESS == code) {
360!
916
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
360✔
917
  }
918
  if (TSDB_CODE_SUCCESS == code) {
360!
919
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
360✔
920
  }
921
  return code;
360✔
922
}
923

924
static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) {
176✔
925
  int32_t code;
926
  code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache);
176✔
927
  if (TSDB_CODE_SUCCESS == code) {
176!
928
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
176✔
929
  }
930
  if (TSDB_CODE_SUCCESS == code) {
176!
931
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
176✔
932
  }
933
  return code;
176✔
934
}
935

936
static int32_t collectMetaKeyFromShowUsage(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1✔
937
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_DISK_USAGE,
1✔
938
                                         pCxt->pMetaCache);
939
  if (TSDB_CODE_SUCCESS == code) {
1!
940
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
1✔
941
  }
942
  if (TSDB_CODE_SUCCESS == code) {
1!
943
    code =
944
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
1✔
945
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
946
  }
947
  return code;
1✔
948
}
949

950
static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2✔
951
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS,
2✔
952
                                 pCxt->pMetaCache);
953
}
954

955
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
27✔
956
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
27✔
957
                                         pCxt->pMetaCache);
958
  if (TSDB_CODE_SUCCESS == code) {
27!
959
    // just to verify whether the database exists
960
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
27✔
961
  }
962
  return code;
27✔
963
}
964

965
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
1,650,583✔
966
  pCxt->pStmt = pStmt;
1,650,583✔
967
  switch (nodeType(pStmt)) {
1,650,583!
968
    case QUERY_NODE_SET_OPERATOR:
81,378✔
969
      return collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
81,378✔
970
    case QUERY_NODE_SELECT_STMT:
1,283,281✔
971
      return collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
1,283,281✔
972
    case QUERY_NODE_ALTER_DATABASE_STMT:
116✔
973
      return collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
116✔
974
    case QUERY_NODE_FLUSH_DATABASE_STMT:
9,581✔
975
      return collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
9,581✔
976
    case QUERY_NODE_CREATE_TABLE_STMT:
17,680✔
977
      return collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
17,680✔
978
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
35,657✔
979
      return collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
35,657✔
980
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
×
981
      return collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
×
982
    case QUERY_NODE_DROP_TABLE_STMT:
3,206✔
983
      return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
3,206✔
984
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
314✔
985
      return collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
314✔
986
    case QUERY_NODE_ALTER_TABLE_STMT:
2,111✔
987
      return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
2,111✔
988
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
316✔
989
      return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
316✔
990
    case QUERY_NODE_USE_DATABASE_STMT:
9,244✔
991
      return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
9,244✔
992
    case QUERY_NODE_CREATE_INDEX_STMT:
64✔
993
      return collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
64✔
994
    case QUERY_NODE_CREATE_TOPIC_STMT:
598✔
995
      return collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
598✔
996
    case QUERY_NODE_EXPLAIN_STMT:
110,923✔
997
      return collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
110,923✔
998
    case QUERY_NODE_DESCRIBE_STMT:
1,118✔
999
      return collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
1,118✔
1000
    case QUERY_NODE_COMPACT_DATABASE_STMT:
12✔
1001
      return collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
12✔
1002
    case QUERY_NODE_CREATE_STREAM_STMT:
934✔
1003
      return collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
934✔
1004
    case QUERY_NODE_GRANT_STMT:
153✔
1005
      return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
153✔
1006
    case QUERY_NODE_REVOKE_STMT:
69✔
1007
      return collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
69✔
1008
    case QUERY_NODE_SHOW_DNODES_STMT:
87✔
1009
      return collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
87✔
1010
    case QUERY_NODE_SHOW_MNODES_STMT:
10✔
1011
      return collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
10✔
1012
    case QUERY_NODE_SHOW_MODULES_STMT:
×
1013
      return collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
1014
    case QUERY_NODE_SHOW_QNODES_STMT:
19✔
1015
      return collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
19✔
1016
    case QUERY_NODE_SHOW_SNODES_STMT:
35✔
1017
      return collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
35✔
1018
    case QUERY_NODE_SHOW_ANODES_STMT:
×
1019
      return collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
×
1020
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
1021
      return collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
1022
    case QUERY_NODE_SHOW_BNODES_STMT:
×
1023
      return collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
×
1024
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
1025
      return collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
×
1026
    case QUERY_NODE_SHOW_CLUSTER_STMT:
8✔
1027
      return collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
8✔
1028
    case QUERY_NODE_SHOW_DATABASES_STMT:
244✔
1029
      return collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
244✔
1030
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
16✔
1031
      return collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
16✔
1032
    case QUERY_NODE_SHOW_INDEXES_STMT:
19✔
1033
      return collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
19✔
1034
    case QUERY_NODE_SHOW_STABLES_STMT:
215✔
1035
      return collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
215✔
1036
    case QUERY_NODE_SHOW_STREAMS_STMT:
202✔
1037
      return collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
202✔
1038
    case QUERY_NODE_SHOW_TABLES_STMT:
1,152✔
1039
      return collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
1,152✔
1040
    case QUERY_NODE_SHOW_TAGS_STMT:
803✔
1041
      return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
803✔
1042
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
4✔
1043
      return collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
4✔
1044
    case QUERY_NODE_SHOW_USERS_STMT:
13✔
1045
      return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
13✔
1046
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
1047
      return collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
1048
    case QUERY_NODE_SHOW_LICENCES_STMT:
12✔
1049
      return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
12✔
1050
    case QUERY_NODE_SHOW_VGROUPS_STMT:
490✔
1051
      return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
490✔
1052
    case QUERY_NODE_SHOW_TOPICS_STMT:
30✔
1053
      return collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
30✔
1054
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
53✔
1055
      return collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
53✔
1056
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
7✔
1057
      return collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
7✔
1058
    case QUERY_NODE_SHOW_QUERIES_STMT:
7✔
1059
      return collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
7✔
1060
    case QUERY_NODE_SHOW_VARIABLES_STMT:
10✔
1061
      return collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
10✔
1062
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
14✔
1063
      return collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
14✔
1064
    case QUERY_NODE_SHOW_VNODES_STMT:
11✔
1065
      return collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
11✔
1066
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
14✔
1067
      return collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
14✔
1068
    case QUERY_NODE_SHOW_VIEWS_STMT:
18✔
1069
      return collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
18✔
1070
    case QUERY_NODE_SHOW_COMPACTS_STMT:
110✔
1071
      return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
110✔
1072
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
1✔
1073
      return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
1✔
1074
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
7✔
1075
      return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
7✔
1076
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
7✔
1077
      return collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
7✔
1078
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
8✔
1079
      return collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
8✔
1080
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
1081
      return collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
×
1082
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
22✔
1083
      return collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
22✔
1084
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
98✔
1085
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
1086
      return collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
98✔
1087
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
12✔
1088
      return collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
12✔
1089
    case QUERY_NODE_SHOW_APPS_STMT:
7✔
1090
      return collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
7✔
1091
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
376✔
1092
      return collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
376✔
1093
    case QUERY_NODE_SHOW_USAGE_STMT:
1✔
1094
      return collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
1✔
1095
    case QUERY_NODE_DELETE_STMT:
55,342✔
1096
      return collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
55,342✔
1097
    case QUERY_NODE_INSERT_STMT:
111✔
1098
      return collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
111✔
1099
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
7✔
1100
      return collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
7✔
1101
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
75✔
1102
      return collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
75✔
1103
    case QUERY_NODE_CREATE_VIEW_STMT:
177✔
1104
      return collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
177✔
1105
    case QUERY_NODE_DROP_VIEW_STMT:
118✔
1106
      return collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
118✔
1107
    case QUERY_NODE_CREATE_TSMA_STMT:
360✔
1108
      return collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
360✔
1109
    case QUERY_NODE_DROP_TSMA_STMT:
176✔
1110
      return collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
176✔
1111
      break;
1112
    case QUERY_NODE_SHOW_TSMAS_STMT:
2✔
1113
      return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
2✔
1114
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
27✔
1115
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
1116
      return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
27✔
1117
    default:
33,291✔
1118
      break;
33,291✔
1119
  }
1120
  return TSDB_CODE_SUCCESS;
33,291✔
1121
}
1122

1123
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
1,071,458✔
1124
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
1,071,458✔
1125
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
1,071,458✔
1126
}
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