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

taosdata / TDengine / #4794

15 Oct 2025 11:06AM UTC coverage: 60.905% (-0.001%) from 60.906%
#4794

push

travis-ci

web-flow
Merge c54016657 into 7e74ade39

154617 of 324341 branches covered (47.67%)

Branch coverage included in aggregate %.

54 of 65 new or added lines in 13 files covered. (83.08%)

2506 existing lines in 114 files now uncovered.

207077 of 269525 relevant lines covered (76.83%)

125143530.79 hits per line

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

81.61
/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) {
201,033,353✔
33
  *pQuery = NULL;
201,033,353✔
34
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
201,034,980✔
35
  if (NULL == *pQuery) {
201,040,982!
36
    return code;
×
37
  }
38
  (*pQuery)->pRoot = pRootNode;
201,041,415✔
39
  (*pQuery)->placeholderNum = placeholderNo;
201,038,301✔
40
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
201,040,970✔
41
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
201,025,779✔
42

43
  return TSDB_CODE_SUCCESS;
201,038,304✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
207,005,109✔
47
  SAstCreateContext cxt;
202,180,946✔
48
  initAstCreateContext(pParseCxt, &cxt);
207,008,308✔
49
  void* pParser = ParseAlloc((FMalloc)taosMemMalloc);
207,003,111✔
50
  if (!pParser) return terrno;
207,002,413!
51
  int32_t i = 0;
207,002,413✔
52
  while (1) {
2,147,483,647✔
53
    SToken t0 = {0};
2,147,483,647✔
54
    if (cxt.pQueryCxt->pSql[i] == 0) {
2,147,483,647✔
55
      Parse(pParser, 0, t0, &cxt);
163,663,281✔
56
      goto abort_parse;
164,133,594✔
57
    }
58
    if (!pParseCxt->hasDupQuoteChar) {
2,147,483,647✔
59
      char dupQuoteChar = 0;
2,147,483,647✔
60
      t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, &dupQuoteChar);
2,147,483,647✔
61
      if (dupQuoteChar) pParseCxt->hasDupQuoteChar = true;
2,147,483,647✔
62
    } else {
63
      t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, NULL);
369,054✔
64
    }
65
    t0.z = (char*)(cxt.pQueryCxt->pSql + i);
2,147,483,647✔
66
    i += t0.n;
2,147,483,647✔
67

68
    switch (t0.type) {
2,147,483,647!
69
      case TK_NK_SPACE:
2,147,483,647✔
70
      case TK_NK_COMMENT: {
71
        break;
2,147,483,647✔
72
      }
73
      case TK_NK_SEMI: {
37,923,685✔
74
        Parse(pParser, 0, t0, &cxt);
37,923,685✔
75
        goto abort_parse;
37,924,020✔
76
      }
77
      case TK_NK_ILLEGAL: {
376,819✔
78
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
376,819!
79
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
376,819✔
80
        goto abort_parse;
376,819✔
81
      }
82
      case TK_NK_OCT: {
×
83
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unsupported token: \"%s\"", t0.z);
×
84
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
×
85
        goto abort_parse;
×
86
      }
87
      default:
2,147,483,647✔
88
        // ParseTrace(stdout, "");
89
        Parse(pParser, t0.type, t0, &cxt);
2,147,483,647✔
90
        if (TSDB_CODE_SUCCESS != cxt.errCode) {
2,147,483,647✔
91
          goto abort_parse;
5,093,096✔
92
        }
93
    }
94
  }
95

96
abort_parse:
207,046,788✔
97
  ParseFree(pParser, (FFree)taosAutoMemoryFree);
207,049,990✔
98
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
206,998,589✔
99
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
201,028,604✔
100
    if (TSDB_CODE_SUCCESS != code) {
201,022,272!
101
      return code;
×
102
    }
103
  }
104
  taosArrayDestroy(cxt.pPlaceholderValues);
206,992,257✔
105
  return cxt.errCode;
206,994,576✔
106
}
107

108
typedef struct SCollectMetaKeyCxt {
109
  SParseContext*   pParseCxt;
110
  SParseMetaCache* pMetaCache;
111
  SNode*           pStmt;
112
  bool             collectVStbRefDbs;
113
} SCollectMetaKeyCxt;
114

115
typedef struct SCollectMetaKeyFromExprCxt {
116
  SCollectMetaKeyCxt* pComCxt;
117
  bool                hasLastRowOrLast;
118
  bool                tbnameCollect;
119
  int32_t             errCode;
120
} SCollectMetaKeyFromExprCxt;
121

122
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt);
123

124
static EDealRes collectMetaKeyFromFunction(SCollectMetaKeyFromExprCxt* pCxt, SFunctionNode* pFunc) {
287,716,318✔
125
  switch (fmGetFuncType(pFunc->functionName)) {
287,716,318✔
126
    case FUNCTION_TYPE_LAST_ROW:
8,527,282✔
127
    case FUNCTION_TYPE_LAST:
128
      pCxt->hasLastRowOrLast = true;
8,527,282✔
129
      break;
8,527,282✔
130
    case FUNCTION_TYPE_UDF:
87,550✔
131
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
87,550✔
132
      break;
87,550✔
133
    default:
279,103,839✔
134
      break;
279,103,839✔
135
  }
136
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
287,718,671!
137
}
138

139
static bool needGetTableIndex(SNode* pStmt) {
135,703,676✔
140
  return false;
135,703,676✔
141
  if (QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && QUERY_NODE_SELECT_STMT == nodeType(pStmt)) {
142
    SSelectStmt* pSelect = (SSelectStmt*)pStmt;
143
    return (NULL != pSelect->pWindow && QUERY_NODE_INTERVAL_WINDOW == nodeType(pSelect->pWindow));
144
  }
145
  return false;
146
}
147

148
static int32_t collectMetaKeyFromInsTagsImpl(SCollectMetaKeyCxt* pCxt, SName* pName) {
1,448,458✔
149
  if (0 == pName->type) {
1,448,458✔
150
    return TSDB_CODE_SUCCESS;
561,559✔
151
  }
152
  if (TSDB_DB_NAME_T == pName->type) {
886,899✔
153
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
369,835✔
154
  }
155
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
517,064✔
156
}
157

158
static int32_t collectMetaKeyFromInsTags(SCollectMetaKeyCxt* pCxt) {
1,448,458✔
159
  SSelectStmt* pSelect = (SSelectStmt*)pCxt->pStmt;
1,448,458✔
160
  SName        name = {0};
1,448,458✔
161
  int32_t      code = getVnodeSysTableTargetName(pCxt->pParseCxt->acctId, pSelect->pWhere, &name);
1,448,458✔
162
  if (TSDB_CODE_SUCCESS == code) {
1,448,458!
163
    code = collectMetaKeyFromInsTagsImpl(pCxt, &name);
1,448,458✔
164
  }
165
  return code;
1,448,458✔
166
}
167

168
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
135,702,647✔
169
                                               AUTH_TYPE authType) {
170
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
135,702,647✔
171
  if (TSDB_CODE_SUCCESS == code) {
135,703,921!
172
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
135,703,921✔
173
  }
174
  if (TSDB_CODE_SUCCESS == code) {
135,705,658✔
175
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, authType,
135,705,577✔
176
                                  pCxt->pMetaCache);
177
  }
