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

taosdata / TDengine / #4911

04 Jan 2026 09:05AM UTC coverage: 65.028% (-0.8%) from 65.864%
#4911

push

travis-ci

web-flow
merge: from main to 3.0 branch #34156

1206 of 4524 new or added lines in 22 files covered. (26.66%)

1517 existing lines in 134 files now uncovered.

195276 of 300296 relevant lines covered (65.03%)

116931714.52 hits per line

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

86.16
/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) {
250,172,982✔
33
  *pQuery = NULL;
250,172,982✔
34
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
250,175,570✔
35
  if (NULL == *pQuery) {
250,179,828✔
36
    return code;
×
37
  }
38
  (*pQuery)->pRoot = pRootNode;
250,180,266✔
39
  (*pQuery)->placeholderNum = placeholderNo;
250,172,436✔
40
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
250,175,952✔
41
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
250,140,820✔
42

43
  return TSDB_CODE_SUCCESS;
250,175,207✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
257,855,452✔
47
  SAstCreateContext cxt;
257,153,398✔
48
  initAstCreateContext(pParseCxt, &cxt);
257,856,649✔
49
  void* pParser = ParseAlloc((FMalloc)taosMemMalloc);
257,843,173✔
50
  if (!pParser) return terrno;
257,854,295✔
51
  int32_t i = 0;
257,854,295✔
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);
160,390,198✔
56
      goto abort_parse;
160,566,011✔
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);
600,617✔
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: {
90,102,007✔
74
        Parse(pParser, 0, t0, &cxt);
90,102,007✔
75
        goto abort_parse;
90,102,007✔
76
      }
77
      case TK_NK_ILLEGAL: {
196,765✔
78
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
196,765✔
79
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
196,765✔
80
        goto abort_parse;
196,765✔
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;
7,173,784✔
92
        }
93
    }
94
  }
95

96
abort_parse:
257,838,156✔
97
  ParseFree(pParser, (FFree)taosAutoMemoryFree);
257,847,959✔
98
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
257,844,629✔
99
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
250,164,702✔
100
    if (TSDB_CODE_SUCCESS != code) {
250,152,413✔
101
      return code;
×
102
    }
103
  }
104
  taosArrayDestroy(cxt.pPlaceholderValues);
257,832,340✔
105
  return cxt.errCode;
257,836,799✔
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
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt);
124
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt);
125

126
static EDealRes collectMetaKeyFromFunction(SCollectMetaKeyFromExprCxt* pCxt, SFunctionNode* pFunc) {
455,064,196✔
127
  switch (fmGetFuncType(pFunc->functionName)) {
455,064,196✔
128
    case FUNCTION_TYPE_LAST_ROW:
15,935,208✔
129
    case FUNCTION_TYPE_LAST:
130
      pCxt->hasLastRowOrLast = true;
15,935,208✔
131
      break;
15,935,278✔
132
    case FUNCTION_TYPE_UDF:
189,933✔
133
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
189,933✔
134
      break;
189,933✔
135
    default:
438,930,111✔
136
      break;
438,930,111✔
137
  }
138
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
455,055,322✔
139
}
140

141
static bool needGetTableIndex(SNode* pStmt) {
390,182,968✔
142
  return false;
390,182,968✔
143
  if (QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && QUERY_NODE_SELECT_STMT == nodeType(pStmt)) {
144
    SSelectStmt* pSelect = (SSelectStmt*)pStmt;
145
    return (NULL != pSelect->pWindow && QUERY_NODE_INTERVAL_WINDOW == nodeType(pSelect->pWindow));
146
  }
147
  return false;
148
}
149

150
static int32_t collectMetaKeyFromInsTagsImpl(SCollectMetaKeyCxt* pCxt, SName* pName) {
1,419,841✔
151
  if (0 == pName->type) {
1,419,841✔
152
    return TSDB_CODE_SUCCESS;
994,616✔
153
  }
154
  if (TSDB_DB_NAME_T == pName->type) {
425,225✔
155
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
126,088✔
156
  }
157
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
299,137✔
158
}
159

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

170
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
390,181,129✔
171
                                               EPrivType privType, EPrivObjType objType) {
172
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
390,181,129✔
173
  if (TSDB_CODE_SUCCESS == code) {
390,182,109✔
174
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, NULL, PRIV_DB_USE, PRIV_OBJ_DB,
390,182,111✔
175
                                  pCxt->pMetaCache);
176
  }
177
  if (TSDB_CODE_SUCCESS == code) {
390,183,593✔
178
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
390,183,593✔
179
  }
180
  if (TSDB_CODE_SUCCESS == code) {
390,183,110✔
181
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
390,183,110✔
182
  }
183
  if (TSDB_CODE_SUCCESS == code) {
390,183,970✔
184
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, privType, objType,
390,183,970✔
185
                                  pCxt->pMetaCache);
186
  }
187
#ifdef TD_ENTERPRISE
188
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
390,183,978✔
189
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, privType,
14,555✔
190
                                  objType, pCxt->pMetaCache);
191
  }
192
#endif
193
  if (TSDB_CODE_SUCCESS == code) {
390,182,198✔
194
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
390,182,198✔
195
  }
196
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
390,183,976✔
197
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
×
198
  }
199
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
390,182,046✔
200
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
2,762✔
201
  }
202
  if (TSDB_CODE_SUCCESS == code &&
390,181,229✔
203
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
390,181,229✔
204
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_TABLE_VC_COLS) ||
389,635,879✔
205
       0 == strcmp(pTable, TSDB_INS_DISK_USAGE) || 0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS)) &&
388,760,328✔
206
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
1,424,031✔
207
    code = collectMetaKeyFromInsTags(pCxt);
1,419,841✔
208
  }
209
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
390,180,632✔
210
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
225,807✔
211
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
225,807✔
212
  }
213
  return code;
390,180,828✔
214
}
215

216
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
387,928,003✔
217
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
387,928,003✔
218
                                                  PRIV_TBL_SELECT, PRIV_OBJ_TBL);
219
  if (TSDB_CODE_SUCCESS == pCxt->errCode && pCxt->pComCxt->collectVStbRefDbs) {
387,928,482✔
220
    pCxt->errCode = reserveVStbRefDbsInCache(pCxt->pComCxt->pParseCxt->acctId, pRealTable->table.dbName,
702,671,201✔
221
                                             pRealTable->table.tableName, pCxt->pComCxt->pMetaCache);
702,669,716✔
222
  }
223
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
387,932,216✔
224
}
225

226
static EDealRes collectMetaKeyFromTempTable(SCollectMetaKeyFromExprCxt* pCxt, STempTableNode* pTempTable) {
29,017,618✔
227
  pCxt->errCode = collectMetaKeyFromQuery(pCxt->pComCxt, pTempTable->pSubquery);
29,017,618✔
228
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
29,017,618✔
229
}
230

231
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
235,597,643✔
232
  if (pOperator->opType != OP_TYPE_EQUAL) {
235,597,643✔
233
    return TSDB_CODE_SUCCESS;
209,244,167✔
234
  }
235

236
  SValueNode* pValueNode = NULL;
26,352,973✔
237
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
26,352,973✔
238
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
3,538,720✔
239
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
408,015✔
240
    pValueNode = (SValueNode*)pOperator->pRight;
392,411✔
241
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
25,960,562✔
242
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
68,572✔
243
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
876✔
244
    pValueNode = (SValueNode*)pOperator->pLeft;
×
245
  } else {
246
    return TSDB_CODE_SUCCESS;
25,960,562✔
247
  }
248

249
  *ppTableName = pValueNode->literal;
392,411✔
250

251
  return TSDB_CODE_SUCCESS;
392,411✔
252
}
253

254
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
337,019,035✔
255
  if (!pCxt->tbnameCollect) {
337,019,035✔
256
    return DEAL_RES_CONTINUE;
101,421,392✔
257
  }
258

259
  char*   pTableName = NULL;
235,598,409✔
260
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
235,597,643✔
261
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
235,598,507✔
262
  if (pTableName) {
235,598,507✔
263
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
392,411✔
264
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
392,411✔
265
                                                    pTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
266
  }
267

268
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
235,598,507✔
269
}
270

271
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
2,147,483,647✔
272
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
2,147,483,647✔
273
  switch (nodeType(pNode)) {
2,147,483,647✔
274
    case QUERY_NODE_FUNCTION:
455,064,190✔
275
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
455,064,190✔
276
    case QUERY_NODE_REAL_TABLE:
387,676,573✔
277
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
387,676,573✔
278
    case QUERY_NODE_TEMP_TABLE:
29,017,618✔
279
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
29,017,618✔
280
    case QUERY_NODE_OPERATOR:
337,020,785✔
281
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
337,020,785✔
282
    case QUERY_NODE_SET_OPERATOR:
17,792,784✔
283
      return collectMetaKeyFromSetOperator(pCxt->pComCxt, (SSetOperator*)pNode);
17,792,784✔
284
    case QUERY_NODE_SELECT_STMT:
159,026,697✔
285
      return collectMetaKeyFromSelect(pCxt->pComCxt, (SSelectStmt*)pNode);
159,026,697✔
286
    default:
1,663,230,965✔
287
      break;
1,663,230,965✔
288
  }
289
  return DEAL_RES_CONTINUE;
1,663,230,965✔
290
}
291

292
static int32_t collectMetaKeyFromExprs(SCollectMetaKeyCxt* pCxt, SNodeList* pList) {
29,335,645✔
293
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .errCode = TSDB_CODE_SUCCESS, .tbnameCollect = false};
29,335,645✔
294
  nodesWalkExprs(pList, collectMetaKeyFromExprImpl, &cxt);
29,335,645✔
295
  return cxt.errCode;
29,335,645✔
296
}
297

298
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt) {
29,335,645✔
299
  int32_t code = collectMetaKeyFromQuery(pCxt, pStmt->pLeft);
29,335,645✔
300
  if (TSDB_CODE_SUCCESS == code) {
29,335,645✔
301
    code = collectMetaKeyFromQuery(pCxt, pStmt->pRight);
29,335,645✔
302
  }
303
  if (TSDB_CODE_SUCCESS == code) {
29,335,645✔
304
    code = collectMetaKeyFromExprs(pCxt, pStmt->pOrderByList);
29,335,645✔
305
  }
306
  return code;
29,335,645✔
307
}
308

309
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
13,418,877✔
310
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
13,418,877✔
311
    return TSDB_CODE_SUCCESS;
463,365✔
312
  }
313
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
12,955,512✔
314
}
315

316
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
399,127,425✔
317
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
399,127,425✔
318
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
399,128,360✔
319
    cxt.tbnameCollect = true;
328,597,752✔
320
    cxt.pComCxt->collectVStbRefDbs = true;
328,597,752✔
321
  }
322
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
399,121,563✔
323
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
399,129,606✔
324
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
13,418,819✔
325
  }
326
  return cxt.errCode;
399,129,608✔
327
}
328

329
static int32_t collectMetaKeyFromAlterDatabase(SCollectMetaKeyCxt* pCxt, SAlterDatabaseStmt* pStmt) {
178,466✔
330
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
178,466✔
331
  if (TSDB_CODE_SUCCESS == code) {
178,466✔
332
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_CM_ALTER,
178,466✔
333
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
334
  }
335
  return code;
178,466✔
336
}
337

338
static int32_t collectMetaKeyFromDropDatabase(SCollectMetaKeyCxt* pCxt, SDropDatabaseStmt* pStmt) {
1,065,900✔
339
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,065,900✔
340
  if (TSDB_CODE_SUCCESS == code) {
1,065,900✔
341
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_CM_DROP,
1,065,900✔
342
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
343
  }
344
  return code;
1,065,900✔
345
}
346

347
static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) {
1,724,503✔
348
  int32_t code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,724,503✔
349
  if (TSDB_CODE_SUCCESS == code) {
1,724,503✔
350
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_FLUSH,
1,724,503✔
351
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
352
  }
353
  return code;
1,724,503✔
354
}
355

356
static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) {
16,368,796✔
357
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
16,368,796✔
358
  if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) {
16,368,796✔
359
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
15,040,279✔
360
  }
361
  if (TSDB_CODE_SUCCESS == code) {
16,368,796✔
362
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
16,368,796✔
363
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
364
  }
365
  if (TSDB_CODE_SUCCESS == code) {
16,368,796✔
366
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE,
16,368,796✔
367
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
368
  }
369
  return code;
16,368,796✔
370
}
371

372
static int32_t collectMetaKeyFromCreateVTable(SCollectMetaKeyCxt* pCxt, SCreateVTableStmt* pStmt) {
132,313✔
373
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
132,313✔
374
  if (TSDB_CODE_SUCCESS == code) {
132,313✔
375
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
132,313✔
376
  }
377
  if (TSDB_CODE_SUCCESS == code) {
132,313✔
378
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
132,313✔
379
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
380
  }
381
  if (TSDB_CODE_SUCCESS == code) {
132,313✔
382
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE,
132,313✔
383
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
384
  }
385
  if (TSDB_CODE_SUCCESS == code) {
132,313✔
386
    SNode* pNode = NULL;
132,313✔
387
    FOREACH(pNode, pStmt->pCols) {
92,428,636✔
388
      SColumnDefNode* pCol = (SColumnDefNode*)pNode;
92,296,323✔
389
      if (NULL == pCol) {
92,296,323✔
390
        code = TSDB_CODE_PAR_INVALID_COLUMN;
×
391
        break;
×
392
      }
393
      SColumnOptions* pOptions = (SColumnOptions*)pCol->pOptions;
92,296,323✔
394
      if (pOptions && pOptions->hasRef) {
92,296,323✔
395
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
57,583,929✔
396
        if (TSDB_CODE_SUCCESS == code) {
57,583,929✔
397
          code =
398
              reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
57,583,929✔
399
        }
400
        if (TSDB_CODE_SUCCESS == code) {
57,583,929✔
401
          code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pOptions->refDb,
115,167,630✔
402
                                        pOptions->refTable, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
57,583,929✔
403
        }
404
        if (TSDB_CODE_SUCCESS != code) {
57,583,929✔
405
          break;
×
406
        }
407
      }
408
    }
409
  }
410
  return code;
132,313✔
411
}
412

413
static int32_t collectMetaKeyFromCreateVSubTable(SCollectMetaKeyCxt* pCxt, SCreateVSubTableStmt* pStmt) {
210,868✔
414
  int32_t code = TSDB_CODE_SUCCESS;
210,868✔
415
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
210,868✔
416
  // super table's meta
417
  PAR_ERR_RET(
210,868✔
418
      reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->useDbName, pStmt->useTableName, pCxt->pMetaCache));
419
  // child table's meta
420
  PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
210,868✔
421
  // check db's write auth
422
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
210,868✔
423
                                     PRIV_OBJ_DB, pCxt->pMetaCache));
424
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
210,868✔
425
                                     PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache));
426
  // check org table's read auth
427
  SNode*     pNode = NULL;
210,868✔
428
  SNodeList* pTmpNodeList = pStmt->pSpecificColRefs ? pStmt->pSpecificColRefs : pStmt->pColRefs;
210,868✔
429
  if (NULL == pTmpNodeList) {
210,868✔
430
    // no column reference
431
    return TSDB_CODE_SUCCESS;
5,940✔
432
  }
433

434
  FOREACH(pNode, pTmpNodeList) {
35,447,951✔
435
    SColumnRefNode* pColRef = (SColumnRefNode*)pNode;
35,243,023✔
436
    if (NULL == pColRef) {
35,243,023✔
437
      code = TSDB_CODE_PAR_INVALID_COLUMN;
×
438
      break;
×
439
    }
440
    PAR_ERR_RET(
35,243,023✔
441
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName, pCxt->pMetaCache));
442
    PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName,
35,243,023✔
443
                                          pCxt->pMetaCache));
444
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pColRef->refDbName,
35,243,023✔
445
                                       pColRef->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache));
446
  }
447
  return code;
204,928✔
448
}
449

450
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
30,337,375✔
451
  int32_t code = TSDB_CODE_SUCCESS;
30,337,375✔
452
  SNode*  pNode = NULL;
30,337,375✔
453
  FOREACH(pNode, pStmt->pSubTables) {
66,701,118✔
454
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
36,361,114✔
455
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
36,365,224✔
456
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
36,365,224✔
457
      if (TSDB_CODE_SUCCESS == code) {
36,360,448✔
458
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
36,360,857✔
459
                                       pCxt->pMetaCache);
460
      }
461
      if (TSDB_CODE_SUCCESS == code) {
36,362,981✔
462
        code =
463
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
36,362,981✔
464
      }
465
      if (TSDB_CODE_SUCCESS == code) {
36,367,653✔
466
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
36,367,653✔
467
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
468
      }
469
      if (TSDB_CODE_SUCCESS == code) {
36,366,877✔
470
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
36,366,877✔
471
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
472
      }
473
    } else {
474
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
475
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
476
      if (TSDB_CODE_SUCCESS == code) {
×
477
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
478
                                       pCxt->pMetaCache);
479
      }
480
      if (TSDB_CODE_SUCCESS == code) {
×
481
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
482
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
483
      }
484
      if (TSDB_CODE_SUCCESS == code) {
×
485
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
486
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
487
      }
488
    }
489

490
    if (TSDB_CODE_SUCCESS != code) {
36,363,743✔
491
      break;
×
492
    }
493
  }
494
  return code;
30,339,127✔
495
}
496

497
static int32_t collectMetaKeyFromCreateSubTableFromFile(SCollectMetaKeyCxt*            pCxt,
1,285✔
498
                                                        SCreateSubTableFromFileClause* pClause) {
499
  int32_t code = TSDB_CODE_SUCCESS;
1,285✔
500
  SNode*  pNode = NULL;
1,285✔
501

502
  code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
1,285✔
503
  if (TSDB_CODE_SUCCESS == code) {
1,285✔
504
    code =
505
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, pCxt->pMetaCache);
1,285✔
506
  }
507
  if (TSDB_CODE_SUCCESS == code) {
1,285✔
508
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
1,285✔
509
                                  PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
510
  }
511
  if (TSDB_CODE_SUCCESS == code) {
1,285✔
512
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
1,285✔
513
                                  PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
514
  }
515

516
  return code;
1,285✔
517
}
518

519
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
2,014,861✔
520
  int32_t code = TSDB_CODE_SUCCESS;
2,014,861✔
521
  SNode*  pNode = NULL;
2,014,861✔
522
  FOREACH(pNode, pStmt->pTables) {
4,137,910✔
523
    SDropTableClause* pClause = (SDropTableClause*)pNode;
2,123,049✔
524
    if (pStmt->withOpt) {
2,123,049✔
525
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
136,490✔
526
      if (TSDB_CODE_SUCCESS == code) {
136,490✔
527
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
136,490✔
528
      }
529
      if (TSDB_CODE_SUCCESS == code) {
136,490✔
530
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
136,490✔
531
      }
532
    } else {
533
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,986,559✔
534
      if (TSDB_CODE_SUCCESS == code) {
1,986,559✔
535
        code =
536
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,986,559✔
537
      }
538
      if (TSDB_CODE_SUCCESS == code) {
1,986,559✔
539
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
3,968,247✔
540
                                      pClause->tableName, PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
1,986,559✔
541
      }
542
    }
543
    if (TSDB_CODE_SUCCESS == code) {
2,123,049✔
544
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE,
2,123,049✔
545
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
546
    }
547

548
    if (TSDB_CODE_SUCCESS != code) {
2,123,049✔
549
      break;
×
550
    }
551
  }
552
  return code;
2,014,861✔
553
}
554

555
static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) {
81,189✔
556
  int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
81,189✔
557
                                        PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
558
  if (TSDB_CODE_SUCCESS == code) {
81,189✔
559
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
81,189✔
560
  }
561
  if (TSDB_CODE_SUCCESS == code) {
81,189✔
562
    if (pStmt->withOpt) {
81,189✔
563
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
51,485✔
564
    } else {
565
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
29,704✔
566
                                    PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
567
    }
568
  }
569
  return code;
81,189✔
570
}
571