178
#ifdef TD_ENTERPRISE
179
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
135,704,291✔
180
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, authType,
401,137✔
181
                                  pCxt->pMetaCache);
182
  }
183
#endif
184
  if (TSDB_CODE_SUCCESS == code) {
135,703,135✔
185
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
135,702,972✔
186
  }
187
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
135,705,821!
188
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
×
189
  }
190
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
135,703,425!
191
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
7,993✔
192
  }
193
  if (TSDB_CODE_SUCCESS == code &&
135,702,876✔
194
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
135,702,712!
195
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_TABLE_VC_COLS) ||
134,756,158!
196
       0 == strcmp(pTable, TSDB_INS_DISK_USAGE) || 0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS)) &&
134,249,505!
197
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
1,461,481✔
198
    code = collectMetaKeyFromInsTags(pCxt);
1,448,458✔
199
  }
200
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
135,702,163✔
201
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
138,528!
202
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
138,528✔
203
  }
204
  return code;
135,702,810✔
205
}
206

207
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
132,125,272✔
208
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
132,125,272✔
209
                                                  AUTH_TYPE_READ);
210
  if (TSDB_CODE_SUCCESS == pCxt->errCode && pCxt->pComCxt->collectVStbRefDbs) {
132,126,792!
211
    pCxt->errCode = reserveVStbRefDbsInCache(pCxt->pComCxt->pParseCxt->acctId, pRealTable->table.dbName, pRealTable->table.tableName, pCxt->pComCxt->pMetaCache);
110,597,502✔
212
  }
213
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
132,134,773!
214
}
215

216
static EDealRes collectMetaKeyFromTempTable(SCollectMetaKeyFromExprCxt* pCxt, STempTableNode* pTempTable) {
18,154,441✔
217
  pCxt->errCode = collectMetaKeyFromQuery(pCxt->pComCxt, pTempTable->pSubquery);
18,154,441✔
218
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
18,154,441!
219
}
220

221
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
132,236,609✔
222
  if (pOperator->opType != OP_TYPE_EQUAL) {
132,236,609✔
223
    return TSDB_CODE_SUCCESS;
119,549,541✔
224
  }
225

226
  SValueNode* pValueNode = NULL;
12,687,654✔
227
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
12,687,654✔
228
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
2,802,540✔
229
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
262,216✔
230
    pValueNode = (SValueNode*)pOperator->pRight;
239,700✔
231
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
12,447,954✔
232
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
87,448!
233
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
1,370!
234
    pValueNode = (SValueNode*)pOperator->pLeft;
×
235
  } else {
236
    return TSDB_CODE_SUCCESS;
12,447,954✔
237
  }
238

239
  *ppTableName = pValueNode->literal;
239,700✔
240

241
  return TSDB_CODE_SUCCESS;
239,700✔
242
}
243

244
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
179,950,327✔
245
  if (!pCxt->tbnameCollect) {
179,950,327✔
246
    return DEAL_RES_CONTINUE;
47,713,429✔
247
  }
248

249
  char*   pTableName = NULL;
132,237,476✔
250
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
132,236,563✔
251
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
132,234,147!
252
  if (pTableName) {
132,234,147✔
253
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
239,700✔
254
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
239,700✔
255
                                                    pTableName, AUTH_TYPE_READ);
256
  }
257

258
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
132,234,147!
259
}
260

261
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
1,630,699,283✔
262
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
1,630,699,283✔
263
  switch (nodeType(pNode)) {
1,630,699,283✔
264
    case QUERY_NODE_FUNCTION:
287,718,054✔
265
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
287,718,054✔
266
    case QUERY_NODE_REAL_TABLE:
131,630,817✔
267
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
131,630,817✔
268
    case QUERY_NODE_TEMP_TABLE:
18,154,441✔
269
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
18,154,441✔
270
    case QUERY_NODE_OPERATOR:
179,950,164✔
271
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
179,950,164✔
272
    default:
1,013,244,250✔
273
      break;
1,013,244,250✔
274
  }
275
  return DEAL_RES_CONTINUE;
1,013,244,250✔
276
}
277

278
static int32_t collectMetaKeyFromExprs(SCollectMetaKeyCxt* pCxt, SNodeList* pList) {
5,357,089✔
279
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .errCode = TSDB_CODE_SUCCESS, .tbnameCollect = false};
5,357,089✔
280
  nodesWalkExprs(pList, collectMetaKeyFromExprImpl, &cxt);
5,357,089✔
281
  return cxt.errCode;
5,357,089✔
282
}
283

284
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt) {
5,357,089✔
285
  int32_t code = collectMetaKeyFromQuery(pCxt, pStmt->pLeft);
5,357,089✔
286
  if (TSDB_CODE_SUCCESS == code) {
5,357,089!
287
    code = collectMetaKeyFromQuery(pCxt, pStmt->pRight);
5,357,089✔
288
  }
289
  if (TSDB_CODE_SUCCESS == code) {
5,357,089!
290
    code = collectMetaKeyFromExprs(pCxt, pStmt->pOrderByList);
5,357,089✔
291
  }
292
  return code;
5,357,089✔
293
}
294

295
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
7,241,689✔
296
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
7,241,689✔
297
    return TSDB_CODE_SUCCESS;
605,707✔
298
  }
299
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
6,634,943✔
300
}
301

302
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
141,368,255✔
303
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
141,368,255✔
304
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
141,369,575✔
305
    cxt.tbnameCollect = true;
109,730,540✔
306
    cxt.pComCxt->collectVStbRefDbs = true;
109,730,540✔
307
  }
308
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
141,369,225✔
309
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
141,370,160!
310
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
7,241,563✔
311
  }
312
  return cxt.errCode;
141,370,612✔
313
}
314

315
static int32_t collectMetaKeyFromAlterDatabase(SCollectMetaKeyCxt* pCxt, SAlterDatabaseStmt* pStmt) {
138,622✔
316
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
138,622✔
317
}
318

319
static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) {
2,374,204✔
320
  return reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
2,374,204✔
321
}
322

323
static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) {
4,474,558✔
324
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
4,474,558✔
325
  if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) {
4,474,558!
326
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
2,670,449✔
327
  }
328
  if (TSDB_CODE_SUCCESS == code) {
4,474,558!
329
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
4,474,558✔
330
                                  pCxt->pMetaCache);
331
  }
332
  return code;
4,474,558✔
333
}
334

335
static int32_t collectMetaKeyFromCreateVTable(SCollectMetaKeyCxt* pCxt, SCreateVTableStmt* pStmt) {
159,278✔
336
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
159,278✔
337
  if (TSDB_CODE_SUCCESS == code) {
159,278!
338
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
159,278✔
339
  }
340
  if (TSDB_CODE_SUCCESS == code) {
159,278!
341
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
159,278✔
342
                                  pCxt->pMetaCache);
343
  }
344
  if (TSDB_CODE_SUCCESS == code) {
159,278!
345
    SNode *pNode = NULL;
159,278✔
346
    FOREACH(pNode, pStmt->pCols) {
1,762,965!
347
      SColumnDefNode *pCol = (SColumnDefNode*)pNode;
1,603,687✔
348
      if (NULL == pCol) {
1,603,687!
349
        code = TSDB_CODE_PAR_INVALID_COLUMN;
×
350
        break;
×
351
      }
352
      SColumnOptions *pOptions = (SColumnOptions*)pCol->pOptions;
1,603,687✔
353
      if (pOptions && pOptions->hasRef) {
1,603,687!
354
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
874,626✔
355
        if (TSDB_CODE_SUCCESS == code) {
874,626!
356
          code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
874,626✔
357
        }
358
        if (TSDB_CODE_SUCCESS == code) {
874,626!
359
          code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pOptions->refDb,
1,748,540✔
360
                                        pOptions->refTable, AUTH_TYPE_READ, pCxt->pMetaCache);
874,626✔
361
        }
362
        if (TSDB_CODE_SUCCESS != code) {
874,626!
363
          break;
×
364
        }
365
      }
366
    }
367
  }
368
  return code;
159,278✔
369
}
370

371
static int32_t collectMetaKeyFromCreateVSubTable(SCollectMetaKeyCxt* pCxt, SCreateVSubTableStmt* pStmt) {
326,049✔
372
  int32_t code = TSDB_CODE_SUCCESS;
326,049✔
373
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
326,049!
374
  // super table's meta
375
  PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->useDbName, pStmt->useTableName,pCxt->pMetaCache));
326,049!
376
  // child table's meta
377
  PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
326,049!
378
  // check db's write auth
379
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
326,049!
380
                                     AUTH_TYPE_WRITE, pCxt->pMetaCache));
381
  // check org table's read auth
382
  SNode     *pNode = NULL;
326,049✔
383
  SNodeList *pTmpNodeList = pStmt->pSpecificColRefs ? pStmt->pSpecificColRefs : pStmt->pColRefs;
326,049✔
384
  if (NULL == pTmpNodeList) {
326,049✔
385
    // no column reference
386
    return TSDB_CODE_SUCCESS;
4,623✔
387
  }
388

389
  FOREACH(pNode, pTmpNodeList) {
2,153,864!
390
    SColumnRefNode *pColRef = (SColumnRefNode*)pNode;
1,832,438✔
391
    if (NULL == pColRef) {
1,832,438!
392
      code = TSDB_CODE_PAR_INVALID_COLUMN;
×
393
      break;
×
394
    }
395
    PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName,
1,832,438!
396
                                        pCxt->pMetaCache));
397
    PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName,
1,832,438!
398
                                          pCxt->pMetaCache));
399
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pColRef->refDbName,
1,832,438!
400
                                       pColRef->refTableName, AUTH_TYPE_READ, pCxt->pMetaCache));
401
  }
402
  return code;
321,426✔
403
}
404

405
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
30,853,362✔
406
  int32_t code = TSDB_CODE_SUCCESS;
30,853,362✔
407
  SNode*  pNode = NULL;
30,853,362✔
408
  FOREACH(pNode, pStmt->pSubTables) {
65,386,924!
409
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
34,525,570!
410
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
34,516,606✔
411
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
34,516,606✔
412
      if (TSDB_CODE_SUCCESS == code) {
34,527,310!
413
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
34,527,824✔
414
                                       pCxt->pMetaCache);
415
      }
416
      if (TSDB_CODE_SUCCESS == code) {
34,532,203!
417
        code =
418
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
34,532,284✔
419
      }
420
      if (TSDB_CODE_SUCCESS == code) {
34,535,252!
421
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
34,535,333✔
422
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
423
      }
424
    } else {
UNCOV
425
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
UNCOV
426
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
427
      if (TSDB_CODE_SUCCESS == code) {
×
428
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
429
                                       pCxt->pMetaCache);
430
      }
431
      if (TSDB_CODE_SUCCESS == code) {
×
432
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
433
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
434
      }
435
    }
436

437
    if (TSDB_CODE_SUCCESS != code) {
34,533,562!
438
      break;
×
439
    }
440
  }
441
  return code;
30,859,246✔
442
}
443

444
static int32_t collectMetaKeyFromCreateSubTableFromFile(SCollectMetaKeyCxt*            pCxt,
892✔
445
                                                        SCreateSubTableFromFileClause* pClause) {
446
  int32_t code = TSDB_CODE_SUCCESS;
892✔
447
  SNode*  pNode = NULL;
892✔
448

449
  code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
892✔
450
  if (TSDB_CODE_SUCCESS == code) {
892!
451
    code =
452
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, pCxt->pMetaCache);
892✔
453
  }
454
  if (TSDB_CODE_SUCCESS == code) {
892!
455
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
892✔
456
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
457
  }
458

459
  return code;
892✔
460
}
461

462
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
9,627,657✔
463
  int32_t code = TSDB_CODE_SUCCESS;
9,627,657✔
464
  SNode*  pNode = NULL;
9,627,657✔
465
  FOREACH(pNode, pStmt->pTables) {
19,644,601!
466
    SDropTableClause* pClause = (SDropTableClause*)pNode;
10,016,944✔
467
    if (pStmt->withOpt) {
10,016,944!
468
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
488,524✔
469
      if (TSDB_CODE_SUCCESS == code) {
488,524!
470
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
488,524✔
471
      }
472
      if (TSDB_CODE_SUCCESS == code) {
488,524!
473
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
488,524✔
474
      }
475
    } else {
476
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
9,528,420✔
477
      if (TSDB_CODE_SUCCESS == code) {
9,528,420!
478
        code =
479
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
9,528,420✔
480
      }
481
      if (TSDB_CODE_SUCCESS == code) {
9,528,420!
482
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
19,032,034✔
483
                                      pClause->tableName, AUTH_TYPE_WRITE, pCxt->pMetaCache);
9,528,420✔
484
      }
485
    }
486
    if (TSDB_CODE_SUCCESS != code) {
10,016,944!
487
      break;
×
488
    }
489
  }
490
  return code;
9,627,657✔
491
}
492

493
static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) {
257,337✔
494
  if (pStmt->withOpt) {
257,337!
495
    return reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
181,522✔
496
  }
497
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
75,815✔
498
                                AUTH_TYPE_WRITE, pCxt->pMetaCache);
499
}
500

501
static int32_t collectMetaKeyFromDropVtable(SCollectMetaKeyCxt* pCxt, SDropVirtualTableStmt* pStmt) {
88,006✔
502
  int32_t code = TSDB_CODE_SUCCESS;
88,006✔
503
  if (pStmt->withOpt) {
88,006!
504
    code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
×
505
    if (TSDB_CODE_SUCCESS == code) {
×
506
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
507
    }
508
    if (TSDB_CODE_SUCCESS == code) {
×
509
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
510
    }
511
  } else {
512
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
88,006✔
513
    if (TSDB_CODE_SUCCESS == code) {
88,006!
514
      code =
515
          reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
88,006✔
516
    }
517
    if (TSDB_CODE_SUCCESS == code) {
88,006!
518
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
176,012✔
519
                                    pStmt->tableName, AUTH_TYPE_WRITE, pCxt->pMetaCache);
88,006✔
520
    }
521
  }
522
  return code;
88,006✔
523
}
524

525
static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
14,059,826✔
526
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
14,059,826✔
527
  if (TSDB_CODE_SUCCESS == code && (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType || TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL == pStmt->alterType)) {
14,059,826!
528
    SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
5,124,445✔
529
    tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
5,124,445!
530
    tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
5,124,445!
531
    code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
5,124,445✔
532
  }
533
  if (TSDB_CODE_SUCCESS == code) {
14,059,826!
534
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
14,059,826✔
535
  }
536
  if (TSDB_CODE_SUCCESS == code) {
14,059,826!
537
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
14,059,826✔
538
  }