572
static int32_t collectMetaKeyFromDropVtable(SCollectMetaKeyCxt* pCxt, SDropVirtualTableStmt* pStmt) {
68,854✔
573
  int32_t code = TSDB_CODE_SUCCESS;
68,854✔
574
  if (pStmt->withOpt) {
68,854✔
575
    code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
×
576
    if (TSDB_CODE_SUCCESS == code) {
×
577
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
578
    }
579
    if (TSDB_CODE_SUCCESS == code) {
×
580
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
581
    }
582
  } else {
583
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
68,854✔
584
    if (TSDB_CODE_SUCCESS == code) {
68,854✔
585
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
68,854✔
586
    }
587
    if (TSDB_CODE_SUCCESS == code) {
68,854✔
588
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
68,854✔
589
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
590
    }
591
    if (TSDB_CODE_SUCCESS == code) {
68,854✔
592
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
68,854✔
593
                                    PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
594
    }
595
  }
596
  return code;
68,854✔
597
}
598

599
static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
20,374,666✔
600
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
20,374,666✔
601
  if (TSDB_CODE_SUCCESS == code && (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType ||
20,374,666✔
602
                                    TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL == pStmt->alterType)) {
20,374,666✔
603
    SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
7,934,211✔
604
    tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
7,934,211✔
605
    tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
7,934,211✔
606
    code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
7,934,211✔
607
  }
608
  if (TSDB_CODE_SUCCESS == code) {
20,374,666✔
609
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
20,374,666✔
610
  }
611
  if (TSDB_CODE_SUCCESS == code) {
20,374,666✔
612
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
20,374,666✔
613
  }
614
  if (TSDB_CODE_SUCCESS == code) {
20,374,666✔
615
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
20,374,666✔
616
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
617
  }
618
  if (TSDB_CODE_SUCCESS == code) {
20,374,666✔
619
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
20,374,666✔
620
                                  PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache);
621
  }
622
  return code;
20,374,666✔
623
}
624

625
static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
482,338✔
626
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
482,338✔
627
  if (TSDB_CODE_SUCCESS == code) {
482,338✔
628
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
482,338✔
629
  }
630
  if (TSDB_CODE_SUCCESS == code) {
482,338✔
631
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
482,338✔
632
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
633
  }
634
  if (TSDB_CODE_SUCCESS == code) {
482,338✔
635
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
482,338✔
636
                                  PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache);
637
  }
638
  return code;
482,338✔
639
}
640

641
static int32_t collectMetaKeyFromAlterVtable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
361,537✔
642
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
361,537✔
643
  if (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType ||
361,537✔
644
      TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL == pStmt->alterType) {
361,537✔
645
    SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
29,844✔
646
    tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
29,844✔
647
    tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
29,844✔
648
    PAR_ERR_RET(catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name));
29,844✔
649
  }
650
  PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
361,537✔
651
  PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
361,537✔
652
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
361,537✔
653
                                     PRIV_OBJ_DB, pCxt->pMetaCache));
654
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
361,537✔
655
                                     PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache));
656
  if (pStmt->alterType == TSDB_ALTER_TABLE_ALTER_COLUMN_REF ||
361,537✔
657
      pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COLUMN_REF) {
255,534✔
658
    PAR_ERR_RET(
138,343✔
659
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->refDbName, pStmt->refTableName, pCxt->pMetaCache));
660
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName, NULL,
138,343✔
661
                                       PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache));
662
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName,
138,343✔
663
                                       pStmt->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache));
664
  }
665
  return TSDB_CODE_SUCCESS;
361,537✔
666
}
667

668
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
1,997,008✔
669
  int32_t code = reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,997,008✔
670
  if (TSDB_CODE_SUCCESS == code) {
1,997,056✔
671
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,997,056✔
672
  }
673
  if (TSDB_CODE_SUCCESS == code) {
1,997,056✔
674
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
1,997,056✔
675
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
676
  }
677
  return code;
1,997,056✔
678
}
679

680
static int32_t collectMetaKeyFromCreateIndex(SCollectMetaKeyCxt* pCxt, SCreateIndexStmt* pStmt) {
11,480✔
681
  int32_t code = TSDB_CODE_SUCCESS;
11,480✔
682
  if (INDEX_TYPE_SMA == pStmt->indexType || INDEX_TYPE_NORMAL == pStmt->indexType) {
11,480✔
683
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
11,480✔
684
    if (TSDB_CODE_SUCCESS == code) {
11,480✔
685
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
11,480✔
686
    }
687
    if (TSDB_CODE_SUCCESS == code) {
11,480✔
688
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
11,480✔
689
    }
690
    if (TSDB_CODE_SUCCESS == code) {
11,480✔
691
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
11,480✔
692
    }
693
    if (TSDB_CODE_SUCCESS == code) {
11,480✔
694
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
11,480✔
695
                                    PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
696
    }
697
    if (TSDB_CODE_SUCCESS == code) {
11,480✔
698
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
11,480✔
699
                                    PRIV_IDX_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
700
    }
701
    if (TSDB_CODE_SUCCESS == code) {
11,480✔
702
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
11,480✔
703
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
704
    }
705
  }
706
  return code;
11,480✔
707
}
708

709
static int32_t collectMetaKeyFromDropIndex(SCollectMetaKeyCxt* pCxt, SDropIndexStmt* pStmt) {
3,207✔
710
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->indexDbName, pCxt->pMetaCache);
3,207✔
711
  if (TSDB_CODE_SUCCESS == code) {
3,207✔
712
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->indexDbName, NULL,
3,207✔
713
                                  PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
714
  }
715
  if (TSDB_CODE_SUCCESS == code) {
3,207✔
716
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->indexDbName, pStmt->indexName,
3,207✔
717
                                  PRIV_CM_DROP, PRIV_OBJ_IDX, pCxt->pMetaCache);
718
  }
719
  return code;
3,207✔
720
}
721

722
static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) {
165,452✔
723
  int32_t code = 0;
165,452✔
724
  if (NULL != pStmt->pQuery) {
165,452✔
725
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
131,075✔
726
  }
727
  if (NULL != pStmt->pWhere) {
165,452✔
728
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
6,244✔
729
  }
730
  if (pStmt->subDbName[0] != '\0') {
165,452✔
731
    if (TSDB_CODE_SUCCESS == code) {
34,377✔
732
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->subDbName, pCxt->pMetaCache);
34,377✔
733
    }
734
    if (TSDB_CODE_SUCCESS == code) {
34,377✔
735
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->subDbName, NULL,
34,377✔
736
                                    PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
737
    }
738
    if (TSDB_CODE_SUCCESS == code) {
34,377✔
739
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->subDbName, NULL,
34,377✔
740
                                    PRIV_TOPIC_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
741
    }
742
  }
743
  return code;
165,452✔
744
}
745

746
static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) {
12,469,562✔
747
  return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
12,469,562✔
748
}
749

750
static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStmt* pStmt) {
483,670✔
751
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
483,670✔
752
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
483,706✔
753
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
483,706✔
754
  int32_t code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
483,706✔
755
#ifdef TD_ENTERPRISE
756
  if (TSDB_CODE_SUCCESS == code) {
483,706✔
757
    char dbFName[TSDB_DB_FNAME_LEN];
475,129✔
758
    (void)tNameGetFullDbName(&name, dbFName);
483,706✔
759
    code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->tableName, 0);
483,706✔
760
  }
761
#endif
762
  if (TSDB_CODE_SUCCESS == code) {
483,706✔
763
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
483,706✔
764
  }
765
  return code;
483,672✔
766
}
767

768
static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) {
251,519✔
769
  int32_t code = TSDB_CODE_SUCCESS;
251,519✔
770

771
  if (strcmp(pStmt->targetTabName, "") != 0) {
251,519✔
772
    PAR_ERR_RET(
248,399✔
773
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache));
774
    (void)reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName,
248,399✔
775
                                    pCxt->pMetaCache);
776
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pCxt->pMetaCache));
248,399✔
777
  }
778
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache));
251,519✔
779
  SRealTableNode* pTriggerTable = (SRealTableNode*)((SStreamTriggerNode*)pStmt->pTrigger)->pTrigerTable;
251,519✔
780
  if (pTriggerTable) {
251,519✔
781
    SCollectMetaKeyFromExprCxt cxt = {
247,224✔
782
        .pComCxt = pCxt, .hasLastRowOrLast = false, .tbnameCollect = true, .errCode = TSDB_CODE_SUCCESS};
783
    cxt.pComCxt->collectVStbRefDbs = true;
247,224✔
784
    EDealRes res = collectMetaKeyFromRealTable(&cxt, pTriggerTable);
247,224✔
785
    PAR_ERR_RET(cxt.errCode);
247,224✔
786
    PAR_ERR_RET(reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
247,224✔
787
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
247,224✔
788
  }
789
  if (pStmt->pQuery) {
251,519✔
790
    PAR_ERR_RET(collectMetaKeyFromQuery(pCxt, pStmt->pQuery));
248,399✔
791
  }
792
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->streamDbName, NULL,
251,519✔
793
                                     PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache));
794
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->streamDbName, NULL,
251,519✔
795
                                     PRIV_STREAM_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache));
796
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->targetDbName, NULL,
251,519✔
797
                                     PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache));
798
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->targetDbName, NULL,
251,519✔
799
                                     PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache));
800
  if (pStmt->pTrigger) {
251,519✔
801
    SStreamTriggerNode* pTrigger = (SStreamTriggerNode*)pStmt->pTrigger;
251,519✔
802
    STableNode*         pTriggerTable = (STableNode*)pTrigger->pTrigerTable;
251,519✔
803
    if (pTriggerTable) {
251,519✔
804
      PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pTriggerTable->dbName,
247,224✔
805
                                         pTriggerTable->tableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache));
806
    }
807
  }
808

809
  return code;
251,519✔
810
}
811

812
static int32_t collectMetaKeyFromRecalculateStream(SCollectMetaKeyCxt* pCxt, SRecalcStreamStmt* pStmt) {
10,436✔
813
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache);
10,436✔
814
}
815

816
static int32_t collectMetaKeyFromShowDnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
19,904✔
817
  int32_t code = 0;
19,904✔
818
  if (pCxt->pParseCxt->enableSysInfo) {
19,904✔
819
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DNODES,
19,280✔
820
                                   pCxt->pMetaCache);
821
  }
822
  if (TSDB_CODE_SUCCESS == code) {
19,904✔
823
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
19,904✔
824
                                  pCxt->pMetaCache);
825
  }
826
  return code;
19,904✔
827
}
828

829
static int32_t collectMetaKeyFromShowMnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
285,739✔
830
  int32_t code = 0;
285,739✔
831
  if (pCxt->pParseCxt->enableSysInfo) {
285,739✔
832
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MNODES,
285,115✔
833
                                   pCxt->pMetaCache);