539
  if (TSDB_CODE_SUCCESS == code) {
14,059,826!
540
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
14,059,826✔
541
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
542
  }
543
  return code;
14,059,826✔
544
}
545

546
static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
588,953✔
547
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
588,953✔
548
  if (TSDB_CODE_SUCCESS == code) {
588,953!
549
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
588,953✔
550
  }
551
  if (TSDB_CODE_SUCCESS == code) {
588,953!
552
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
588,953✔
553
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
554
  }
555
  return code;
588,953✔
556
}
557

558
static int32_t collectMetaKeyFromAlterVtable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
464,523✔
559
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
464,523!
560
  if (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType || TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL == pStmt->alterType) {
464,523!
561
    SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
37,828✔
562
    tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
37,828!
563
    tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
37,828!
564
    PAR_ERR_RET(catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name));
37,828!
565
  }
566
  PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
464,523!
567
  PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
464,523!
568
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
464,523!
569
                                     AUTH_TYPE_WRITE, pCxt->pMetaCache));
570
  if (pStmt->alterType == TSDB_ALTER_TABLE_ALTER_COLUMN_REF || pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COLUMN_REF) {
464,523✔
571
    PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->refDbName, pStmt->refTableName, pCxt->pMetaCache));
179,551!
572
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName, pStmt->refTableName,
179,551!
573
                                       AUTH_TYPE_READ, pCxt->pMetaCache));
574
  }
575
  return TSDB_CODE_SUCCESS;
464,523✔
576
}
577

578
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
3,059,133✔
579
  return reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
3,059,133✔
580
}
581

582
static int32_t collectMetaKeyFromCreateIndex(SCollectMetaKeyCxt* pCxt, SCreateIndexStmt* pStmt) {
20,175✔
583
  int32_t code = TSDB_CODE_SUCCESS;
20,175✔
584
  if (INDEX_TYPE_SMA == pStmt->indexType || INDEX_TYPE_NORMAL == pStmt->indexType) {
20,175!
585
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
20,175✔
586
    if (TSDB_CODE_SUCCESS == code) {
20,175!
587
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
20,175✔
588
    }
589
    if (TSDB_CODE_SUCCESS == code) {
20,175!
590
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
20,175✔
591
    }
592
    if (TSDB_CODE_SUCCESS == code) {
20,175!
593
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
20,175✔
594
    }
595
  }
596
  return code;
20,175✔
597
}
598

599
static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) {
85,623✔
600
  if (NULL != pStmt->pQuery) {
85,623✔
601
    return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
69,506✔
602
  }
603
  if (NULL != pStmt->pWhere) {
16,117✔
604
    int32_t code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, AUTH_TYPE_READ);
6,598✔
605
    return code;
6,598✔
606
  }
607
  return TSDB_CODE_SUCCESS;
9,519✔
608
}
609

610
static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) {
6,608,816✔
611
  return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
6,608,816✔
612
}
613

614
static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStmt* pStmt) {
883,240✔
615
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
883,240✔
616
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
883,240!
617
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
883,240!
618
  int32_t code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
883,240✔
619
#ifdef TD_ENTERPRISE
620
  if (TSDB_CODE_SUCCESS == code) {
883,240!
621
    char dbFName[TSDB_DB_FNAME_LEN];
845,366✔
622
    (void)tNameGetFullDbName(&name, dbFName);
883,240✔
623
    code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->tableName, 0);
883,240✔
624
  }
625
#endif
626
  if (TSDB_CODE_SUCCESS == code) {
883,240!
627
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
883,240✔
628
  }
629
  return code;
883,240✔
630
}
631

632
static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) {
498,341✔
633
  int32_t code = TSDB_CODE_SUCCESS;
498,341✔
634

635
  if (strcmp(pStmt->targetTabName, "") != 0) {
498,341✔
636
    PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache));
494,156!
637
    (void)reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache);
494,156✔
638
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pCxt->pMetaCache));
494,156!
639
  }
640
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache));
498,341!
641
  SRealTableNode *pTriggerTable = (SRealTableNode*)((SStreamTriggerNode*)pStmt->pTrigger)->pTrigerTable;
498,341✔
642
  if (pTriggerTable) {
498,341✔
643
    SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .tbnameCollect = true, .errCode = TSDB_CODE_SUCCESS};
487,891✔
644
    cxt.pComCxt->collectVStbRefDbs = true;
487,891✔
645
    EDealRes res = collectMetaKeyFromRealTable(&cxt, pTriggerTable);
487,891✔
646
    PAR_ERR_RET(cxt.errCode);
487,891!
647
    PAR_ERR_RET(reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
487,891!
648
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
487,891!
649
  }
650
  if (pStmt->pQuery) {
498,341✔
651
    PAR_ERR_RET(collectMetaKeyFromQuery(pCxt, pStmt->pQuery));
494,156!
652
  }
653

654
  return code;
498,341✔
655
}
656

657
static int32_t collectMetaKeyFromRecalculateStream(SCollectMetaKeyCxt* pCxt, SRecalcStreamStmt* pStmt) {
23,584✔
658
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache);
23,584✔
659
}
660

661

662
static int32_t collectMetaKeyFromShowDnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
428,779✔
663
  if (pCxt->pParseCxt->enableSysInfo) {
428,779✔
664
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DNODES,
426,755✔
665
                                   pCxt->pMetaCache);
666
  }
667
  return TSDB_CODE_SUCCESS;
2,024✔
668
}
669

670
static int32_t collectMetaKeyFromShowMnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
402,454✔
671
  if (pCxt->pParseCxt->enableSysInfo) {
402,454✔
672
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MNODES,
400,286✔
673
                                   pCxt->pMetaCache);
674
  }
675
  return TSDB_CODE_SUCCESS;
2,168✔
676
}
677

678
static int32_t collectMetaKeyFromShowModules(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
679
  if (pCxt->pParseCxt->enableSysInfo) {
×
680
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MODULES,
×
681
                                   pCxt->pMetaCache);
682
  }
683
  return TSDB_CODE_SUCCESS;
×
684
}
685

686
static int32_t collectMetaKeyFromShowQnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,691✔
687
  if (pCxt->pParseCxt->enableSysInfo) {
3,691✔
688
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_QNODES,
1,667✔
689
                                   pCxt->pMetaCache);
690
  }
691
  return TSDB_CODE_SUCCESS;
2,024✔
692
}
693

694
static int32_t collectMetaKeyFromShowSnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
140,372✔
695
  if (pCxt->pParseCxt->enableSysInfo) {
140,372✔
696
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SNODES,
136,324✔
697
                                   pCxt->pMetaCache);
698
  }
699
  return TSDB_CODE_SUCCESS;
4,048✔
700
}
701

702
static int32_t collectMetaKeyFromShowAnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
506✔
703
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES,
506✔
704
                                 pCxt->pMetaCache);
705
}
706

707
static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
708
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES_FULL,
×
709
                                 pCxt->pMetaCache);
710
}
711

712
static int32_t collectMetaKeyFromShowBnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
122,844✔
713
  if (pCxt->pParseCxt->enableSysInfo) {
122,844!
714
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BNODES,
122,844✔
715
                                   pCxt->pMetaCache);
716
  }
717
  return TSDB_CODE_SUCCESS;
×
718
}
719