834
  }
835
  if (TSDB_CODE_SUCCESS == code) {
285,739✔
836
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
285,739✔
837
                                  pCxt->pMetaCache);
838
  }
839
  return code;
285,739✔
840
}
841

842
static int32_t collectMetaKeyFromShowModules(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
843
  if (pCxt->pParseCxt->enableSysInfo) {
×
844
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MODULES,
×
845
                                   pCxt->pMetaCache);
846
  }
847
  return TSDB_CODE_SUCCESS;
×
848
}
849

850
static int32_t collectMetaKeyFromShowQnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,254✔
851
  int32_t code = 0;
1,254✔
852
  if (pCxt->pParseCxt->enableSysInfo) {
1,254✔
853
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_QNODES,
630✔
854
                                   pCxt->pMetaCache);
855
  }
856
  if (TSDB_CODE_SUCCESS == code) {
1,254✔
857
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
1,254✔
858
                                  pCxt->pMetaCache);
859
  }
860
  return code;
1,254✔
861
}
862

863
static int32_t collectMetaKeyFromShowSnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
60,400✔
864
  int32_t code = 0;
60,400✔
865
  if (pCxt->pParseCxt->enableSysInfo) {
60,400✔
866
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SNODES,
59,152✔
867
                                   pCxt->pMetaCache);
868
  }
869
  if (TSDB_CODE_SUCCESS == code) {
60,400✔
870
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
60,400✔
871
                                  pCxt->pMetaCache);
872
  }
873
  return code;
60,400✔
874
}
875

876
static int32_t collectMetaKeyFromShowAnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
156✔
877
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES,
156✔
878
                                         pCxt->pMetaCache);
879
  if (TSDB_CODE_SUCCESS == code) {
156✔
880
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
156✔
881
                                  pCxt->pMetaCache);
882
  }
883
  return code;
156✔
884
}
885

886
static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
887
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
×
888
                                         TSDB_INS_TABLE_ANODES_FULL, pCxt->pMetaCache);
889
  if (TSDB_CODE_SUCCESS == code) {
×
890
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
×
891
                                  pCxt->pMetaCache);
892
  }
893
  return code;
×
894
}
895

896
static int32_t collectMetaKeyFromShowBnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
51,229✔
897
  int32_t code = 0;
51,229✔
898
  if (pCxt->pParseCxt->enableSysInfo) {
51,229✔
899
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BNODES,
51,229✔
900
                                   pCxt->pMetaCache);
901
  }
902
  if (TSDB_CODE_SUCCESS == code) {
51,229✔
903
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
51,229✔
904
                                  pCxt->pMetaCache);
905
  }
906
  return code;
51,229✔
907
}
908

909
static int32_t collectMetaKeyFromShowBackupNodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
910
  if (pCxt->pParseCxt->enableSysInfo) {
×
911
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BACKUP_NODES,
×
912
                                   pCxt->pMetaCache);
913
  }
914
  return TSDB_CODE_SUCCESS;
×
915
}
916

917
static int32_t collectMetaKeyFromShowXnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
378✔
918
  if (pCxt->pParseCxt->enableSysInfo) {
378✔
919
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODES,
378✔
920
                                   pCxt->pMetaCache);
921
  }
NEW
922
  return TSDB_CODE_SUCCESS;
×
923
}
924

925
static int32_t collectMetaKeyFromShowXnodeTasks(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
378✔
926
  if (pCxt->pParseCxt->enableSysInfo) {
378✔
927
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODE_TASKS,
378✔
928
                                   pCxt->pMetaCache);
929
  }
NEW
930
  return TSDB_CODE_SUCCESS;
×
931
}
932
static int32_t collectMetaKeyFromShowXnodeAgents(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
378✔
933
  if (pCxt->pParseCxt->enableSysInfo) {
378✔
934
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODE_AGENTS,
378✔
935
                                   pCxt->pMetaCache);
936
  }
NEW
937
  return TSDB_CODE_SUCCESS;
×
938
}
939
static int32_t collectMetaKeyFromShowXnodeJobs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
378✔
940
  if (pCxt->pParseCxt->enableSysInfo) {
378✔
941
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODE_JOBS,
378✔
942
                                   pCxt->pMetaCache);
943
  }
NEW
944
  return TSDB_CODE_SUCCESS;
×
945
}
946
static int32_t collectMetaKeyFromShowArbGroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
289✔
947
  if (pCxt->pParseCxt->enableSysInfo) {
289✔
948
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ARBGROUPS,
289✔
949
                                   pCxt->pMetaCache);
950
  }
951
  return TSDB_CODE_SUCCESS;
×
952
}
953

954
static int32_t collectMetaKeyFromShowCluster(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,578✔
955
  if (pCxt->pParseCxt->enableSysInfo) {
1,578✔
956
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CLUSTER,
954✔
957
                                   pCxt->pMetaCache);
958
  }
959
  return TSDB_CODE_SUCCESS;
624✔
960
}
961

962
static int32_t collectMetaKeyFromShowDatabases(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
156,230✔
963
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DATABASES,
156,230✔
964
                                 pCxt->pMetaCache);
965
}
966

967
static int32_t collectMetaKeyFromShowFunctions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
10,672✔
968
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FUNCTIONS,
10,672✔
969
                                         pCxt->pMetaCache);
970
  if (TSDB_CODE_SUCCESS == code) {
10,672✔
971
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_FUNC_SHOW, 0,
10,672✔
972
                                  pCxt->pMetaCache);
973
  }
974
  return code;
10,672✔
975
}
976

977
static int32_t collectMetaKeyFromShowIndexes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,128✔
978
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_INDEXES,
4,128✔
979
                                         pCxt->pMetaCache);
980
  if (TSDB_CODE_SUCCESS == code) {
4,128✔
981
    code =
982
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
4,128✔
983
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
984
  }
985
  return code;
4,128✔
986
}
987

988
static int32_t collectMetaKeyFromShowStables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
205,909✔
989
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STABLES,
205,909✔
990
                                         pCxt->pMetaCache);
991
  if (TSDB_CODE_SUCCESS == code) {
205,909✔
992
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
205,909✔
993
  }
994
  if (TSDB_CODE_SUCCESS == code) {
205,909✔
995
    code =
996
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
205,909✔
997
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
998
  }
999
  return code;
205,909✔
1000
}
1001

1002
static int32_t collectMetaKeyFromShowStreams(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
100,380✔
1003
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STREAMS,
100,380✔
1004
                                         pCxt->pMetaCache);
1005
  if (TSDB_CODE_SUCCESS == code) {
100,380✔
1006
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
100,380✔
1007
  }
1008
  if (TSDB_CODE_SUCCESS == code) {
100,380✔
1009
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
100,380✔
1010
  }
1011
  if (TSDB_CODE_SUCCESS == code) {
100,380✔
1012
    code =
1013
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
100,380✔
1014
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1015
  }
1016
  return code;
100,380✔
1017
}
1018

1019
static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
307,723✔
1020
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TABLES,
307,723✔
1021
                                         pCxt->pMetaCache);
1022
  if (TSDB_CODE_SUCCESS == code) {
307,723✔
1023
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
307,723✔
1024
  }
1025

1026
  if (TSDB_CODE_SUCCESS == code) {
307,723✔
1027
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
307,723✔
1028
  }
1029
  if (TSDB_CODE_SUCCESS == code) {
307,723✔
1030
    code =
1031
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
307,723✔
1032
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1033
  }
1034
  return code;
307,723✔
1035
}
1036

1037
static int32_t collectMetaKeyFromShowFilesets(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1038
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FILESETS,
×
1039
                                         pCxt->pMetaCache);
1040
  if (TSDB_CODE_SUCCESS == code) {
×
1041
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
1042
  }
1043
  if (TSDB_CODE_SUCCESS == code) {
×
1044
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
1045
  }
1046
  if (TSDB_CODE_SUCCESS == code) {
×
1047
    code =
1048
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
×
1049
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1050
  }
1051
  return code;
×
1052
}
1053

1054
static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
634,067✔
1055
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS,
634,067✔
1056
                                         pCxt->pMetaCache);
1057
  if (TSDB_CODE_SUCCESS == code) {
634,067✔
1058
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,268,134✔
1059
                                   ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
634,067✔
1060
  }
1061
  if (TSDB_CODE_SUCCESS == code) {
634,067✔
1062
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
634,067✔
1063
  }
1064
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) {
634,067✔
1065
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,268,134✔
1066
                                     ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
634,067✔
1067
  }
1068
  return code;
634,067✔
1069
}
1070

1071
static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) {
4,744✔
1072
  return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal,
4,744✔
1073
                                         ((SValueNode*)pStmt->pTbName)->literal, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
4,744✔
1074
}
1075

1076
static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,693✔
1077
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS,
3,693✔
1078
                                         pCxt->pMetaCache);
1079
  if (TSDB_CODE_SUCCESS == code) {
3,693✔
1080
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_USER_SHOW, 0,
3,693✔
1081
                                  pCxt->pMetaCache);
1082
  }
1083
  return code;
3,693✔
1084
}
1085

1086
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1087
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL,
×
1088
                                         pCxt->pMetaCache);
1089
  if (TSDB_CODE_SUCCESS == code) {
×
1090
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_USER_SHOW, 0,
×
1091
                                  pCxt->pMetaCache);
1092
  }
1093
  return code;
×
1094
}
1095

1096
static int32_t collectMetaKeyFromShowRoles(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
155✔
1097
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ROLES,
155✔
1098
                                         pCxt->pMetaCache);
1099
  if (TSDB_CODE_SUCCESS == code) {
155✔
1100
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_ROLE_SHOW, 0,
155✔
1101
                                  pCxt->pMetaCache);
1102
  }
1103
  return code;
155✔
1104
}
1105

1106
static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,051✔
1107
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES,
2,051✔
1108
                                         pCxt->pMetaCache);
1109
  if (TSDB_CODE_SUCCESS == code) {
2,051✔
1110
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
2,051✔
1111
                                  pCxt->pMetaCache);
1112
  }
1113
  return code;
2,051✔
1114
}
1115

1116
static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
219,967✔
1117
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
219,967✔
1118
                                         pCxt->pMetaCache);
1119
  if (TSDB_CODE_SUCCESS == code) {
219,967✔
1120
    // just to verify whether the database exists
1121
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
219,967✔
1122
  }