720
static int32_t collectMetaKeyFromShowBackupNodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
721
  if (pCxt->pParseCxt->enableSysInfo) {
×
722
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BACKUP_NODES,
×
723
                                   pCxt->pMetaCache);
724
  }
725
  return TSDB_CODE_SUCCESS;
×
726
}
727

728
static int32_t collectMetaKeyFromShowArbGroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7,758✔
729
  if (pCxt->pParseCxt->enableSysInfo) {
7,758!
730
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ARBGROUPS,
7,758✔
731
                                   pCxt->pMetaCache);
732
  }
733
  return TSDB_CODE_SUCCESS;
×
734
}
735

736
static int32_t collectMetaKeyFromShowCluster(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,257✔
737
  if (pCxt->pParseCxt->enableSysInfo) {
4,257✔
738
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CLUSTER,
2,233✔
739
                                   pCxt->pMetaCache);
740
  }
741
  return TSDB_CODE_SUCCESS;
2,024✔
742
}
743

744
static int32_t collectMetaKeyFromShowDatabases(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
241,282✔
745
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DATABASES,
241,282✔
746
                                 pCxt->pMetaCache);
747
}
748

749
static int32_t collectMetaKeyFromShowFunctions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
9,157✔
750
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FUNCTIONS,
9,157✔
751
                                 pCxt->pMetaCache);
752
}
753

754
static int32_t collectMetaKeyFromShowIndexes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
9,398✔
755
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_INDEXES,
9,398✔
756
                                 pCxt->pMetaCache);
757
}
758

759
static int32_t collectMetaKeyFromShowStables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
310,523✔
760
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STABLES,
310,523✔
761
                                         pCxt->pMetaCache);
762
  if (TSDB_CODE_SUCCESS == code) {
310,523!
763
    code =
764
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
310,523✔
765
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
766
  }
767
  return code;
310,523✔
768
}
769

770
static int32_t collectMetaKeyFromShowStreams(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
147,504✔
771
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STREAMS,
147,504✔
772
                                 pCxt->pMetaCache);
773
  if (TSDB_CODE_SUCCESS == code) {
147,504!
774
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
147,504✔
775
  }
776
  if (TSDB_CODE_SUCCESS == code) {
147,504!
777
    code =
778
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
147,504✔
779
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
780
  }
781
  return code;
147,504✔
782
}
783

784
static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
354,162✔
785
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TABLES,
354,162✔
786
                                         pCxt->pMetaCache);
787
  if (TSDB_CODE_SUCCESS == code) {
354,162!
788
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
354,162✔
789
  }
790
  if (TSDB_CODE_SUCCESS == code) {
354,162!
791
    code =
792
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
354,162✔
793
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
794
  }
795
  return code;
354,162✔
796
}
797

798
static int32_t collectMetaKeyFromShowFilesets(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
799
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FILESETS,
×
800
                                         pCxt->pMetaCache);
801
  if (TSDB_CODE_SUCCESS == code) {
×
802
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
803
  }
804
  if (TSDB_CODE_SUCCESS == code) {
×
805
    code =
806
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
×
807
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
808
  }
809
  return code;
×
810
}
811

812
static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
784,797✔
813
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS,
784,797✔
814
                                         pCxt->pMetaCache);
815
  if (TSDB_CODE_SUCCESS == code) {
784,797!
816
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,569,574✔
817
                                   ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
784,797✔
818
  }
819
  if (TSDB_CODE_SUCCESS == code) {
784,797!
820
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
784,797✔
821
  }
822
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) {
784,797!
823
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,569,574✔
824
                                     ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
784,797✔
825
  }
826
  return code;
784,797✔
827
}
828

829
static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) {
3,760✔
830
  return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal,
3,820✔
831
                                         ((SValueNode*)pStmt->pTbName)->literal, AUTH_TYPE_READ);
3,760✔
832
}
833

834
static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
9,208✔
835
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS,
9,208✔
836
                                 pCxt->pMetaCache);
837
}
838

839
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
840
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL,
×
841
                                 pCxt->pMetaCache);
842
}
843

844
static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
5,372✔
845
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES,
5,372✔
846
                                 pCxt->pMetaCache);
847
}
848

849
static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
281,214✔
850
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
281,214✔
851
                                         pCxt->pMetaCache);
852
  if (TSDB_CODE_SUCCESS == code) {
281,214!
853
    // just to verify whether the database exists
854
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
281,214✔
855
  }
856
  return code;
281,214✔
857
}
858

859
static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
32,878✔
860
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS,
32,878✔
861
                                 pCxt->pMetaCache);
862
}
863

864
static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
11,476✔
865
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONSUMERS,
11,476✔
866
                                 pCxt->pMetaCache);
867
}
868

869
static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,671✔
870
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONNECTIONS,
3,671✔
871
                                 pCxt->pMetaCache);
872
}
873

874
static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,671✔
875
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES,
3,671✔
876
                                 pCxt->pMetaCache);
877
}
878

879
static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
48,710✔
880
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS,
48,710✔
881
                                 pCxt->pMetaCache);
882
}
883

884
static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) {
178,423✔
885
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
178,423✔
886
                                         TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache);
887
  if (TSDB_CODE_SUCCESS == code) {
178,423!
888
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
178,423✔
889
  }
890
  return code;
178,423✔
891
}
892

893
static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) {
3,654✔
894
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES,
3,654✔
895
                                 pCxt->pMetaCache);
896
}
897

898
static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7,521✔
899
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USER_PRIVILEGES,
7,521✔
900
                                 pCxt->pMetaCache);
901
}
902

903
static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
14,615✔
904
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS,
14,615✔
905
                                         pCxt->pMetaCache);
906
  if (TSDB_CODE_SUCCESS == code) {
14,615!
907
    code =
908
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
14,615✔
909
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
910
  }
911
  return code;
14,615✔
912
}
913

914
static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
228,895✔
915
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS,
228,895✔
916
                                         pCxt->pMetaCache);
917
  return code;
228,895✔
918
}
919

920
static int32_t collectMetaKeyFromShowScans(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
5,494✔
921
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SCANS,
5,494✔
922
                                         pCxt->pMetaCache);
923
  return code;
5,494✔
924
}
925

926
static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,993✔
927
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
4,993✔
928
                                         TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache);
929
  return code;
4,993✔
930
}
931

932
static int32_t collectMetaKeyFromShowScanDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,556✔
933
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
4,556✔
934
                                         TSDB_INS_TABLE_SCAN_DETAILS, pCxt->pMetaCache);
935
  return code;
4,556✔
936
}
937

938
static int32_t collectMetaKeyFromShowSsMigrates(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
939
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SSMIGRATES,
×
940
                                         pCxt->pMetaCache);
941
  return code;
×
942
}
943

944
static int32_t collectMetaKeyFromShowTransactionDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
173✔
945
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
173✔
946
                                         TSDB_INS_TABLE_TRANSACTION_DETAILS, pCxt->pMetaCache);
947
  return code;
173✔
948
}
949

950
static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,542✔
951
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_FULL,
3,542✔
952
                                 pCxt->pMetaCache);
953
}
954

955
static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,542✔
956
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_LOGS,
3,542✔
957
                                 pCxt->pMetaCache);
958
}
959

960
static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,979✔
961
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES,
3,979✔
962
                                 pCxt->pMetaCache);
963
}
964

965
static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
763✔
966
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS,
763✔
967
                                 pCxt->pMetaCache);