1123
  return code;
219,967✔
1124
}
1125

1126
static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
16,683✔
1127
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS,
16,683✔
1128
                                 pCxt->pMetaCache);
1129
}
1130

1131
static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
15,419✔
1132
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONSUMERS,
15,419✔
1133
                                 pCxt->pMetaCache);
1134
}
1135

1136
static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,910✔
1137
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONNECTIONS,
1,910✔
1138
                                 pCxt->pMetaCache);
1139
}
1140

1141
static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,254✔
1142
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES,
1,254✔
1143
                                 pCxt->pMetaCache);
1144
}
1145

1146
static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8,157✔
1147
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS,
8,157✔
1148
                                 pCxt->pMetaCache);
1149
}
1150

1151
static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) {
37,260✔
1152
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
37,260✔
1153
                                         TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache);
1154
  if (TSDB_CODE_SUCCESS == code) {
37,260✔
1155
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
37,260✔
1156
  }
1157
  return code;
37,260✔
1158
}
1159

1160
static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) {
4,851✔
1161
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES,
4,851✔
1162
                                 pCxt->pMetaCache);
1163
}
1164

1165
static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,795✔
1166
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
2,795✔
1167
                                         TSDB_INS_TABLE_USER_PRIVILEGES, pCxt->pMetaCache);
1168
  if (TSDB_CODE_SUCCESS == code) {
2,795✔
1169
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0,
2,795✔
1170
                                  pCxt->pMetaCache);
1171
  }
1172
  return code;
2,795✔
1173
}
1174

1175
static int32_t collectMetaKeyFromShowRolePrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
775✔
1176
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
775✔
1177
                                         TSDB_INS_TABLE_ROLE_PRIVILEGES, pCxt->pMetaCache);
1178
  if (TSDB_CODE_SUCCESS == code) {
775✔
1179
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0,
775✔
1180
                                  pCxt->pMetaCache);
1181
  }
1182
  return code;
775✔
1183
}
1184

1185
static int32_t collectMetaKeyFromShowRoleColPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1186
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
×
1187
                                         TSDB_INS_TABLE_ROLE_COL_PRIVILEGES, pCxt->pMetaCache);
1188
  if (TSDB_CODE_SUCCESS == code) {
×
1189
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0,
×
1190
                                  pCxt->pMetaCache);
1191
  }
1192
  return code;
×
1193
}
1194

1195
static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,940✔
1196
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS,
1,940✔
1197
                                         pCxt->pMetaCache);
1198
  if (TSDB_CODE_SUCCESS == code) {
1,940✔
1199
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
1,940✔
1200
  }
1201
  if (TSDB_CODE_SUCCESS == code) {
1,940✔
1202
    code =
1203
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
1,940✔
1204
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1205
  }
1206
  return code;
1,940✔
1207
}
1208

1209
static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
350,346✔
1210
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS,
350,346✔
1211
                                         pCxt->pMetaCache);
1212
  return code;
350,346✔
1213
}
1214

1215
static int32_t collectMetaKeyFromShowScans(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,520✔
1216
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SCANS,
2,520✔
1217
                                         pCxt->pMetaCache);
1218
  return code;
2,520✔
1219
}
1220

1221
static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
32,238✔
1222
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
32,238✔
1223
                                         TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache);
1224
  return code;
32,238✔
1225
}
1226

1227
static int32_t collectMetaKeyFromShowScanDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,240✔
1228
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
2,240✔
1229
                                         TSDB_INS_TABLE_SCAN_DETAILS, pCxt->pMetaCache);
1230
  return code;
2,240✔
1231
}
1232

1233
static int32_t collectMetaKeyFromShowSsMigrates(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1234
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SSMIGRATES,
×
1235
                                         pCxt->pMetaCache);
1236
  return code;
×
1237
}
1238

1239
static int32_t collectMetaKeyFromShowTokens(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1240
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOKENS,
×
1241
                                         pCxt->pMetaCache);
1242
  return code;
×
1243
}
1244

1245
static int32_t collectMetaKeyFromShowTransactionDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
274✔
1246
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
274✔
1247
                                         TSDB_INS_TABLE_TRANSACTION_DETAILS, pCxt->pMetaCache);
1248
  return code;
274✔
1249
}
1250

1251
static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,092✔
1252
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1,092✔
1253
                                         TSDB_INS_TABLE_GRANTS_FULL, pCxt->pMetaCache);
1254
  if (TSDB_CODE_SUCCESS == code) {
1,092✔
1255
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
1,092✔
1256
                                  pCxt->pMetaCache);
1257
  }
1258
  return code;
1,092✔
1259
}
1260

1261
static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,092✔
1262
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1,092✔
1263
                                         TSDB_INS_TABLE_GRANTS_LOGS, pCxt->pMetaCache);
1264
  if (TSDB_CODE_SUCCESS == code) {
1,092✔
1265
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
1,092✔
1266
                                  pCxt->pMetaCache);
1267
  }
1268
  return code;
1,092✔
1269
}
1270

1271
static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,254✔
1272
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES,
1,254✔
1273
                                         pCxt->pMetaCache);
1274
  if (TSDB_CODE_SUCCESS == code) {
1,254✔
1275
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
1,254✔
1276
                                  pCxt->pMetaCache);
1277
  }
1278
  return code;
1,254✔
1279
}
1280

1281
static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
159✔
1282
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS,
159✔
1283
                                 pCxt->pMetaCache);
1284
}
1285

1286
static int32_t collectMetaKeyFromShowEncryptAlgorithms(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1287
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
×
1288
                                         TSDB_INS_TABLE_ENCRYPT_ALGORITHMS, pCxt->pMetaCache);
1289
  return code;
×
1290
}
1291

1292
static int32_t collectMetaKeyFromShowEncryptStatus(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1293
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPT_STATUS,
×
1294
                                         pCxt->pMetaCache);
1295
  return code;
×
1296
}
1297

1298
static int32_t collectMetaKeyFromShowMounts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
5,856✔
1299
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MOUNTS,
5,856✔
1300
                                         pCxt->pMetaCache);
1301
  if (TSDB_CODE_SUCCESS == code) {
5,856✔
1302
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_MOUNT_SHOW, 0,
5,856✔
1303
                                  pCxt->pMetaCache);
1304
  }
1305
  return code;
5,856✔
1306
}
1307

1308
static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) {
59,902✔
1309
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
59,902✔
1310
}
1311

1312
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
73,878✔
1313
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
73,878✔
1314
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
73,878✔
1315
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
73,878✔
1316
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
73,878✔
1317
  if (TSDB_CODE_SUCCESS == code) {
73,878✔
1318
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
73,878✔
1319
  }
1320
  if (TSDB_CODE_SUCCESS == code) {
73,878✔
1321
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
73,878✔
1322
  }
1323
  // if (TSDB_CODE_SUCCESS == code) {
1324
  //   code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
1325
  //                                 AUTH_TYPE_READ, pCxt->pMetaCache);
1326
  // }
1327
  if (TSDB_CODE_SUCCESS == code) {
73,878✔
1328
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
73,878✔
1329
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1330
  }
1331
  if (TSDB_CODE_SUCCESS == code) {
73,878✔
1332
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
73,878✔
1333
                                  PRIV_CM_SHOW_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1334
  }
1335
  return code;
73,878✔
1336
}
1337

1338
static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) {
×
1339
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
×
1340
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
×
1341
  tstrncpy(name.tname, pStmt->viewName, TSDB_TABLE_NAME_LEN);
×
1342
  char dbFName[TSDB_DB_FNAME_LEN];
×
1343
  (void)tNameGetFullDbName(&name, dbFName);
×
1344
  int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0);
×
1345
  if (TSDB_CODE_SUCCESS == code) {
×
1346
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1347
  }
1348
  if (TSDB_CODE_SUCCESS == code) {
×
1349
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
×
1350
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1351
  }
1352
  if (TSDB_CODE_SUCCESS == code) {
×
1353
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
×
1354
                                      PRIV_CM_SHOW_CREATE, PRIV_OBJ_VIEW, pCxt->pMetaCache);
1355
  }
1356
  if (TSDB_CODE_SUCCESS == code) {
×
1357
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
×
1358
  }
1359
  pCxt->pMetaCache->forceFetchViewMeta = true;
×
1360
  return code;
×
1361
}
1362

1363
static int32_t collectMetaKeyFromShowCreateRsma(SCollectMetaKeyCxt* pCxt, SShowCreateRsmaStmt* pStmt) {
2,187✔
1364
  int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
2,187✔
1365
                                        PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1366
  if (TSDB_CODE_SUCCESS == code) {
2,187✔
1367
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
2,187✔
1368
  }
1369
  if (TSDB_CODE_SUCCESS == code) {
2,187✔
1370
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName,
2,187✔
1371
                                  PRIV_CM_SHOW_CREATE, PRIV_OBJ_RSMA, pCxt->pMetaCache);
1372
  }
1373
  return code;
2,187✔
1374
}
1375

1376
static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,254✔
1377
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS,
1,254✔
1378
                                 pCxt->pMetaCache);
1379
}
1380

1381
static int32_t collectMetaKeyFromShowInstances(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1382
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_INSTANCES,
×
1383
                                 pCxt->pMetaCache);
1384
}
1385

1386
static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
400,055✔
1387
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
400,055✔
1388
                                 pCxt->pMetaCache);
1389
}
1390

1391
static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) {
1,696,304✔
1392
  STableNode* pTable = (STableNode*)pStmt->pFromTable;
1,696,304✔
1393
  return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, PRIV_TBL_DELETE, PRIV_OBJ_TBL);
1,696,304✔
1394
}
1395

1396
static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) {
150,960✔
1397
  STableNode* pTable = (STableNode*)pStmt->pTable;
150,960✔
1398
  int32_t     code =
1399
      collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, PRIV_TBL_INSERT, PRIV_OBJ_TBL);
150,960✔
1400
  if (TSDB_CODE_SUCCESS == code) {
150,960✔
1401
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
150,960✔
1402
  }
1403
  return code;
150,960✔
1404
}
1405

1406
static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) {
2,963✔
1407
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
2,963✔
1408
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
2,963✔
1409
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
2,963✔
1410
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
2,963✔
1411
  if (TSDB_CODE_SUCCESS == code) {
2,963✔
1412
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
2,963✔
1413
  }
1414
  return code;
2,963✔
1415
}
1416

1417
static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
21,786✔
1418
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS,
21,786✔
1419
                                 pCxt->pMetaCache);
1420
}
1421

1422
static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) {
27,090✔
1423
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
27,090✔
1424
  if (TSDB_CODE_SUCCESS == code) {
27,090✔
1425
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_COMPACT,
27,090✔
1426
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1427
  }
1428
  return code;
27,090✔
1429
}
1430

1431
static int32_t collectMetaKeyFromRollupDatabase(SCollectMetaKeyCxt* pCxt, SRollupDatabaseStmt* pStmt) {
9,477✔
1432
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,477✔
1433
  if (TSDB_CODE_SUCCESS == code) {
9,477✔
1434
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_ROLLUP,
9,477✔
1435
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1436
  }
1437
  return code;
9,477✔
1438
}
1439

1440
static int32_t collectMetaKeyFromScanDatabase(SCollectMetaKeyCxt* pCxt, SScanDatabaseStmt* pStmt) {
112✔
1441
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
112✔
1442
  if (TSDB_CODE_SUCCESS == code) {
112✔
1443
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_SCAN,
112✔
1444
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1445
  }
1446
  return code;
112✔
1447
}
1448

1449
static int32_t collectMetaKeyFromSsmigrateDatabase(SCollectMetaKeyCxt* pCxt, SSsMigrateDatabaseStmt* pStmt) {
×
1450
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1451
  if (TSDB_CODE_SUCCESS == code) {
×
1452
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
×
1453
                                  PRIV_DB_SSMIGRATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1454
  }
1455
  return code;
×
1456
}
1457

1458
static int32_t collectMetaKeyFromTrimDatabase(SCollectMetaKeyCxt* pCxt, STrimDatabaseStmt* pStmt) {
8,018✔
1459
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
8,018✔
1460
  if (TSDB_CODE_SUCCESS == code) {
8,018✔
1461
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_TRIM,
8,018✔
1462
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1463
  }
1464
  return code;
8,018✔
1465
}
1466

1467
static int32_t collectMetaKeyFromCompactVgroups(SCollectMetaKeyCxt* pCxt, SCompactVgroupsStmt* pStmt) {
3,645✔
1468
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
3,645✔
1469
}
1470

1471
static int32_t collectMetaKeyFromRollupVgroups(SCollectMetaKeyCxt* pCxt, SRollupVgroupsStmt* pStmt) {
4,374✔
1472
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
4,374✔
1473
}
1474

1475
static int32_t collectMetaKeyFromScanVgroups(SCollectMetaKeyCxt* pCxt, SScanVgroupsStmt* pStmt) {
280✔
1476
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
280✔
1477
}
1478

1479
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
960,036✔
1480
  int32_t code = TSDB_CODE_SUCCESS;
960,036✔
1481

1482
  if (pStmt->optrType == TSDB_ALTER_ROLE_ROLE) {
960,036✔
1483
    if (pStmt->roleName[0] == 'S' && pStmt->roleName[1] == 'Y' && pStmt->roleName[2] == 'S') {
3,424✔
1484
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSDBA) == 0) {
3,269✔
1485
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_SYSDBA, 0,
155✔
1486
                                      pCxt->pMetaCache);
1487
      }
1488
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSSEC) == 0) {
3,114✔
1489
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_SYSSEC, 0,
155✔
1490
                                      pCxt->pMetaCache);
1491
      }
1492
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSAUDIT) == 0) {
2,959✔
1493
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_SYSAUDIT,
155✔
1494
                                      0, pCxt->pMetaCache);
1495
      }
1496
    }
1497
  } else if (TSDB_ALTER_ROLE_PRIVILEGES == pStmt->optrType) {
956,612✔
1498
    bool isRealObj = ('\0' != pStmt->objName[0] && strncmp(pStmt->objName, "*", TSDB_OBJ_NAME_LEN) != 0);
956,612✔
1499
    if (isRealObj) {
956,612✔
1500
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->objName, pCxt->pMetaCache);
950,895✔
1501
    }
1502
    if (TSDB_CODE_SUCCESS == code) {
956,612✔
1503
      if (isRealObj && '\0' != pStmt->tabName[0] && strncmp(pStmt->tabName, "*", TSDB_TABLE_NAME_LEN) != 0) {
956,612✔
1504
        EPrivObjType objType = PRIV_OBJ_TBL;
435,264✔
1505
        SPrivIter    privIter = {0};
435,264✔
1506
        privIterInit(&privIter, &pStmt->privileges.privSet);
435,264✔
1507
#if 0
1508
        SPrivInfo* pPrivInfo = NULL;
1509
        while (privIterNext(&privIter, &pPrivInfo)) {
1510
          break;
1511
        }
1512
        if (pPrivInfo) objType = pPrivInfo->objType;
1513
#endif
1514
        if (PRIV_OBJ_TBL == pStmt->privileges.objType) {
435,264✔
1515
          code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
429,632✔
1516
        } else if (PRIV_OBJ_VIEW == pStmt->privileges.objType) {
5,632✔
1517
          code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
1,113✔
1518
          pCxt->pMetaCache->forceFetchViewMeta = true;
1,113✔
1519
        } else {
1520
          // TODO: other object types
1521
        }
1522
      }
1523
    }
1524
  }
1525
  if (TSDB_CODE_SUCCESS == code) {
959,571✔
1526
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_PRIVILEGE, 0,
959,571✔
1527
                                  pCxt->pMetaCache);
1528
  }
1529

1530
  return code;
959,571✔
1531
}
1532

1533
static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) {
402,543✔
1534
  return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
402,543✔
1535
}
1536

1537
static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) {
17,617✔
1538
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
17,617✔
1539

1540
  if (TSDB_CODE_SUCCESS == code) {
17,617✔
1541
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
17,617✔
1542
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1543
  }
1544
  if (TSDB_CODE_SUCCESS == code) {
17,617✔
1545
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
17,617✔
1546
  }
1547

1548
  if (TSDB_CODE_SUCCESS == code) {
17,617✔
1549
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
17,617✔
1550
                                  PRIV_VIEW_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1551
  }
1552

1553
  if (TSDB_CODE_SUCCESS == code) {
17,617✔
1554
    if (QUERY_NODE_SELECT_STMT != nodeType(pStmt->pQuery) && QUERY_NODE_SET_OPERATOR != nodeType(pStmt->pQuery)) {
17,617✔
1555
      code = TSDB_CODE_PAR_INVALID_VIEW_QUERY;
×
1556
    } else {
1557
      code = collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt->pQuery);
17,617✔
1558
    }
1559
  }
1560

1561
  return code;
17,617✔
1562
}
1563

1564
static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) {
×
1565
  int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
×
1566
                                            pStmt->viewName, PRIV_CM_DROP, PRIV_OBJ_VIEW, pCxt->pMetaCache);
×
1567
  pCxt->pMetaCache->forceFetchViewMeta = true;
×
1568
  if (TSDB_CODE_SUCCESS == code) {
×
1569
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
×
1570
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1571
  }
1572
  if (TSDB_CODE_SUCCESS == code) {
×
1573
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1574
  }
1575
  if (TSDB_CODE_SUCCESS == code) {
×
1576
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
×
1577
  }
1578
  return code;
×
1579
}
1580

1581
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
799✔
1582
  int32_t code;
1583
  if (pStmt->pOptions->recursiveTsma) {
799✔
1584
    // if creating recursive tsma, the tablename is tsmaName
1585
    code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
×
1586
    if (TSDB_CODE_SUCCESS == code) {
×
1587
      char dstTbName[TSDB_TABLE_NAME_LEN] = {0};
×
1588
      snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName);
×
1589
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
×
1590
      if (TSDB_CODE_SUCCESS == code) {
×
1591
        code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
×
1592
      }
1593
    }
1594
  } else {
1595
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
799✔
1596
    if (TSDB_CODE_SUCCESS == code) {
799✔
1597
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
799✔
1598
    }
1599
    if (TSDB_CODE_SUCCESS == code) {
799✔
1600
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
799✔
1601
                                    PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
1602
    }
1603
    if (TSDB_CODE_SUCCESS == code) {
799✔
1604
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
799✔
1605
                                    PRIV_STREAM_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1606
    }
1607
    if (TSDB_CODE_SUCCESS == code) {
799✔
1608
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
799✔
1609
                                    PRIV_TSMA_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1610
    }
1611
  }
1612
  if (TSDB_CODE_SUCCESS == code) {
799✔
1613
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
799✔
1614
  }
1615
  if (TSDB_CODE_SUCCESS == code) {
799✔
1616
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
799✔
1617
  }
1618

1619
  if (TSDB_CODE_SUCCESS == code) {
799✔
1620
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
799✔
1621
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1622
  }
1623
  if (TSDB_CODE_SUCCESS == code) {
799✔
1624
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE,
799✔
1625
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1626
  }
1627

1628
  return code;
799✔
1629
}
1630

1631
static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) {
×
1632
  int32_t code;
1633
  code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache);
×
1634
  if (TSDB_CODE_SUCCESS == code) {
×
1635
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1636
  }
1637
  if (TSDB_CODE_SUCCESS == code) {
×
1638
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1639
  }
1640

1641
  if (TSDB_CODE_SUCCESS == code) {
×
1642
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
×
1643
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1644
  }
1645
  if (TSDB_CODE_SUCCESS == code) {
×
1646
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tsmaName,
×
1647
                                  PRIV_CM_DROP, PRIV_OBJ_TSMA, pCxt->pMetaCache);
1648
  }
1649
  return code;
×
1650
}
1651

1652
static int32_t collectMetaKeyFromShowUsage(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
301✔
1653
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_DISK_USAGE,
301✔
1654
                                         pCxt->pMetaCache);
1655
  if (TSDB_CODE_SUCCESS == code) {
301✔
1656
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
301✔
1657
  }
1658
  if (TSDB_CODE_SUCCESS == code) {
301✔
1659
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
301✔
1660
  }
1661
  if (TSDB_CODE_SUCCESS == code) {
301✔
1662
    code =
1663
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
301✔
1664
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1665
  }
1666
  return code;
301✔
1667
}
1668

1669
static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1670
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS,
×
1671
                                 pCxt->pMetaCache);
1672
}
1673