968
}
969

970
static int32_t collectMetaKeyFromShowMounts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7,488✔
971
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MOUNTS,
7,488✔
972
                                 pCxt->pMetaCache);
973
}
974

975
static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) {
32,130✔
976
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
32,130✔
977
}
978

979
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
119,559✔
980
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
119,559✔
981
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
119,559!
982
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
119,559!
983
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
119,559✔
984
  if (TSDB_CODE_SUCCESS == code) {
119,559!
985
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
119,559✔
986
  }
987
  if (TSDB_CODE_SUCCESS == code) {
119,559!
988
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
119,559✔
989
  }
990
  if (TSDB_CODE_SUCCESS == code) {
119,559!
991
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
119,559✔
992
                                  AUTH_TYPE_READ, pCxt->pMetaCache);
993
  }
994
  return code;
119,559✔
995
}
996

997
static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) {
10,818✔
998
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
10,818✔
999
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
10,818!
1000
  tstrncpy(name.tname, pStmt->viewName, TSDB_TABLE_NAME_LEN);
10,818!
1001
  char dbFName[TSDB_DB_FNAME_LEN];
10,818✔
1002
  (void)tNameGetFullDbName(&name, dbFName);
10,818✔
1003
  int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0);
10,818✔
1004
  if (TSDB_CODE_SUCCESS == code) {
10,818!
1005
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
10,818✔
1006
                                      AUTH_TYPE_READ, pCxt->pMetaCache);
1007
  }
1008
  if (TSDB_CODE_SUCCESS == code) {
10,818!
1009
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
10,818✔
1010
  }
1011
  pCxt->pMetaCache->forceFetchViewMeta = true;
10,818✔
1012
  return code;
10,818✔
1013
}
1014

1015
static int32_t collectMetaKeyFromShowCreateRsma(SCollectMetaKeyCxt* pCxt, SShowCreateRsmaStmt* pStmt) { return 0; }
1,512✔
1016

1017
static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,671✔
1018
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS,
3,671✔
1019
                                 pCxt->pMetaCache);
1020
}
1021

1022
static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
249,901✔
1023
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
249,901✔
1024
                                 pCxt->pMetaCache);
1025
}
1026

1027
static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) {
3,220,234✔
1028
  STableNode* pTable = (STableNode*)pStmt->pFromTable;
3,220,234✔
1029
  return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
3,220,234✔
1030
}
1031

1032
static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) {
100,135✔
1033
  STableNode* pTable = (STableNode*)pStmt->pTable;
100,135✔
1034
  int32_t     code = collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
100,135✔
1035
  if (TSDB_CODE_SUCCESS == code) {
100,135!
1036
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
100,135✔
1037
  }
1038
  return code;
100,135✔
1039
}
1040

1041
static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) {
6,250✔
1042
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
6,250✔
1043
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
6,250!
1044
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
6,250!
1045
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
6,250✔
1046
  if (TSDB_CODE_SUCCESS == code) {
6,250!
1047
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, AUTH_TYPE_READ);
6,250✔
1048
  }
1049
  return code;
6,250✔
1050
}
1051

1052
static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
10,555✔
1053
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS,
10,555✔
1054
                                 pCxt->pMetaCache);
1055
}
1056

1057
static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) {
16,754✔
1058
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
16,754✔
1059
}
1060

1061
static int32_t collectMetaKeyFromRollupDatabase(SCollectMetaKeyCxt* pCxt, SRollupDatabaseStmt* pStmt) {
6,048✔
1062
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
6,048✔
1063
}
1064

1065
static int32_t collectMetaKeyFromScanDatabase(SCollectMetaKeyCxt* pCxt, SScanDatabaseStmt* pStmt) {
268✔
1066
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
268✔
1067
}
1068

1069
static int32_t collectMetaKeyFromTrimDatabase(SCollectMetaKeyCxt* pCxt, STrimDatabaseStmt* pStmt) {
6,807✔
1070
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
6,807✔
1071
}
1072

1073
static int32_t collectMetaKeyFromCompactVgroups(SCollectMetaKeyCxt* pCxt, SCompactVgroupsStmt* pStmt) {
670✔
1074
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
670✔
1075
}
1076

1077
static int32_t collectMetaKeyFromRollupVgroups(SCollectMetaKeyCxt* pCxt, SRollupVgroupsStmt* pStmt) {
3,024✔
1078
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
3,024✔
1079
}
1080

1081
static int32_t collectMetaKeyFromScanVgroups(SCollectMetaKeyCxt* pCxt, SScanVgroupsStmt* pStmt) {
670✔
1082
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
670✔
1083
}
1084

1085
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
629,684✔
1086
  if ('\0' == pStmt->tabName[0]) {
629,684✔
1087
    return TSDB_CODE_SUCCESS;
235,239✔
1088
  }
1089
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
394,445✔
1090
}
1091

1092
static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) {
453,185✔
1093
  if ('\0' == pStmt->tabName[0]) {
453,185✔
1094
    return TSDB_CODE_SUCCESS;
207,201✔
1095
  }
1096
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
245,984✔
1097
}
1098

1099
static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) {
212,454✔
1100
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
212,454✔
1101
  if (TSDB_CODE_SUCCESS == code) {
212,454!
1102
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
212,454✔
1103
                                  pCxt->pMetaCache);
1104
  }
1105
  if (TSDB_CODE_SUCCESS == code) {
212,454!
1106
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
212,454✔
1107
                                      AUTH_TYPE_ALTER, pCxt->pMetaCache);
1108
  }
1109
  return code;
212,454✔
1110
}
1111

1112
static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) {
136,160✔
1113
  int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
272,320✔
1114
                                            pStmt->viewName, AUTH_TYPE_ALTER, pCxt->pMetaCache);
136,160✔
1115
  pCxt->pMetaCache->forceFetchViewMeta = true;
136,160✔
1116
  return code;
136,160✔
1117
}
1118

1119
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
511✔
1120
  int32_t code;
1121
  if (pStmt->pOptions->recursiveTsma) {
511!
1122
    // if creating recursive tsma, the tablename is tsmaName
1123
    code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
×
1124
    if (TSDB_CODE_SUCCESS == code) {
×
1125
      char dstTbName[TSDB_TABLE_NAME_LEN] = {0};
×
1126
      snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName);
×
1127
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
×
1128
      if (TSDB_CODE_SUCCESS == code) {
×
1129
        code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
×
1130
      }
1131
    }
1132
  } else {
1133
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
511✔
1134
    if (TSDB_CODE_SUCCESS == code) {
511!
1135
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
511✔
1136
    }
1137
  }
1138
  if (TSDB_CODE_SUCCESS == code) {
511!
1139
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
511✔
1140
  }
1141
  if (TSDB_CODE_SUCCESS == code) {
511!
1142
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
511✔
1143
  }
1144
  return code;
511✔
1145
}
1146

1147
static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) {
×
1148
  int32_t code;
1149
  code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache);
×
1150
  if (TSDB_CODE_SUCCESS == code) {
×
1151
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1152
  }
1153
  if (TSDB_CODE_SUCCESS == code) {
×
1154
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1155
  }
1156
  return code;
×
1157
}
1158

1159
static int32_t collectMetaKeyFromShowUsage(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,306✔
1160
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_DISK_USAGE,
1,306✔
1161
                                         pCxt->pMetaCache);
1162
  if (TSDB_CODE_SUCCESS == code) {
1,306!
1163
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
1,306✔
1164
  }
1165
  if (TSDB_CODE_SUCCESS == code) {
1,306!
1166
    code =
1167
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
1,306✔
1168
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
1169
  }
1170
  return code;
1,306✔
1171
}
1172

1173
static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1174
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS,
×
1175
                                 pCxt->pMetaCache);
1176
}
1177

1178
static int32_t collectMetaKeyFromCreateRsmaStmt(SCollectMetaKeyCxt* pCxt, SCreateRsmaStmt* pStmt) {
74,592✔
1179
  int32_t code;
1180
  code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
74,592✔
1181
  if (TSDB_CODE_SUCCESS == code) {
74,592!
1182
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
74,592✔
1183
  }
1184
  return code;
74,592✔
1185
}
1186

1187
static int32_t collectMetaKeyFromDropRsmaStmt(SCollectMetaKeyCxt* pCxt, SDropRsmaStmt* pStmt) {
1,512✔
1188
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,512✔
1189
}
1190

1191
static int32_t collectMetaKeyFromAlterRsmaStmt(SCollectMetaKeyCxt* pCxt, SAlterRsmaStmt* pStmt) {
13,104✔
1192
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
13,104✔
1193
}
1194

1195
static int32_t collectMetaKeyFromShowRsmasStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8,568✔
1196
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RSMAS,
8,568✔
1197
                                 pCxt->pMetaCache);
1198
}
1199

1200
static int32_t collectMetaKeyFromShowRetentionsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
28,728✔
1201
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTIONS,
28,728✔
1202
                                 pCxt->pMetaCache);
1203
}
1204

1205
static int32_t collectMetaKeyFromShowRetentionDetailsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,512✔
1206
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTION_DETAILS,
1,512✔
1207
                                 pCxt->pMetaCache);
1208
}
1209

1210
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
9,454✔
1211
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
9,454✔
1212
                                         pCxt->pMetaCache);
1213
  if (TSDB_CODE_SUCCESS == code && pStmt->dbName[0]) {
9,454!
1214
    // just to verify whether the database exists
1215
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
4,675✔
1216
  }
1217
  return code;
9,454✔
1218
}
1219

1220
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
237,146,906✔
1221
  pCxt->pStmt = pStmt;
237,146,906✔
1222
  switch (nodeType(pStmt)) {
237,151,381!
1223
    case QUERY_NODE_SET_OPERATOR:
5,357,089✔
1224
      return collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
5,357,089✔
1225
    case QUERY_NODE_SELECT_STMT:
141,362,181✔
1226
      return collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
141,362,181✔
1227
    case QUERY_NODE_ALTER_DATABASE_STMT:
138,622✔
1228
      return collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
138,622✔
1229
    case QUERY_NODE_FLUSH_DATABASE_STMT:
2,374,204✔
1230
      return collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
2,374,204✔
1231
    case QUERY_NODE_CREATE_TABLE_STMT:
4,474,558✔
1232
      return collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
4,474,558✔
1233
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
159,278✔
1234
      return collectMetaKeyFromCreateVTable(pCxt, (SCreateVTableStmt*)pStmt);
159,278✔
1235
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
326,049✔
1236
      return collectMetaKeyFromCreateVSubTable(pCxt, (SCreateVSubTableStmt*)pStmt);
326,049✔
1237
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
30,854,256✔
1238
      return collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
30,854,256✔
1239
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
892✔
1240
      return collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
892✔
1241
    case QUERY_NODE_DROP_TABLE_STMT:
9,627,657✔
1242
      return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
9,627,657✔
1243
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
257,337✔
1244
      return collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
257,337✔
1245
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
88,006✔
1246
      return collectMetaKeyFromDropVtable(pCxt, (SDropVirtualTableStmt*)pStmt);
88,006✔
1247
    case QUERY_NODE_ALTER_TABLE_STMT:
14,059,826✔
1248
      return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
14,059,826✔
1249
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
588,953✔
1250
      return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
588,953✔
1251
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
464,523✔
1252
      return collectMetaKeyFromAlterVtable(pCxt, (SAlterTableStmt*)pStmt);
464,523✔
1253
    case QUERY_NODE_USE_DATABASE_STMT:
3,059,956✔
1254
      return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
3,059,956✔
1255
    case QUERY_NODE_CREATE_INDEX_STMT:
20,175✔
1256
      return collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
20,175✔
1257
    case QUERY_NODE_CREATE_TOPIC_STMT:
85,623✔
1258
      return collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
85,623✔
1259
    case QUERY_NODE_EXPLAIN_STMT:
6,608,816✔
1260
      return collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
6,608,816✔
1261
    case QUERY_NODE_DESCRIBE_STMT:
883,240✔
1262
      return collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
883,240✔
1263
    case QUERY_NODE_COMPACT_DATABASE_STMT:
16,754✔
1264
      return collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
16,754✔
1265
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
6,048✔
1266
      return collectMetaKeyFromRollupDatabase(pCxt, (SRollupDatabaseStmt*)pStmt);
6,048✔
1267
    case QUERY_NODE_SCAN_DATABASE_STMT:
268✔
1268
      return collectMetaKeyFromScanDatabase(pCxt, (SScanDatabaseStmt*)pStmt);
268✔
1269
    case QUERY_NODE_TRIM_DATABASE_STMT:
6,807✔
1270
      return collectMetaKeyFromTrimDatabase(pCxt, (STrimDatabaseStmt*)pStmt);
6,807✔
1271
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
670✔
1272
      return collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt);
670✔
1273
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
3,024✔
1274
      return collectMetaKeyFromRollupVgroups(pCxt, (SRollupVgroupsStmt*)pStmt);
3,024✔
1275
    case QUERY_NODE_SCAN_VGROUPS_STMT:
670✔
1276
      return collectMetaKeyFromScanVgroups(pCxt, (SScanVgroupsStmt*)pStmt);
670✔
1277
    case QUERY_NODE_CREATE_STREAM_STMT:
498,341✔
1278
      return collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
498,341✔
1279
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
23,584✔
1280
      return collectMetaKeyFromRecalculateStream(pCxt, (SRecalcStreamStmt*)pStmt);
23,584✔
1281
    case QUERY_NODE_GRANT_STMT:
629,684✔
1282
      return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
629,684✔
1283
    case QUERY_NODE_REVOKE_STMT:
453,185✔
1284
      return collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
453,185✔
1285
    case QUERY_NODE_SHOW_DNODES_STMT:
428,779✔
1286
      return collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
428,779✔
1287
    case QUERY_NODE_SHOW_MNODES_STMT:
402,454✔
1288
      return collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
402,454✔
1289
    case QUERY_NODE_SHOW_MODULES_STMT:
×
1290
      return collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
1291
    case QUERY_NODE_SHOW_QNODES_STMT:
3,691✔
1292
      return collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
3,691✔
1293
    case QUERY_NODE_SHOW_SNODES_STMT:
140,372✔
1294
      return collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
140,372✔
1295
    case QUERY_NODE_SHOW_ANODES_STMT:
506✔
1296
      return collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
506✔
1297
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
1298
      return collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
1299
    case QUERY_NODE_SHOW_BNODES_STMT:
122,844✔
1300
      return collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