1674
static int32_t collectMetaKeyFromCreateRsmaStmt(SCollectMetaKeyCxt* pCxt, SCreateRsmaStmt* pStmt) {
108,621✔
1675
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
108,621✔
1676
  if (TSDB_CODE_SUCCESS == code) {
108,621✔
1677
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
108,621✔
1678
  }
1679
  if (TSDB_CODE_SUCCESS == code) {
108,621✔
1680
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
108,621✔
1681
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1682
  }
1683
  if (TSDB_CODE_SUCCESS == code) {
108,621✔
1684
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
108,621✔
1685
                                  PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
1686
  }
1687
  if (TSDB_CODE_SUCCESS == code) {
108,621✔
1688
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
108,621✔
1689
                                  PRIV_TBL_INSERT, PRIV_OBJ_TBL, pCxt->pMetaCache);
1690
  }
1691
  if (TSDB_CODE_SUCCESS == code) {
108,621✔
1692
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
108,621✔
1693
                                  PRIV_RSMA_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1694
  }
1695
  return code;
108,621✔
1696
}
1697

1698
static int32_t collectMetaKeyFromDropRsmaStmt(SCollectMetaKeyCxt* pCxt, SDropRsmaStmt* pStmt) {
2,187✔
1699
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
2,187✔
1700
  if (TSDB_CODE_SUCCESS == code) {
2,187✔
1701
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
2,187✔
1702
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1703
  }
1704
  if (TSDB_CODE_SUCCESS == code) {
2,187✔
1705
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName,
2,187✔
1706
                                  PRIV_CM_DROP, PRIV_OBJ_RSMA, pCxt->pMetaCache);
1707
  }
1708
  return code;
2,187✔
1709
}
1710

1711
static int32_t collectMetaKeyFromAlterRsmaStmt(SCollectMetaKeyCxt* pCxt, SAlterRsmaStmt* pStmt) {
19,683✔
1712
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
19,683✔
1713
  if (TSDB_CODE_SUCCESS == code) {
19,683✔
1714
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName,
19,683✔
1715
                                  PRIV_CM_ALTER, PRIV_OBJ_RSMA, pCxt->pMetaCache);
1716
  }
1717
  return code;
19,683✔
1718
}
1719

1720
static int32_t collectMetaKeyFromShowRsmasStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
13,122✔
1721
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RSMAS,
13,122✔
1722
                                 pCxt->pMetaCache);
1723
}
1724

1725
static int32_t collectMetaKeyFromShowRetentionsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
40,824✔
1726
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTIONS,
40,824✔
1727
                                 pCxt->pMetaCache);
1728
}
1729

1730
static int32_t collectMetaKeyFromShowRetentionDetailsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,187✔
1731
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTION_DETAILS,
2,187✔
1732
                                 pCxt->pMetaCache);
1733
}
1734

1735
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
4,412✔
1736
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
4,412✔
1737
                                         pCxt->pMetaCache);
1738
  if (TSDB_CODE_SUCCESS == code && pStmt->dbName[0]) {
4,412✔
1739
    // just to verify whether the database exists
1740
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,455✔
1741
  }
1742
  return code;
4,412✔
1743
}
1744

1745
static int32_t collectMetaKeyFromSysPrivStmt(SCollectMetaKeyCxt* pCxt, EPrivType privType) {
1,817,555✔
1746
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, privType, 0,
1,817,555✔
1747
                                pCxt->pMetaCache);
1748
}
1749

1750
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
350,852,271✔
1751
  pCxt->pStmt = pStmt;
350,852,271✔
1752
  switch (nodeType(pStmt)) {
350,854,971✔
1753
    case QUERY_NODE_SET_OPERATOR:
11,542,861✔
1754
      return collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
11,542,861✔
1755
    case QUERY_NODE_SELECT_STMT:
240,083,615✔
1756
      return collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
240,083,615✔
1757
    case QUERY_NODE_ALTER_DATABASE_STMT:
178,466✔
1758
      return collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
178,466✔
1759
    case QUERY_NODE_FLUSH_DATABASE_STMT:
1,724,503✔
1760
      return collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
1,724,503✔
1761
    case QUERY_NODE_CREATE_TABLE_STMT:
16,368,796✔
1762
      return collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
16,368,796✔
1763
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
132,313✔
1764
      return collectMetaKeyFromCreateVTable(pCxt, (SCreateVTableStmt*)pStmt);
132,313✔
1765
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
210,868✔
1766
      return collectMetaKeyFromCreateVSubTable(pCxt, (SCreateVSubTableStmt*)pStmt);
210,868✔
1767
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
30,337,886✔
1768
      return collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
30,337,886✔
1769
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
1,285✔
1770
      return collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
1,285✔
1771
    case QUERY_NODE_DROP_TABLE_STMT:
2,014,861✔
1772
      return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
2,014,861✔
1773
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
81,189✔
1774
      return collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
81,189✔
1775
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
68,854✔
1776
      return collectMetaKeyFromDropVtable(pCxt, (SDropVirtualTableStmt*)pStmt);
68,854✔
1777
    case QUERY_NODE_ALTER_TABLE_STMT:
20,374,666✔
1778
      return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
20,374,666✔
1779
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
482,338✔
1780
      return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
482,338✔
1781
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
361,537✔
1782
      return collectMetaKeyFromAlterVtable(pCxt, (SAlterTableStmt*)pStmt);
361,537✔
1783
    case QUERY_NODE_USE_DATABASE_STMT:
1,997,042✔
1784
      return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
1,997,042✔
1785
    case QUERY_NODE_CREATE_INDEX_STMT:
11,480✔
1786
      return collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
11,480✔
1787
    case QUERY_NODE_DROP_INDEX_STMT:
3,207✔
1788
      return collectMetaKeyFromDropIndex(pCxt, (SDropIndexStmt*)pStmt);
3,207✔
1789
    case QUERY_NODE_CREATE_TOPIC_STMT:
165,452✔
1790
      return collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
165,452✔
1791
    case QUERY_NODE_EXPLAIN_STMT:
12,469,562✔
1792
      return collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
12,469,562✔
1793
    case QUERY_NODE_DESCRIBE_STMT:
483,670✔
1794
      return collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
483,670✔
1795
    case QUERY_NODE_COMPACT_DATABASE_STMT:
27,090✔
1796
      return collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
27,090✔
1797
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
9,477✔
1798
      return collectMetaKeyFromRollupDatabase(pCxt, (SRollupDatabaseStmt*)pStmt);
9,477✔
1799
    case QUERY_NODE_SCAN_DATABASE_STMT:
112✔
1800
      return collectMetaKeyFromScanDatabase(pCxt, (SScanDatabaseStmt*)pStmt);
112✔
1801
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
1802
      return collectMetaKeyFromSsmigrateDatabase(pCxt, (SSsMigrateDatabaseStmt*)pStmt);
×
1803
    case QUERY_NODE_TRIM_DATABASE_STMT:
8,018✔
1804
      return collectMetaKeyFromTrimDatabase(pCxt, (STrimDatabaseStmt*)pStmt);
8,018✔
1805
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
3,645✔
1806
      return collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt);
3,645✔
1807
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
4,374✔
1808
      return collectMetaKeyFromRollupVgroups(pCxt, (SRollupVgroupsStmt*)pStmt);
4,374✔
1809
    case QUERY_NODE_SCAN_VGROUPS_STMT:
280✔
1810
      return collectMetaKeyFromScanVgroups(pCxt, (SScanVgroupsStmt*)pStmt);
280✔
1811
    case QUERY_NODE_CREATE_STREAM_STMT:
251,519✔
1812
      return collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
251,519✔
1813
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
10,436✔
1814
      return collectMetaKeyFromRecalculateStream(pCxt, (SRecalcStreamStmt*)pStmt);
10,436✔
1815
    case QUERY_NODE_GRANT_STMT:
557,493✔
1816
      return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
557,493✔
1817
    case QUERY_NODE_REVOKE_STMT:
402,543✔
1818
      return collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
402,543✔
1819
    case QUERY_NODE_SHOW_DNODES_STMT:
19,904✔
1820
      return collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
19,904✔
1821
    case QUERY_NODE_SHOW_MNODES_STMT:
285,739✔
1822
      return collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
285,739✔
1823
    case QUERY_NODE_SHOW_MODULES_STMT:
×
1824
      return collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
1825
    case QUERY_NODE_SHOW_QNODES_STMT:
1,254✔
1826
      return collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
1,254✔
1827
    case QUERY_NODE_SHOW_SNODES_STMT:
60,400✔
1828
      return collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
60,400✔
1829
    case QUERY_NODE_SHOW_ANODES_STMT:
156✔
1830
      return collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
156✔
1831
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
1832
      return collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
1833
    case QUERY_NODE_SHOW_BNODES_STMT:
51,229✔
1834
      return collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
51,229✔
1835
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
1836
      return collectMetaKeyFromShowBackupNodes(pCxt, (SShowStmt*)pStmt);
×
1837
    case QUERY_NODE_SHOW_XNODES_STMT:
378✔
1838
      return collectMetaKeyFromShowXnodes(pCxt, (SShowStmt*)pStmt);
378✔
1839
    case QUERY_NODE_SHOW_XNODE_TASKS_STMT:
378✔
1840
      return collectMetaKeyFromShowXnodeTasks(pCxt, (SShowStmt*)pStmt);
378✔
1841
    case QUERY_NODE_SHOW_XNODE_AGENTS_STMT:
378✔
1842
      return collectMetaKeyFromShowXnodeAgents(pCxt, (SShowStmt*)pStmt);
378✔
1843
    case QUERY_NODE_SHOW_XNODE_JOBS_STMT:
378✔
1844
      return collectMetaKeyFromShowXnodeJobs(pCxt, (SShowStmt*)pStmt);
378✔
1845
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
289✔
1846
      return collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
289✔
1847
    case QUERY_NODE_SHOW_CLUSTER_STMT:
1,578✔
1848
      return collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
1,578✔
1849
    case QUERY_NODE_SHOW_DATABASES_STMT:
156,230✔
1850
      return collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
156,230✔
1851
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
10,672✔
1852
      return collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
10,672✔
1853
    case QUERY_NODE_SHOW_INDEXES_STMT:
4,128✔
1854
      return collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
4,128✔
1855
    case QUERY_NODE_SHOW_STABLES_STMT:
205,909✔
1856
      return collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