122,844✔
1301
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
1302
      return collectMetaKeyFromShowBackupNodes(pCxt, (SShowStmt*)pStmt);
×
1303
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
7,758✔
1304
      return collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
7,758✔
1305
    case QUERY_NODE_SHOW_CLUSTER_STMT:
4,257✔
1306
      return collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
4,257✔
1307
    case QUERY_NODE_SHOW_DATABASES_STMT:
241,282✔
1308
      return collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
241,282✔
1309
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
9,157✔
1310
      return collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
9,157✔
1311
    case QUERY_NODE_SHOW_INDEXES_STMT:
9,398✔
1312
      return collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
9,398✔
1313
    case QUERY_NODE_SHOW_STABLES_STMT:
310,523✔
1314
      return collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
310,523✔
1315
    case QUERY_NODE_SHOW_STREAMS_STMT:
147,504✔
1316
      return collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
147,504✔
1317
    case QUERY_NODE_SHOW_TABLES_STMT:
354,162✔
1318
    case QUERY_NODE_SHOW_VTABLES_STMT:
1319
      return collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
354,162✔
1320
    case QUERY_NODE_SHOW_FILESETS_STMT:
×
1321
      return collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt);
×
1322
    case QUERY_NODE_SHOW_TAGS_STMT:
784,797✔
1323
      return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
784,797✔
1324
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
3,760✔
1325
      return collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
3,760✔
1326
    case QUERY_NODE_SHOW_USERS_STMT:
9,208✔
1327
      return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
9,208✔
1328
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
1329
      return collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
1330
    case QUERY_NODE_SHOW_LICENCES_STMT:
5,372✔
1331
      return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
5,372✔
1332
    case QUERY_NODE_SHOW_VGROUPS_STMT:
281,214✔
1333
      return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
281,214✔
1334
    case QUERY_NODE_SHOW_TOPICS_STMT:
32,878✔
1335
      return collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
32,878✔
1336
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
11,476✔
1337
      return collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
11,476✔
1338
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
3,671✔
1339
      return collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
3,671✔
1340
    case QUERY_NODE_SHOW_QUERIES_STMT:
3,671✔
1341
      return collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
3,671✔
1342
    case QUERY_NODE_SHOW_VARIABLES_STMT:
48,710✔
1343
      return collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
48,710✔
1344
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
178,423✔
1345
      return collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
178,423✔
1346
    case QUERY_NODE_SHOW_VNODES_STMT:
3,654✔
1347
      return collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
3,654✔
1348
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
7,521✔
1349
      return collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
7,521✔
1350
    case QUERY_NODE_SHOW_VIEWS_STMT:
14,615✔
1351
      return collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
14,615✔
1352
    case QUERY_NODE_SHOW_COMPACTS_STMT:
228,895✔
1353
      return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
228,895✔
1354
    case QUERY_NODE_SHOW_SCANS_STMT:
5,494✔
1355
      return collectMetaKeyFromShowScans(pCxt, (SShowStmt*)pStmt);
5,494✔
1356
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
4,993✔
1357
      return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
4,993✔
1358
    case QUERY_NODE_SHOW_SCAN_DETAILS_STMT:
4,556✔
1359
      return collectMetaKeyFromShowScanDetails(pCxt, (SShowStmt*)pStmt);
4,556✔
1360
    case QUERY_NODE_SHOW_SSMIGRATES_STMT:
×
1361
      return collectMetaKeyFromShowSsMigrates(pCxt, (SShowStmt*)pStmt);
×
1362
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
173✔
1363
      return collectMetaKeyFromShowTransactionDetails(pCxt, (SShowStmt*)pStmt);
173✔
1364
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
3,542✔
1365
      return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
3,542✔
1366
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
3,542✔
1367
      return collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
3,542✔
1368
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
3,979✔
1369
      return collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
3,979✔
1370
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
763✔
1371
      return collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
763✔
1372
    case QUERY_NODE_SHOW_MOUNTS_STMT:
7,488✔
1373
      return collectMetaKeyFromShowMounts(pCxt, (SShowStmt*)pStmt);
7,488✔
1374
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
32,130✔
1375
      return collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
32,130✔
1376
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
119,559✔
1377
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
1378
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
1379
      return collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
119,559✔
1380
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
10,818✔
1381
      return collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
10,818✔
1382
    case QUERY_NODE_SHOW_CREATE_RSMA_STMT:
1,512✔
1383
      return collectMetaKeyFromShowCreateRsma(pCxt, (SShowCreateRsmaStmt*)pStmt);
1,512✔
1384
    case QUERY_NODE_SHOW_APPS_STMT:
3,671✔
1385
      return collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
3,671✔
1386
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
249,901✔
1387
      return collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
249,901✔
1388
    case QUERY_NODE_SHOW_USAGE_STMT:
1,306✔
1389
      return collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
1,306✔
1390
    case QUERY_NODE_DELETE_STMT:
3,220,234✔
1391
      return collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
3,220,234✔
1392
    case QUERY_NODE_INSERT_STMT:
100,135✔
1393
      return collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
100,135✔
1394
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
6,250✔
1395
      return collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
6,250✔
1396
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
10,555✔
1397
      return collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
10,555✔
1398
    case QUERY_NODE_CREATE_VIEW_STMT:
212,454✔
1399
      return collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
212,454✔
1400
    case QUERY_NODE_DROP_VIEW_STMT:
136,160✔
1401
      return collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
136,160✔
1402
    case QUERY_NODE_CREATE_TSMA_STMT:
511✔
1403
      return collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
511✔
1404
    case QUERY_NODE_DROP_TSMA_STMT:
×
1405
      return collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
×
1406
    case QUERY_NODE_SHOW_TSMAS_STMT:
×
1407
      return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
×
1408
    case QUERY_NODE_CREATE_RSMA_STMT:
74,592✔
1409
      return collectMetaKeyFromCreateRsmaStmt(pCxt, (SCreateRsmaStmt*)pStmt);
74,592✔
1410
    case QUERY_NODE_DROP_RSMA_STMT:
1,512✔
1411
      return collectMetaKeyFromDropRsmaStmt(pCxt, (SDropRsmaStmt*)pStmt);
1,512✔
1412
    case QUERY_NODE_ALTER_RSMA_STMT:
13,104✔
1413
      return collectMetaKeyFromAlterRsmaStmt(pCxt, (SAlterRsmaStmt*)pStmt);
13,104✔
1414
    case QUERY_NODE_SHOW_RSMAS_STMT:
8,568✔
1415
      return collectMetaKeyFromShowRsmasStmt(pCxt, (SShowStmt*)pStmt);
8,568✔
1416
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
28,728✔
1417
      return collectMetaKeyFromShowRetentionsStmt(pCxt, (SShowStmt*)pStmt);
28,728✔
1418
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
1,512✔
1419
      return collectMetaKeyFromShowRetentionDetailsStmt(pCxt, (SShowStmt*)pStmt);
1,512✔
1420
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
9,454✔
1421
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
1422
      return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
9,454✔
1423
    default:
6,630,630✔
1424
      break;
6,630,630✔
1425
  }
1426
  return TSDB_CODE_SUCCESS;
6,630,630✔
1427
}
1428

1429
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
201,004,308✔
1430
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
201,004,308✔
1431
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
200,996,389✔
1432
}
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