205,909✔
1857
    case QUERY_NODE_SHOW_STREAMS_STMT:
100,380✔
1858
      return collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
100,380✔
1859
    case QUERY_NODE_SHOW_TABLES_STMT:
307,723✔
1860
    case QUERY_NODE_SHOW_VTABLES_STMT:
1861
      return collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
307,723✔
1862
    case QUERY_NODE_SHOW_FILESETS_STMT:
×
1863
      return collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt);
×
1864
    case QUERY_NODE_SHOW_TAGS_STMT:
634,067✔
1865
      return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
634,067✔
1866
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
4,744✔
1867
      return collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
4,744✔
1868
    case QUERY_NODE_SHOW_USERS_STMT:
3,693✔
1869
      return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
3,693✔
1870
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
1871
      return collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
1872
    case QUERY_NODE_SHOW_ROLES_STMT:
155✔
1873
      return collectMetaKeyFromShowRoles(pCxt, (SShowStmt*)pStmt);
155✔
1874
    case QUERY_NODE_SHOW_LICENCES_STMT:
2,051✔
1875
      return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
2,051✔
1876
    case QUERY_NODE_SHOW_VGROUPS_STMT:
219,967✔
1877
      return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
219,967✔
1878
    case QUERY_NODE_SHOW_TOPICS_STMT:
16,683✔
1879
      return collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
16,683✔
1880
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
15,419✔
1881
      return collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
15,419✔
1882
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
1,910✔
1883
      return collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
1,910✔
1884
    case QUERY_NODE_SHOW_QUERIES_STMT:
1,254✔
1885
      return collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
1,254✔
1886
    case QUERY_NODE_SHOW_VARIABLES_STMT:
8,157✔
1887
      return collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
8,157✔
1888
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
37,260✔
1889
      return collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
37,260✔
1890
    case QUERY_NODE_SHOW_VNODES_STMT:
4,851✔
1891
      return collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
4,851✔
1892
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
2,795✔
1893
      return collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
2,795✔
1894
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
775✔
1895
      return collectMetaKeyFromShowRolePrivileges(pCxt, (SShowStmt*)pStmt);
775✔
1896
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
1897
      return collectMetaKeyFromShowRoleColPrivileges(pCxt, (SShowStmt*)pStmt);
×
1898
    case QUERY_NODE_SHOW_VIEWS_STMT:
1,940✔
1899
      return collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
1,940✔
1900
    case QUERY_NODE_SHOW_COMPACTS_STMT:
350,346✔
1901
      return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
350,346✔
1902
    case QUERY_NODE_SHOW_SCANS_STMT:
2,520✔
1903
      return collectMetaKeyFromShowScans(pCxt, (SShowStmt*)pStmt);
2,520✔
1904
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
32,238✔
1905
      return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
32,238✔
1906
    case QUERY_NODE_SHOW_SCAN_DETAILS_STMT:
2,240✔
1907
      return collectMetaKeyFromShowScanDetails(pCxt, (SShowStmt*)pStmt);
2,240✔
1908
    case QUERY_NODE_SHOW_SSMIGRATES_STMT:
×
1909
      return collectMetaKeyFromShowSsMigrates(pCxt, (SShowStmt*)pStmt);
×
1910
    case QUERY_NODE_SHOW_TOKENS_STMT:
×
1911
      return collectMetaKeyFromShowTokens(pCxt, (SShowStmt*)pStmt);
×
1912
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
274✔
1913
      return collectMetaKeyFromShowTransactionDetails(pCxt, (SShowStmt*)pStmt);
274✔
1914
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
1,092✔
1915
      return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
1,092✔
1916
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
1,092✔
1917
      return collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
1,092✔
1918
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
1,254✔
1919
      return collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
1,254✔
1920
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
159✔
1921
      return collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
159✔
1922
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
1923
      return collectMetaKeyFromShowEncryptAlgorithms(pCxt, (SShowStmt*)pStmt);
×
1924
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
1925
      return collectMetaKeyFromShowEncryptStatus(pCxt, (SShowStmt*)pStmt);
×
1926
    case QUERY_NODE_SHOW_MOUNTS_STMT:
5,856✔
1927
      return collectMetaKeyFromShowMounts(pCxt, (SShowStmt*)pStmt);
5,856✔
1928
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
59,902✔
1929
      return collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
59,902✔
1930
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
73,878✔
1931
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
1932
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
1933
      return collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
73,878✔
1934
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
1935
      return collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
×
1936
    case QUERY_NODE_SHOW_CREATE_RSMA_STMT:
2,187✔
1937
      return collectMetaKeyFromShowCreateRsma(pCxt, (SShowCreateRsmaStmt*)pStmt);
2,187✔
1938
    case QUERY_NODE_SHOW_APPS_STMT:
1,254✔
1939
      return collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
1,254✔
1940
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
1941
      return collectMetaKeyFromShowInstances(pCxt, (SShowStmt*)pStmt);
×
1942
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
400,055✔
1943
      return collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
400,055✔
1944
    case QUERY_NODE_SHOW_USAGE_STMT:
301✔
1945
      return collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
301✔
1946
    case QUERY_NODE_DELETE_STMT:
1,696,304✔
1947
      return collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
1,696,304✔
1948
    case QUERY_NODE_INSERT_STMT:
150,960✔
1949
      return collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
150,960✔
1950
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
2,963✔
1951
      return collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
2,963✔
1952
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
21,786✔
1953
      return collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
21,786✔
1954
    case QUERY_NODE_CREATE_VIEW_STMT:
17,617✔
1955
      return collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
17,617✔
1956
    case QUERY_NODE_DROP_VIEW_STMT:
×
1957
      return collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
×
1958
    case QUERY_NODE_CREATE_TSMA_STMT:
799✔
1959
      return collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
799✔
1960
    case QUERY_NODE_DROP_TSMA_STMT:
×
1961
      return collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
×
1962
    case QUERY_NODE_SHOW_TSMAS_STMT:
×
1963
      return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
×
1964
    case QUERY_NODE_CREATE_RSMA_STMT:
108,621✔
1965
      return collectMetaKeyFromCreateRsmaStmt(pCxt, (SCreateRsmaStmt*)pStmt);
108,621✔
1966
    case QUERY_NODE_DROP_RSMA_STMT:
2,187✔
1967
      return collectMetaKeyFromDropRsmaStmt(pCxt, (SDropRsmaStmt*)pStmt);
2,187✔
1968
    case QUERY_NODE_ALTER_RSMA_STMT:
19,683✔
1969
      return collectMetaKeyFromAlterRsmaStmt(pCxt, (SAlterRsmaStmt*)pStmt);
19,683✔
1970
    case QUERY_NODE_SHOW_RSMAS_STMT:
13,122✔
1971
      return collectMetaKeyFromShowRsmasStmt(pCxt, (SShowStmt*)pStmt);
13,122✔
1972
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
40,824✔
1973
      return collectMetaKeyFromShowRetentionsStmt(pCxt, (SShowStmt*)pStmt);
40,824✔
1974
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
2,187✔
1975
      return collectMetaKeyFromShowRetentionDetailsStmt(pCxt, (SShowStmt*)pStmt);
2,187✔
1976
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
4,412✔
1977
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
1978
      return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
4,412✔
1979
    case QUERY_NODE_CREATE_DATABASE_STMT:
1,291,830✔
1980
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_DB_CREATE);
1,291,830✔
1981
    case QUERY_NODE_DROP_DATABASE_STMT:
1,065,900✔
1982
      return collectMetaKeyFromDropDatabase(pCxt, (SDropDatabaseStmt*)pStmt);
1,065,900✔
1983
    case QUERY_NODE_BALANCE_VGROUP_STMT:
11,782✔
1984
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE);
11,782✔
1985
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
2,774✔
1986
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
1987
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE_LEADER);
2,774✔
1988
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
1989
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_MERGE);
×
1990
    case QUERY_NODE_SPLIT_VGROUP_STMT:
16,797✔
1991
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_SPLIT);
16,797✔
1992
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
44,723✔
1993
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_REDISTRIBUTE);
44,723✔
1994
    case QUERY_NODE_CREATE_FUNCTION_STMT:
14,096✔
1995
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_CREATE);
14,096✔
1996
    case QUERY_NODE_DROP_FUNCTION_STMT:
8,502✔
1997
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_DROP);
8,502✔
1998
    case QUERY_NODE_CREATE_MOUNT_STMT:
1,342✔
1999
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_CREATE);
1,342✔
2000
    case QUERY_NODE_DROP_MOUNT_STMT:
488✔
2001
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_DROP);
488✔
2002
    case QUERY_NODE_CREATE_ROLE_STMT:
155✔
2003
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_CREATE);
155✔
2004
    case QUERY_NODE_DROP_ROLE_STMT:
×
2005
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_DROP);
×
2006
    case QUERY_NODE_CREATE_USER_STMT:
48,120✔
2007
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_CREATE);
48,120✔
2008
    case QUERY_NODE_DROP_USER_STMT:
21,028✔
2009
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_DROP);
21,028✔
2010
    case QUERY_NODE_CREATE_DNODE_STMT:
267,711✔
2011
    case QUERY_NODE_CREATE_MNODE_STMT:
2012
    case QUERY_NODE_CREATE_QNODE_STMT:
2013
    case QUERY_NODE_CREATE_SNODE_STMT:
2014
    case QUERY_NODE_CREATE_BNODE_STMT:
2015
    case QUERY_NODE_CREATE_ANODE_STMT:
2016
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_CREATE);
267,711✔
2017
    case QUERY_NODE_DROP_DNODE_STMT:
88,207✔
2018
    case QUERY_NODE_DROP_MNODE_STMT:
2019
    case QUERY_NODE_DROP_QNODE_STMT:
2020
    case QUERY_NODE_DROP_SNODE_STMT:
2021
    case QUERY_NODE_DROP_BNODE_STMT:
2022
    case QUERY_NODE_DROP_ANODE_STMT:
2023
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_DROP);
88,207✔
2024
    default:
2,422,397✔
2025
      break;
2,422,397✔
2026
  }
2027
  return TSDB_CODE_SUCCESS;
2,422,397✔
2028
}
2029

2030
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
250,165,153✔
2031
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
250,165,153✔
2032
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
250,155,518✔
2033
}
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