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

taosdata / TDengine / #5034

24 Apr 2026 11:25AM UTC coverage: 73.058%. Remained the same
#5034

push

travis-ci

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

merge: from main to 3.0 branch[manual-only]

1336 of 1975 new or added lines in 48 files covered. (67.65%)

14149 existing lines in 164 files now uncovered.

275896 of 377640 relevant lines covered (73.06%)

132944440.29 hits per line

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

93.08
/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 "cmdnodes.h"
17
#include "functionMgt.h"
18
#include "os.h"
19
#include "parAst.h"
20
#include "parInt.h"
21
#include "parToken.h"
22
#include "systable.h"
23
#include "tglobal.h"
24
#include "tmsg.h"
25

26
typedef void* (*FMalloc)(size_t);
27
typedef void (*FFree)(void*);
28

29
extern SConfig* tsCfg;
30

31
extern void* ParseAlloc(FMalloc);
32
extern void  Parse(void*, int, SToken, void*);
33
extern void  ParseFree(void*, FFree);
34
extern void  ParseTrace(FILE*, char*);
35

36
int32_t buildQueryAfterParse(SQuery** pQuery, SNode* pRootNode, int16_t placeholderNo, SArray** pPlaceholderValues) {
482,939,471✔
37
  *pQuery = NULL;
482,939,471✔
38
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
482,940,275✔
39
  if (NULL == *pQuery) {
482,967,088✔
40
    return code;
×
41
  }
42
  (*pQuery)->pRoot = pRootNode;
482,967,125✔
43
  (*pQuery)->placeholderNum = placeholderNo;
482,963,379✔
44
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
482,958,541✔
45
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
482,959,538✔
46

47
  return TSDB_CODE_SUCCESS;
482,956,060✔
48
}
49

50
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
496,938,744✔
51
  SAstCreateContext cxt;
284,519,515✔
52
  initAstCreateContext(pParseCxt, &cxt);
496,944,004✔
53
  void* pParser = ParseAlloc((FMalloc)taosMemMalloc);
496,947,534✔
54
  if (!pParser) return terrno;
496,946,420✔
55
  int32_t i = 0;
496,946,420✔
56
  while (1) {
2,147,483,647✔
57
    SToken t0 = {0};
2,147,483,647✔
58
    if (cxt.pQueryCxt->pSql[i] == 0) {
2,147,483,647✔
59
      Parse(pParser, 0, t0, &cxt);
183,770,976✔
60
      goto abort_parse;
399,999,387✔
61
    }
62
    if (!pParseCxt->hasDupQuoteChar) {
2,147,483,647✔
63
      char dupQuoteChar = 0;
2,147,483,647✔
64
      t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, &dupQuoteChar);
2,147,483,647✔
65
      if (dupQuoteChar) pParseCxt->hasDupQuoteChar = true;
2,147,483,647✔
66
    } else {
67
      t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, NULL);
689,293✔
68
    }
69
    t0.z = (char*)(cxt.pQueryCxt->pSql + i);
2,147,483,647✔
70
    i += t0.n;
2,147,483,647✔
71

72
    switch (t0.type) {
2,147,483,647✔
73
      case TK_NK_SPACE:
2,147,483,647✔
74
      case TK_NK_COMMENT: {
75
        break;
2,147,483,647✔
76
      }
77
      case TK_NK_SEMI: {
299,868,147✔
78
        Parse(pParser, 0, t0, &cxt);
299,868,147✔
79
        goto abort_parse;
299,862,866✔
80
      }
81
      case TK_NK_ILLEGAL: {
231,619✔
82
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
231,619✔
83
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
231,619✔
84
        goto abort_parse;
231,619✔
85
      }
86
      case TK_NK_OCT: {
×
87
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unsupported token: \"%s\"", t0.z);
×
88
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
×
89
        goto abort_parse;
×
90
      }
91
      default:
2,147,483,647✔
92
        // ParseTrace(stdout, "");
93
        Parse(pParser, t0.type, t0, &cxt);
2,147,483,647✔
94
        if (TSDB_CODE_SUCCESS != cxt.errCode) {
2,147,483,647✔
95
          goto abort_parse;
18,158,135✔
96
        }
97
    }
98
  }
99

100
abort_parse:
501,988,440✔
101
  ParseFree(pParser, (FFree)taosAutoMemoryFree);
501,993,714✔
102
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
496,947,480✔
103
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
482,959,870✔
104
    if (TSDB_CODE_SUCCESS != code) {
482,942,239✔
105
      return code;
×
106
    }
107
  }
108
  taosArrayDestroy(cxt.pPlaceholderValues);
496,929,849✔
109
  return cxt.errCode;
496,917,950✔
110
}
111

112
typedef struct SCollectMetaKeyCxt {
113
  SParseContext*   pParseCxt;
114
  SParseMetaCache* pMetaCache;
115
  SNode*           pStmt;
116
  bool             collectVStbRefDbs;
117
} SCollectMetaKeyCxt;
118

119
typedef struct SCollectMetaKeyFromExprCxt {
120
  SCollectMetaKeyCxt* pComCxt;
121
  bool                hasLastRowOrLast;
122
  bool                tbnameCollect;
123
  int32_t             errCode;
124
} SCollectMetaKeyFromExprCxt;
125

126
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt);
127
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt);
128
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt);
129

130
static EDealRes collectMetaKeyFromFunction(SCollectMetaKeyFromExprCxt* pCxt, SFunctionNode* pFunc) {
631,438,137✔
131
  switch (fmGetFuncType(pFunc->functionName)) {
631,438,137✔
132
    case FUNCTION_TYPE_LAST_ROW:
22,785,090✔
133
    case FUNCTION_TYPE_LAST:
134
      pCxt->hasLastRowOrLast = true;
22,785,090✔
135
      break;
22,785,412✔
136
    case FUNCTION_TYPE_UDF:
213,937✔
137
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
213,937✔
138
      break;
209,159✔
139
    default:
608,434,757✔
140
      break;
608,434,757✔
141
  }
142
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
631,429,328✔
143
}
144

145
static bool needGetTableIndex(SNode* pStmt) {
755,201,934✔
146
  return false;
755,201,934✔
147
  if (QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && QUERY_NODE_SELECT_STMT == nodeType(pStmt)) {
148
    SSelectStmt* pSelect = (SSelectStmt*)pStmt;
149
    return (NULL != pSelect->pWindow && QUERY_NODE_INTERVAL_WINDOW == nodeType(pSelect->pWindow));
150
  }
151
  return false;
152
}
153

154
static int32_t collectMetaKeyFromInsTagsImpl(SCollectMetaKeyCxt* pCxt, SName* pName) {
1,738,028✔
155
  if (0 == pName->type) {
1,738,028✔
156
    return TSDB_CODE_SUCCESS;
1,155,991✔
157
  }
158
  if (TSDB_DB_NAME_T == pName->type) {
582,037✔
159
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
149,901✔
160
  }
161
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
432,136✔
162
}
163

164
static int32_t collectMetaKeyFromInsTags(SCollectMetaKeyCxt* pCxt) {
1,738,102✔
165
  SSelectStmt* pSelect = (SSelectStmt*)pCxt->pStmt;
1,738,102✔
166
  SName        name = {0};
1,738,102✔
167
  int32_t      code = getVnodeSysTableTargetName(pCxt->pParseCxt->acctId, pSelect->pWhere, &name);
1,738,065✔
168
  if (TSDB_CODE_SUCCESS == code) {
1,738,028✔
169
    code = collectMetaKeyFromInsTagsImpl(pCxt, &name);
1,738,028✔
170
  }
171
  return code;
1,738,102✔
172
}
173

174
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
755,170,664✔
175
                                               EPrivType privType, EPrivObjType objType) {
176
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
755,170,664✔
177
  if (TSDB_CODE_SUCCESS == code) {
755,200,172✔
178
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, NULL, PRIV_DB_USE, PRIV_OBJ_DB,
755,205,748✔
179
                                  pCxt->pMetaCache);
180
  }
181
  if (TSDB_CODE_SUCCESS == code) {
755,205,493✔
182
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
755,211,936✔
183
  }
184
  if (TSDB_CODE_SUCCESS == code) {
755,206,916✔
185
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
755,213,933✔
186
  }
187
  if (TSDB_CODE_SUCCESS == code) {
755,199,237✔
188
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, privType, objType,
755,203,490✔
189
                                  pCxt->pMetaCache);
190
  }
191
#ifdef TD_ENTERPRISE
192
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
755,206,044✔
193
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, privType,
342,814✔
194
                                  objType, pCxt->pMetaCache);
195
  }
196
#endif
197
  if (TSDB_CODE_SUCCESS == code) {
755,204,946✔
198
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
755,209,790✔
199
  }
200
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
755,211,976✔
201
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
×
202
  }
203
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
755,196,397✔
204
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
3,313✔
205
  }
206
  if (TSDB_CODE_SUCCESS == code &&
755,196,320✔
207
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
755,214,434✔
208
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_TABLE_VC_COLS) ||
754,556,396✔
209
       0 == strcmp(pTable, TSDB_INS_DISK_USAGE) || 0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS) ||
753,547,187✔
210
       0 == strcmp(pTable, TSDB_INS_TABLE_VIRTUAL_TABLES_REFERENCING) ||
753,546,934✔
211
       0 == strcmp(pTable, TSDB_INS_TABLE_TABLE_FIXED_DISTRIBUTED)) &&
753,469,723✔
212
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
1,748,121✔
213
    code = collectMetaKeyFromInsTags(pCxt);
1,738,102✔
214
  }
215
  // ins_table_fixed_distributed: reserve DB vgroup info + target table meta
216
  if (TSDB_CODE_SUCCESS == code &&
755,194,721✔
217
      0 == strcmp(pTable, TSDB_INS_TABLE_TABLE_FIXED_DISTRIBUTED) &&
755,203,707✔
218
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
3,410✔
219
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pStmt;
1,970✔
220
    SName        targetName = {0};
1,970✔
221
    code = getVnodeSysTableTargetName(pCxt->pParseCxt->acctId, pSelect->pWhere, &targetName);
1,970✔
222
    if (TSDB_CODE_SUCCESS == code && targetName.dbname[0] != '\0') {
1,970✔
223
      code = reserveDbVgInfoInCache(targetName.acctId, targetName.dbname, pCxt->pMetaCache);
1,379✔
224
    }
225
    if (TSDB_CODE_SUCCESS == code && targetName.tname[0] != '\0' && targetName.dbname[0] != '\0') {
1,970✔
226
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, targetName.dbname, targetName.tname, pCxt->pMetaCache);
1,182✔
227
    }
228
  }
229
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
755,194,721✔
230
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
493,538✔
231
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
493,538✔
232
  }
233
  return code;
755,211,575✔
234
}
235

236
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
752,018,600✔
237
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
752,018,600✔
238
                                                  PRIV_TBL_SELECT, PRIV_OBJ_TBL);
239
  if (TSDB_CODE_SUCCESS == pCxt->errCode && pCxt->pComCxt->collectVStbRefDbs) {
752,046,423✔
240
    pCxt->errCode = reserveVStbRefDbsInCache(pCxt->pComCxt->pParseCxt->acctId, pRealTable->table.dbName,
929,912,790✔
241
                                             pRealTable->table.tableName, pCxt->pComCxt->pMetaCache);
929,915,480✔
242
  }
243
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
752,046,530✔
244
}
245

246
static EDealRes collectMetaKeyFromTempTable(SCollectMetaKeyFromExprCxt* pCxt, STempTableNode* pTempTable) {
33,914,396✔
247
  pCxt->errCode = collectMetaKeyFromQuery(pCxt->pComCxt, pTempTable->pSubquery);
33,914,396✔
248
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
33,914,396✔
249
}
250

251
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
455,294,738✔
252
  if (pOperator->opType != OP_TYPE_EQUAL) {
455,294,738✔
253
    return TSDB_CODE_SUCCESS;
391,855,499✔
254
  }
255

256
  SValueNode* pValueNode = NULL;
63,440,757✔
257
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
63,440,757✔
258
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
4,806,615✔
259
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
680,874✔
260
    pValueNode = (SValueNode*)pOperator->pRight;
657,275✔
261
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
62,783,519✔
262
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
94,162✔
263
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
1,260✔
264
    pValueNode = (SValueNode*)pOperator->pLeft;
×
265
  } else {
266
    return TSDB_CODE_SUCCESS;
62,783,482✔
267
  }
268

269
  *ppTableName = pValueNode->literal;
657,275✔
270

271
  return TSDB_CODE_SUCCESS;
657,275✔
272
}
273

274
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
597,189,187✔
275
  if (!pCxt->tbnameCollect) {
597,189,187✔
276
    return DEAL_RES_CONTINUE;
141,895,361✔
277
  }
278

279
  char*   pTableName = NULL;
455,295,257✔
280
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
455,294,809✔
281
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
455,304,482✔
282
  if (pTableName) {
455,304,482✔
283
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
657,275✔
284
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
657,275✔
285
                                                    pTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
286
  }
287

288
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
455,304,482✔
289
}
290

291
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
2,147,483,647✔
292
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
2,147,483,647✔
293
  switch (nodeType(pNode)) {
2,147,483,647✔
294
    case QUERY_NODE_FUNCTION:
631,439,164✔
295
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
631,439,164✔
296
    case QUERY_NODE_REAL_TABLE:
751,592,243✔
297
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
751,592,243✔
298
    case QUERY_NODE_TEMP_TABLE:
33,914,396✔
299
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
33,914,396✔
300
    case QUERY_NODE_OPERATOR:
597,197,948✔
301
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
597,197,948✔
302
    case QUERY_NODE_SET_OPERATOR:
31,826,601✔
303
      return collectMetaKeyFromSetOperator(pCxt->pComCxt, (SSetOperator*)pNode);
31,826,601✔
304
    case QUERY_NODE_SELECT_STMT:
362,343,910✔
305
      return collectMetaKeyFromQuery(pCxt->pComCxt, pNode);
362,343,910✔
306
    default:
2,147,483,647✔
307
      break;
2,147,483,647✔
308
  }
309
  return DEAL_RES_CONTINUE;
2,147,483,647✔
310
}
311

312
static int32_t collectMetaKeyFromExprs(SCollectMetaKeyCxt* pCxt, SNodeList* pList) {
47,138,105✔
313
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .errCode = TSDB_CODE_SUCCESS, .tbnameCollect = false};
47,138,105✔
314
  nodesWalkExprs(pList, collectMetaKeyFromExprImpl, &cxt);
47,138,105✔
315
  return cxt.errCode;
47,138,369✔
316
}
317

318
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt) {
47,135,399✔
319
  int32_t code = collectMetaKeyFromQuery(pCxt, pStmt->pLeft);
47,135,399✔
320
  if (TSDB_CODE_SUCCESS == code) {
47,137,952✔
321
    code = collectMetaKeyFromQuery(pCxt, pStmt->pRight);
47,138,026✔
322
  }
323
  if (TSDB_CODE_SUCCESS == code) {
47,138,028✔
324
    code = collectMetaKeyFromExprs(pCxt, pStmt->pOrderByList);
47,138,192✔
325
  }
326
  return code;
47,138,369✔
327
}
328

329
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
18,000,326✔
330
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
18,000,326✔
331
    return TSDB_CODE_SUCCESS;
536,078✔
332
  }
333
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
17,464,301✔
334
}
335

336
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
764,574,322✔
337
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
764,574,322✔
338
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
764,576,747✔
339
    cxt.tbnameCollect = true;
658,213,561✔
340
    cxt.pComCxt->collectVStbRefDbs = true;
658,213,561✔
341
  }
342
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
764,576,002✔
343
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
764,597,716✔
344
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
18,000,763✔
345
  }
346
  return cxt.errCode;
764,597,794✔
347
}
348

349
static int32_t collectMetaKeyFromCreateDatabase(SCollectMetaKeyCxt* pCxt, SCreateDatabaseStmt* pStmt) {
1,684,169✔
350
  int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_DB_CREATE, 0,
1,684,169✔
351
                                        pCxt->pMetaCache);
352
  if (TSDB_CODE_SUCCESS == code) {
1,684,169✔
353
    // pre-fetch PRIV_SECURITY_POLICY_ALTER for CREATE DATABASE ... SECURITY_LEVEL X (MAC mode)
354
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
1,684,169✔
355
                                  PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache);
356
  }
357
  return code;
1,684,169✔
358
}
359

360
static int32_t collectMetaKeyFromAlterDatabase(SCollectMetaKeyCxt* pCxt, SAlterDatabaseStmt* pStmt) {
218,448✔
361
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
218,448✔
362
  if (TSDB_CODE_SUCCESS == code) {
218,448✔
363
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_CM_ALTER,
218,448✔
364
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
365
  }
366
  if (TSDB_CODE_SUCCESS == code) {
218,448✔
367
    // ALTER DATABASE ... SECURITY_LEVEL uses PRIV_SECURITY_POLICY_ALTER as primary check: pre-fetch unconditionally.
368
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
218,448✔
369
                                  PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache);
370
  }
371
  return code;
218,448✔
372
}
373

374
static int32_t collectMetaKeyFromDropDatabase(SCollectMetaKeyCxt* pCxt, SDropDatabaseStmt* pStmt) {
1,432,449✔
375
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,432,449✔
376
  if (TSDB_CODE_SUCCESS == code) {
1,432,449✔
377
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_CM_DROP,
1,432,449✔
378
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
379
  }
380
  return code;
1,432,449✔
381
}
382

383
static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) {
1,992,511✔
384
  int32_t code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,992,511✔
385
  if (TSDB_CODE_SUCCESS == code) {
1,992,511✔
386
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_FLUSH,
1,992,511✔
387
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
388
  }
389
  return code;
1,992,511✔
390
}
391

392
static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) {
9,738,306✔
393
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,738,306✔
394
  if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) {
9,738,306✔
395
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
7,927,471✔
396
  }
397
  if (TSDB_CODE_SUCCESS == code) {
9,738,306✔
398
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
9,738,306✔
399
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
400
  }
401
  if (TSDB_CODE_SUCCESS == code) {
9,738,306✔
402
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE,
9,738,306✔
403
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
404
  }
405
  return code;
9,738,306✔
406
}
407

408
static int32_t collectMetaKeyFromCreateVTable(SCollectMetaKeyCxt* pCxt, SCreateVTableStmt* pStmt) {
234,092✔
409
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
234,092✔
410
  if (TSDB_CODE_SUCCESS == code) {
234,092✔
411
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
234,092✔
412
  }
413
  if (TSDB_CODE_SUCCESS == code) {
234,092✔
414
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
234,092✔
415
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
416
  }
417
  if (TSDB_CODE_SUCCESS == code) {
234,092✔
418
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE,
234,092✔
419
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
420
  }
421
  if (TSDB_CODE_SUCCESS == code) {
234,092✔
422
    SNode* pNode = NULL;
234,092✔
423
    FOREACH(pNode, pStmt->pCols) {
161,100,524✔
424
      SColumnDefNode* pCol = (SColumnDefNode*)pNode;
160,866,432✔
425
      if (NULL == pCol) {
160,866,432✔
UNCOV
426
        code = TSDB_CODE_PAR_INVALID_COLUMN;
×
UNCOV
427
        break;
×
428
      }
429
      SColumnOptions* pOptions = (SColumnOptions*)pCol->pOptions;
160,866,432✔
430
      if (pOptions && pOptions->hasRef) {
160,866,432✔
431
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
100,361,694✔
432
        if (TSDB_CODE_SUCCESS == code) {
100,361,694✔
433
          code =
434
              reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
100,361,694✔
435
        }
436
        if (TSDB_CODE_SUCCESS == code) {
100,361,694✔
437
          code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pOptions->refDb,
200,722,845✔
438
                                        pOptions->refTable, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
100,361,694✔
439
        }
440
        if (TSDB_CODE_SUCCESS != code) {
100,361,694✔
UNCOV
441
          break;
×
442
        }
443
      }
444
    }
445
  }
446
  return code;
234,092✔
447
}
448

449
static int32_t collectMetaKeyFromCreateVSubTable(SCollectMetaKeyCxt* pCxt, SCreateVSubTableStmt* pStmt) {
424,475✔
450
  int32_t code = TSDB_CODE_SUCCESS;
424,475✔
451
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
424,475✔
452
  // super table's meta
453
  PAR_ERR_RET(
424,475✔
454
      reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->useDbName, pStmt->useTableName, pCxt->pMetaCache));
455
  // child table's meta
456
  PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
424,475✔
457
  // check db's write auth
458
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
424,475✔
459
                                     PRIV_OBJ_DB, pCxt->pMetaCache));
460
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
424,475✔
461
                                     PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache));
462
  // check org table's read auth for column references
463
  SNode*     pNode = NULL;
424,475✔
464
  SNodeList* pTmpNodeList = pStmt->pSpecificColRefs ? pStmt->pSpecificColRefs : pStmt->pColRefs;
424,475✔
465
  if (pTmpNodeList) {
424,475✔
466
    FOREACH(pNode, pTmpNodeList) {
61,937,214✔
467
      SColumnRefNode* pColRef = (SColumnRefNode*)pNode;
61,538,820✔
468
      if (NULL == pColRef) {
61,538,820✔
UNCOV
469
        code = TSDB_CODE_PAR_INVALID_COLUMN;
×
UNCOV
470
        break;
×
471
      }
472
      PAR_ERR_RET(
61,538,820✔
473
          reserveTableMetaInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName, pCxt->pMetaCache));
474
      PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName,
61,538,820✔
475
                                            pCxt->pMetaCache));
476
      PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pColRef->refDbName,
61,538,820✔
477
                                         pColRef->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache));
478
    }
479
  }
480

481
  // collect metadata for tag reference tables (SColumnRefNode nodes in pValsOfTags)
482
  // Handles all tag ref syntax forms: legacy (FROM db.table.tag), specific (tag_name FROM db.table.tag),
483
  // and positional (db.table.tag) - all produce SColumnRefNode in pValsOfTags.
484
  if (pStmt->pValsOfTags) {
424,475✔
485
    FOREACH(pNode, pStmt->pValsOfTags) {
2,312,023✔
486
      if (nodeType(pNode) == QUERY_NODE_COLUMN_REF) {
1,887,548✔
UNCOV
487
        SColumnRefNode* pTagRef = (SColumnRefNode*)pNode;
×
UNCOV
488
        PAR_ERR_RET(
×
489
            reserveTableMetaInCache(pCxt->pParseCxt->acctId, pTagRef->refDbName, pTagRef->refTableName, pCxt->pMetaCache));
UNCOV
490
        PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pTagRef->refDbName, pTagRef->refTableName,
×
491
                                              pCxt->pMetaCache));
UNCOV
492
        PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pTagRef->refDbName,
×
493
                                           pTagRef->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache));
494
      }
495
    }
496
  }
497

498
  return code;
424,475✔
499
}
500

501
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
38,136,340✔
502
  int32_t code = TSDB_CODE_SUCCESS;
38,136,340✔
503
  SNode*  pNode = NULL;
38,136,340✔
504
  FOREACH(pNode, pStmt->pSubTables) {
83,685,368✔
505
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
45,543,122✔
506
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
45,550,629✔
507
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
45,550,629✔
508
      if (TSDB_CODE_SUCCESS == code) {
45,547,439✔
509
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
45,548,351✔
510
                                       pCxt->pMetaCache);
511
      }
512
      if (TSDB_CODE_SUCCESS == code) {
45,551,017✔
513
        code =
514
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
45,551,017✔
515
      }
516
      if (TSDB_CODE_SUCCESS == code) {
45,556,325✔
517
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
45,556,325✔
518
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
519
      }
520
      if (TSDB_CODE_SUCCESS == code) {
45,550,467✔
521
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
45,550,467✔
522
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
523
      }
524
    } else {
UNCOV
525
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
UNCOV
526
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
UNCOV
527
      if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
528
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
529
                                       pCxt->pMetaCache);
530
      }
UNCOV
531
      if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
532
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
533
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
534
      }
UNCOV
535
      if (TSDB_CODE_SUCCESS == code) {
×
536
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
537
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
538
      }
539
    }
540

541
    if (TSDB_CODE_SUCCESS != code) {
45,549,028✔
542
      break;
×
543
    }
544
  }
545
  return code;
38,139,081✔
546
}
547

548
static int32_t collectMetaKeyFromCreateSubTableFromFile(SCollectMetaKeyCxt*            pCxt,
1,458✔
549
                                                        SCreateSubTableFromFileClause* pClause) {
550
  int32_t code = TSDB_CODE_SUCCESS;
1,458✔
551
  SNode*  pNode = NULL;
1,458✔
552

553
  code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
1,458✔
554
  if (TSDB_CODE_SUCCESS == code) {
1,458✔
555
    code =
556
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, pCxt->pMetaCache);
1,458✔
557
  }
558
  if (TSDB_CODE_SUCCESS == code) {
1,458✔
559
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
1,458✔
560
                                  PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
561
  }
562
  if (TSDB_CODE_SUCCESS == code) {
1,458✔
563
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
1,458✔
564
                                  PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
565
  }
566

567
  return code;
1,458✔
568
}
569

570
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
2,750,084✔
571
  int32_t code = TSDB_CODE_SUCCESS;
2,750,084✔
572
  SNode*  pNode = NULL;
2,750,084✔
573
  FOREACH(pNode, pStmt->pTables) {
5,620,368✔
574
    SDropTableClause* pClause = (SDropTableClause*)pNode;
2,870,284✔
575
    if (pStmt->withOpt) {
2,870,284✔
576
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
153,429✔
577
      if (TSDB_CODE_SUCCESS == code) {
153,429✔
578
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
153,429✔
579
      }
580
    } else {
581
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
2,716,855✔
582
      if (TSDB_CODE_SUCCESS == code) {
2,716,855✔
583
        code =
584
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
2,716,855✔
585
      }
586
      if (TSDB_CODE_SUCCESS == code) {
2,716,855✔
587
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
5,425,287✔
588
                                      pClause->tableName, PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
2,716,855✔
589
      }
590
    }
591
    if (TSDB_CODE_SUCCESS == code) {
2,870,284✔
592
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
2,870,284✔
593
    }
594
    if (TSDB_CODE_SUCCESS == code) {
2,870,284✔
595
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE,
2,870,284✔
596
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
597
    }
598

599
    if (TSDB_CODE_SUCCESS != code) {
2,870,284✔
UNCOV
600
      break;
×
601
    }
602
  }
603
  return code;
2,750,084✔
604
}
605

606
static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) {
101,932✔
607
  int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
101,932✔
608
                                        PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
609
  if (TSDB_CODE_SUCCESS == code) {
101,932✔
610
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
101,932✔
611
  }
612
  if (TSDB_CODE_SUCCESS == code) {
101,932✔
613
    if (pStmt->withOpt) {
101,932✔
614
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
59,949✔
615
    } else {
616
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
41,983✔
617
                                    PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
618
    }
619
  }
620
  return code;
101,932✔
621
}
622

623
static int32_t collectMetaKeyFromDropVtable(SCollectMetaKeyCxt* pCxt, SDropVirtualTableStmt* pStmt) {
78,732✔
624
  int32_t code = TSDB_CODE_SUCCESS;
78,732✔
625
  if (pStmt->withOpt) {
78,732✔
UNCOV
626
    code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
×
UNCOV
627
    if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
628
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
629
    }
UNCOV
630
    if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
631
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
632
    }
633
  } else {
634
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
78,732✔
635
    if (TSDB_CODE_SUCCESS == code) {
78,732✔
636
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
78,732✔
637
    }
638
    if (TSDB_CODE_SUCCESS == code) {
78,732✔
639
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
78,732✔
640
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
641
    }
642
    if (TSDB_CODE_SUCCESS == code) {
78,732✔
643
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
78,732✔
644
                                    PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
645
    }
646
  }
647
  return code;
78,732✔
648
}
649

650

651

652
static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
23,565,105✔
653
  int32_t code = TSDB_CODE_SUCCESS;
23,565,105✔
654

655
  if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_MULTI_TABLE_TAG_VAL) {
23,565,105✔
656
    SNode*  pNode = NULL;
8,990,425✔
657
    FOREACH(pNode, pStmt->pList) {
18,015,581✔
658
      SAlterTableUpdateTagValClause* pClause = (SAlterTableUpdateTagValClause*)pNode;
9,025,156✔
659
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
9,025,156✔
660
      if (code != TSDB_CODE_SUCCESS) {
9,025,156✔
UNCOV
661
        break;
×
662
      }
663

664
      SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
9,025,156✔
665
      tstrncpy(name.dbname, pClause->dbName, TSDB_DB_NAME_LEN);
9,025,156✔
666
      tstrncpy(name.tname, pClause->tableName, TSDB_TABLE_NAME_LEN);
9,025,156✔
667
      code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
9,025,156✔
668
      if (code != TSDB_CODE_SUCCESS) {
9,025,156✔
UNCOV
669
        break;
×
670
      }
671

672
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
9,025,156✔
673
      if (code != TSDB_CODE_SUCCESS) {
9,025,156✔
UNCOV
674
        break;
×
675
      }
676

677
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
9,025,156✔
678
      if (code != TSDB_CODE_SUCCESS) {
9,025,156✔
UNCOV
679
        break;
×
680
      }
681

682
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
9,025,156✔
683
      if (code != TSDB_CODE_SUCCESS) {
9,025,156✔
UNCOV
684
        break;
×
685
      }
686
                                      
687
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, pClause->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache);
9,025,156✔
688
      if (code != TSDB_CODE_SUCCESS) {
9,025,156✔
UNCOV
689
        break;
×
690
      }
691
    }
692

693
    return code;
8,990,425✔
694
  }
695
  
696
  if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_CHILD_TABLE_TAG_VAL) {
14,574,680✔
697
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
32,727✔
698
    if (TSDB_CODE_SUCCESS != code) {
32,727✔
UNCOV
699
      return code;
×
700
    }
701

702
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
32,727✔
703
    if (TSDB_CODE_SUCCESS != code) {
32,727✔
UNCOV
704
      return code;
×
705
    }
706

707
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
32,727✔
708
    if (TSDB_CODE_SUCCESS != code) {
32,727✔
UNCOV
709
      return code;
×
710
    }
711

712
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
32,727✔
713
    if (TSDB_CODE_SUCCESS != code) {
32,727✔
UNCOV
714
      return code;
×
715
    }
716

717
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache);
32,727✔
718
    return code;
32,727✔
719
  }
720

721
  code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
14,541,953✔
722
  if (code != TSDB_CODE_SUCCESS) {
14,541,953✔
UNCOV
723
    return code;
×
724
  }
725

726
  code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
14,541,953✔
727
  if (code != TSDB_CODE_SUCCESS) {
14,541,953✔
UNCOV
728
    return code;
×
729
  }
730

731
  code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
14,541,953✔
732
  if (code != TSDB_CODE_SUCCESS) {
14,541,953✔
UNCOV
733
    return code;
×
734
  }
735

736
  code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
14,541,953✔
737
  if (code != TSDB_CODE_SUCCESS) {
14,541,953✔
UNCOV
738
    return code;
×
739
  }
740
                                  
741
  code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache);
14,541,953✔
742
  if (TSDB_CODE_SUCCESS == code) {
14,541,953✔
743
    // ALTER TABLE ... SECURITY_LEVEL uses PRIV_SECURITY_POLICY_ALTER as primary check: pre-fetch unconditionally.
744
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
14,541,953✔
745
                                  PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache);
746
  }
747
  return code;
14,541,953✔
748
}
749

750

751

752
static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
564,832✔
753
  if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_MULTI_TABLE_TAG_VAL) {
564,832✔
754
    // TODO: should return TSDB_CODE_PAR_INVALID_ALTER_TABLE directly
755
    int32_t code = TSDB_CODE_SUCCESS;
394✔
756
    SNode*  pNode = NULL;
394✔
757
    FOREACH(pNode, pStmt->pList) {
788✔
758
      SAlterTableUpdateTagValClause* pClause = (SAlterTableUpdateTagValClause*)pNode;
394✔
759
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
394✔
760
      if (code != TSDB_CODE_SUCCESS) break;
394✔
761
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
394✔
762
      if (code != TSDB_CODE_SUCCESS) break;
394✔
763
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
394✔
764
      if (code != TSDB_CODE_SUCCESS) break;
394✔
765
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, pClause->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache);
394✔
766
      if (code != TSDB_CODE_SUCCESS) break;
394✔
767
    }
768
    return code;
394✔
769
  }
770

771
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
564,438✔
772
  if (TSDB_CODE_SUCCESS == code) {
564,438✔
773
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
564,438✔
774
  }
775
  if (TSDB_CODE_SUCCESS == code) {
564,438✔
776
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
564,438✔
777
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
778
  }
779
  if (TSDB_CODE_SUCCESS == code) {
564,438✔
780
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
564,438✔
781
                                  PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache);
782
  }
783
  if (TSDB_CODE_SUCCESS == code) {
564,438✔
784
    // ALTER TABLE ... SECURITY_LEVEL uses PRIV_SECURITY_POLICY_ALTER as primary check: pre-fetch unconditionally.
785
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
564,438✔
786
                                  PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache);
787
  }
788
  return code;
564,438✔
789
}
790

791

792

793
static int32_t collectMetaKeyFromAlterVtable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
450,488✔
794
  PAR_ERR_RET(collectMetaKeyFromAlterTable(pCxt, pStmt));
450,488✔
795

796
  if (pStmt->alterType == TSDB_ALTER_TABLE_ALTER_COLUMN_REF ||
450,488✔
797
      pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COLUMN_REF) {
326,241✔
798
    PAR_ERR_RET(
164,305✔
799
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->refDbName, pStmt->refTableName, pCxt->pMetaCache));
800
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName, NULL,
164,305✔
801
                                       PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache));
802
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName,
164,305✔
803
                                       pStmt->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache));
804
  }
805

806
  return TSDB_CODE_SUCCESS;
450,488✔
807
}
808

809

810

811
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
99,325,855✔
812
  int32_t code = reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
99,325,855✔
813
  if (TSDB_CODE_SUCCESS == code) {
99,330,096✔
814
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
99,329,916✔
815
  }
816
  if (TSDB_CODE_SUCCESS == code) {
99,330,696✔
817
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
99,327,324✔
818
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
819
  }
820
  return code;
99,330,512✔
821
}
822

823
static int32_t collectMetaKeyFromCreateIndex(SCollectMetaKeyCxt* pCxt, SCreateIndexStmt* pStmt) {
23,353✔
824
  int32_t code = TSDB_CODE_SUCCESS;
23,353✔
825
  if (INDEX_TYPE_SMA == pStmt->indexType || INDEX_TYPE_NORMAL == pStmt->indexType) {
23,353✔
826
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
23,353✔
827
    if (TSDB_CODE_SUCCESS == code) {
23,353✔
828
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
23,353✔
829
    }
830
    if (TSDB_CODE_SUCCESS == code) {
23,353✔
831
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
23,353✔
832
    }
833
    if (TSDB_CODE_SUCCESS == code) {
23,353✔
834
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
23,353✔
835
    }
836
    if (TSDB_CODE_SUCCESS == code) {
23,353✔
837
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
23,353✔
838
                                    PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
839
    }
840
    if (TSDB_CODE_SUCCESS == code) {
23,353✔
841
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
23,353✔
842
                                    PRIV_IDX_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
843
    }
844
    if (TSDB_CODE_SUCCESS == code) {
23,353✔
845
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
23,353✔
846
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
847
    }
848
  }
849
  return code;
23,353✔
850
}
851

852
static int32_t collectMetaKeyFromDropIndex(SCollectMetaKeyCxt* pCxt, SDropIndexStmt* pStmt) {
11,335✔
853
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->indexDbName, pCxt->pMetaCache);
11,335✔
854
  if (TSDB_CODE_SUCCESS == code) {
11,335✔
855
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->indexDbName, NULL,
11,335✔
856
                                  PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
857
  }
858
  if (TSDB_CODE_SUCCESS == code) {
11,335✔
859
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->indexDbName, pStmt->indexName,
11,335✔
860
                                  PRIV_CM_DROP, PRIV_OBJ_IDX, pCxt->pMetaCache);
861
  }
862
  return code;
11,335✔
863
}
864

865
static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) {
206,368✔
866
  int32_t code = 0;
206,368✔
867
  if (NULL != pStmt->pQuery) {
206,368✔
868
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
159,124✔
869
  }
870
  if (NULL != pStmt->pWhere) {
206,368✔
871
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
9,923✔
872
  }
873
  if (pStmt->subDbName[0] != '\0') {
206,368✔
874
    if (TSDB_CODE_SUCCESS == code) {
47,244✔
875
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->subDbName, pCxt->pMetaCache);
47,244✔
876
    }
877
    if (TSDB_CODE_SUCCESS == code) {
47,244✔
878
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->subDbName, NULL,
47,244✔
879
                                    PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
880
    }
881
    if (TSDB_CODE_SUCCESS == code) {
47,244✔
882
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->subDbName, NULL,
47,244✔
883
                                    PRIV_TOPIC_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
884
    }
885
  }
886
  return code;
206,368✔
887
}
888

889
static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) {
101,321,755✔
890
  return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
101,321,755✔
891
}
892

893
static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStmt* pStmt) {
578,187✔
894
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
578,187✔
895
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
578,187✔
896
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
578,187✔
897
  int32_t code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
578,187✔
898
#ifdef TD_ENTERPRISE
899
  if (TSDB_CODE_SUCCESS == code) {
578,187✔
900
    char dbFName[TSDB_DB_FNAME_LEN];
565,808✔
901
    (void)tNameGetFullDbName(&name, dbFName);
578,224✔
902
    code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->tableName, 0);
578,224✔
903
  }
904
#endif
905
  if (TSDB_CODE_SUCCESS == code) {
578,224✔
906
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
578,224✔
907
  }
908
  if (TSDB_CODE_SUCCESS == code) {
578,187✔
909
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
578,187✔
910
  }
911
  return code;
578,187✔
912
}
913

914
static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) {
445,953✔
915
  int32_t code = TSDB_CODE_SUCCESS;
445,953✔
916

917
  if (strcmp(pStmt->targetTabName, "") != 0) {
445,953✔
918
    PAR_ERR_RET(
439,412✔
919
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache));
920
    (void)reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName,
439,412✔
921
                                    pCxt->pMetaCache);
922
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pCxt->pMetaCache));
439,412✔
923
  }
924
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache));
445,953✔
925
  SRealTableNode* pTriggerTable = (SRealTableNode*)((SStreamTriggerNode*)pStmt->pTrigger)->pTrigerTable;
445,953✔
926
  if (pTriggerTable) {
445,953✔
927
    SCollectMetaKeyFromExprCxt cxt = {
433,243✔
928
        .pComCxt = pCxt, .hasLastRowOrLast = false, .tbnameCollect = true, .errCode = TSDB_CODE_SUCCESS};
929
    cxt.pComCxt->collectVStbRefDbs = true;
433,243✔
930
    EDealRes res = collectMetaKeyFromRealTable(&cxt, pTriggerTable);
433,243✔
931
    PAR_ERR_RET(cxt.errCode);
433,243✔
932
    PAR_ERR_RET(reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
433,243✔
933
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
433,243✔
934
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pTriggerTable->table.dbName,
433,243✔
935
                                       pTriggerTable->table.tableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL,
936
                                       pCxt->pMetaCache));
937
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pTriggerTable->table.dbName,
433,243✔
938
                                       NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache));
939
  }
940
  if (pStmt->pQuery) {
445,953✔
941
    PAR_ERR_RET(collectMetaKeyFromQuery(pCxt, pStmt->pQuery));
439,412✔
942
  }
943
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->streamDbName, NULL,
445,953✔
944
                                     PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache));
945
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->streamDbName, NULL,
445,953✔
946
                                     PRIV_STREAM_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache));
947
  if (pStmt->targetDbName[0] != '\0') {
445,953✔
948
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->targetDbName, NULL,
439,412✔
949
                                       PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache));
950
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->targetDbName, NULL,
439,412✔
951
                                       PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache));
952
  }
953

954
  return code;
445,953✔
955
}
956

957
static int32_t collectMetaKeyFromRecalculateStream(SCollectMetaKeyCxt* pCxt, SRecalcStreamStmt* pStmt) {
12,730✔
958
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache);
12,730✔
959
}
960

961
static int32_t collectMetaKeyFromShowDnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
25,110✔
962
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DNODES,
25,110✔
963
                                         pCxt->pMetaCache);
964
  if (TSDB_CODE_SUCCESS == code) {
25,110✔
965
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
25,110✔
966
                                  pCxt->pMetaCache);
967
  }
968
  return code;
25,110✔
969
}
970

971
static int32_t collectMetaKeyFromShowMnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
354,322✔
972
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MNODES,
354,322✔
973
                                         pCxt->pMetaCache);
974
  if (TSDB_CODE_SUCCESS == code) {
354,322✔
975
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
354,322✔
976
                                  pCxt->pMetaCache);
977
  }
978
  return code;
354,322✔
979
}
980

UNCOV
981
static int32_t collectMetaKeyFromShowModules(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
UNCOV
982
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MODULES,
×
983
                                         pCxt->pMetaCache);
UNCOV
984
  return code;
×
985
}
986

987
static int32_t collectMetaKeyFromShowQnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,197✔
988
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_QNODES,
2,197✔
989
                                         pCxt->pMetaCache);
990
  if (TSDB_CODE_SUCCESS == code) {
2,197✔
991
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
2,197✔
992
                                  pCxt->pMetaCache);
993
  }
994
  return code;
2,197✔
995
}
996

997
static int32_t collectMetaKeyFromShowSnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
64,801✔
998
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SNODES,
64,801✔
999
                                         pCxt->pMetaCache);
1000
  if (TSDB_CODE_SUCCESS == code) {
64,801✔
1001
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
64,801✔
1002
                                  pCxt->pMetaCache);
1003
  }
1004
  return code;
64,801✔
1005
}
1006

1007
static int32_t collectMetaKeyFromShowAnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
184✔
1008
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES,
184✔
1009
                                         pCxt->pMetaCache);
1010
  if (TSDB_CODE_SUCCESS == code) {
184✔
1011
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
184✔
1012
                                  pCxt->pMetaCache);
1013
  }
1014
  return code;
184✔
1015
}
1016

UNCOV
1017
static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
UNCOV
1018
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
×
1019
                                         TSDB_INS_TABLE_ANODES_FULL, pCxt->pMetaCache);
UNCOV
1020
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
1021
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
×
1022
                                  pCxt->pMetaCache);
1023
  }
UNCOV
1024
  return code;
×
1025
}
1026

1027
static int32_t collectMetaKeyFromShowBnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
62,765✔
1028
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BNODES,
62,765✔
1029
                                         pCxt->pMetaCache);
1030
  if (TSDB_CODE_SUCCESS == code) {
62,765✔
1031
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
62,765✔
1032
                                  pCxt->pMetaCache);
1033
  }
1034
  return code;
62,765✔
1035
}
1036

UNCOV
1037
static int32_t collectMetaKeyFromShowBackupNodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
UNCOV
1038
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
×
1039
                                         TSDB_INS_TABLE_BACKUP_NODES, pCxt->pMetaCache);
UNCOV
1040
  if (TSDB_CODE_SUCCESS == code) {
×
1041
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
×
1042
                                  pCxt->pMetaCache);
1043
  }
1044
  return code;
×
1045
}
1046

1047
static int32_t collectMetaKeyFromShowXnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,367✔
1048
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODES,
2,367✔
1049
                                         pCxt->pMetaCache);
1050
  if (TSDB_CODE_SUCCESS == code) {
2,367✔
1051
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
2,367✔
1052
                                  pCxt->pMetaCache);
1053
  }
1054
  return code;
2,367✔
1055
}
1056

1057
static int32_t collectMetaKeyFromShowXnodeTasks(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7,232✔
1058
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
7,232✔
1059
                                         TSDB_INS_TABLE_XNODE_TASKS, pCxt->pMetaCache);
1060
  if (TSDB_CODE_SUCCESS == code) {
7,232✔
1061
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CM_SHOW, 0,
7,232✔
1062
                                  pCxt->pMetaCache);
1063
  }
1064
  return code;
7,232✔
1065
}
1066
static int32_t collectMetaKeyFromShowXnodeAgents(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,313✔
1067
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
4,313✔
1068
                                         TSDB_INS_TABLE_XNODE_AGENTS, pCxt->pMetaCache);
1069
  if (TSDB_CODE_SUCCESS == code) {
4,313✔
1070
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
4,313✔
1071
                                  pCxt->pMetaCache);
1072
  }
1073
  return code;
4,313✔
1074
}
1075
static int32_t collectMetaKeyFromShowXnodeJobs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
5,286✔
1076
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODE_JOBS,
5,286✔
1077
                                         pCxt->pMetaCache);
1078
  if (TSDB_CODE_SUCCESS == code) {
5,286✔
1079
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CM_SHOW, 0,
5,286✔
1080
                                  pCxt->pMetaCache);
1081
  }
1082
  return code;
5,286✔
1083
}
1084

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

1095
static int32_t collectMetaKeyFromShowArbGroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
608✔
1096
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ARBGROUPS,
608✔
1097
                                         pCxt->pMetaCache);
1098
  return code;
608✔
1099
}
1100

1101
static int32_t collectMetaKeyFromShowCluster(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,227✔
1102
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CLUSTER,
3,227✔
1103
                                         pCxt->pMetaCache);
1104
  if (TSDB_CODE_SUCCESS == code) {
3,227✔
1105
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CLUSTER_SHOW, 0,
3,227✔
1106
                                  pCxt->pMetaCache);
1107
  }
1108
  return code;
3,227✔
1109
}
1110

1111
static int32_t collectMetaKeyFromShowSecurityPolicies(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
525✔
1112
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SECURITY_POLICIES,
525✔
1113
                                   pCxt->pMetaCache);
1114
  if (TSDB_CODE_SUCCESS == code) {
525✔
1115
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SECURITY_POLICIES_SHOW, 0,
525✔
1116
                                  pCxt->pMetaCache);
1117
  }
1118
  return code;
525✔
1119
}
1120

1121
static int32_t collectMetaKeyFromShowDatabases(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
201,862✔
1122
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DATABASES,
201,862✔
1123
                                 pCxt->pMetaCache);
1124
}
1125

1126
static int32_t collectMetaKeyFromShowFunctions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
12,147✔
1127
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FUNCTIONS,
12,147✔
1128
                                         pCxt->pMetaCache);
1129
  if (TSDB_CODE_SUCCESS == code) {
12,147✔
1130
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_FUNC_SHOW, 0,
12,147✔
1131
                                  pCxt->pMetaCache);
1132
  }
1133
  return code;
12,147✔
1134
}
1135

1136
static int32_t collectMetaKeyFromShowIndexes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7,408✔
1137
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_INDEXES,
7,408✔
1138
                                         pCxt->pMetaCache);
1139
  if (TSDB_CODE_SUCCESS == code) {
7,408✔
1140
    code =
1141
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
7,408✔
1142
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1143
  }
1144
  return code;
7,408✔
1145
}
1146

1147
static int32_t collectMetaKeyFromShowStables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
243,278✔
1148
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STABLES,
243,278✔
1149
                                         pCxt->pMetaCache);
1150
  if (TSDB_CODE_SUCCESS == code) {
243,278✔
1151
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
243,278✔
1152
  }
1153
  if (TSDB_CODE_SUCCESS == code) {
243,278✔
1154
    code =
1155
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
243,278✔
1156
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1157
  }
1158
  return code;
243,278✔
1159
}
1160

1161
static int32_t collectMetaKeyFromShowStreams(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
126,580✔
1162
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STREAMS,
126,580✔
1163
                                         pCxt->pMetaCache);
1164
  if (TSDB_CODE_SUCCESS == code && pStmt->pDbName != NULL) {
126,580✔
1165
    if (TSDB_CODE_SUCCESS == code) {
125,995✔
1166
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
125,995✔
1167
    }
1168
    if (TSDB_CODE_SUCCESS == code) {
125,995✔
1169
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
125,995✔
1170
    }
1171
    if (TSDB_CODE_SUCCESS == code) {
125,995✔
1172
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser,
251,520✔
1173
                                    ((SValueNode*)pStmt->pDbName)->literal, NULL, PRIV_DB_USE, PRIV_OBJ_DB,
125,995✔
1174
                                    pCxt->pMetaCache);
1175
    }
1176
  }
1177
  return code;
126,580✔
1178
}
1179

1180
static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
348,006✔
1181
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TABLES,
348,006✔
1182
                                         pCxt->pMetaCache);
1183
  if (TSDB_CODE_SUCCESS == code) {
348,006✔
1184
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
348,006✔
1185
  }
1186

1187
  if (TSDB_CODE_SUCCESS == code) {
348,006✔
1188
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
348,006✔
1189
  }
1190
  if (TSDB_CODE_SUCCESS == code) {
348,006✔
1191
    code =
1192
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
348,006✔
1193
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1194
  }
1195
  return code;
348,006✔
1196
}
1197

UNCOV
1198
static int32_t collectMetaKeyFromShowFilesets(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
UNCOV
1199
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FILESETS,
×
1200
                                         pCxt->pMetaCache);
UNCOV
1201
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
1202
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
1203
  }
UNCOV
1204
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
1205
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
1206
  }
UNCOV
1207
  if (TSDB_CODE_SUCCESS == code) {
×
1208
    code =
UNCOV
1209
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
×
1210
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1211
  }
UNCOV
1212
  return code;
×
1213
}
1214

1215
static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
709,803✔
1216
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS,
709,803✔
1217
                                         pCxt->pMetaCache);
1218
  if (TSDB_CODE_SUCCESS == code) {
709,803✔
1219
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,419,212✔
1220
                                   ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
709,803✔
1221
  }
1222
  if (TSDB_CODE_SUCCESS == code) {
709,803✔
1223
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
709,803✔
1224
  }
1225
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) {
709,803✔
1226
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,419,212✔
1227
                                     ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
709,803✔
1228
  }
1229
  return code;
709,803✔
1230
}
1231

1232
static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) {
6,853✔
1233
  return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal,
8,035✔
1234
                                         ((SValueNode*)pStmt->pTbName)->literal, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
6,853✔
1235
}
1236

1237
static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
110,991✔
1238
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS,
110,991✔
1239
                                         pCxt->pMetaCache);
1240
  if (TSDB_CODE_SUCCESS == code) {
110,991✔
1241
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_USER_SHOW, 0,
110,991✔
1242
                                  pCxt->pMetaCache);
1243
  }
1244
  return code;
110,991✔
1245
}
1246

1247
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
15,113✔
1248
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL,
15,113✔
1249
                                         pCxt->pMetaCache);
1250
  if (TSDB_CODE_SUCCESS == code) {
15,113✔
1251
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_USER_SHOW, 0,
15,113✔
1252
                                  pCxt->pMetaCache);
1253
  }
1254
  return code;
15,113✔
1255
}
1256

1257
static int32_t collectMetaKeyFromShowRoles(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,312✔
1258
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ROLES,
1,312✔
1259
                                         pCxt->pMetaCache);
1260
  if (TSDB_CODE_SUCCESS == code) {
1,312✔
1261
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_ROLE_SHOW, 0,
1,312✔
1262
                                  pCxt->pMetaCache);
1263
  }
1264
  return code;
1,312✔
1265
}
1266

1267
static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,835✔
1268
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES,
2,835✔
1269
                                         pCxt->pMetaCache);
1270
  if (TSDB_CODE_SUCCESS == code) {
2,835✔
1271
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
2,835✔
1272
                                  pCxt->pMetaCache);
1273
  }
1274
  return code;
2,835✔
1275
}
1276

1277
static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
249,325✔
1278
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
249,325✔
1279
                                         pCxt->pMetaCache);
1280
  if (TSDB_CODE_SUCCESS == code) {
249,325✔
1281
    // just to verify whether the database exists
1282
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
249,325✔
1283
  }
1284
  return code;
249,325✔
1285
}
1286

1287
static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
20,350✔
1288
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS,
20,350✔
1289
                                 pCxt->pMetaCache);
1290
}
1291

1292
static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
17,387✔
1293
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB,
17,387✔
1294
                                         TSDB_PERFS_TABLE_CONSUMERS, pCxt->pMetaCache);
1295
  if (TSDB_CODE_SUCCESS == code) {
17,387✔
1296
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CONSUMER_SHOW, 0,
17,387✔
1297
                                  pCxt->pMetaCache);
1298
  }
1299
  return code;
17,387✔
1300
}
1301

1302
static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,413✔
1303
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB,
2,413✔
1304
                                         TSDB_PERFS_TABLE_CONNECTIONS, pCxt->pMetaCache);
1305
  if (TSDB_CODE_SUCCESS == code) {
2,413✔
1306
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CONN_SHOW, 0,
2,413✔
1307
                                  pCxt->pMetaCache);
1308
  }
1309
  return code;
2,413✔
1310
}
1311

1312
static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,403✔
1313
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES,
3,403✔
1314
                                         pCxt->pMetaCache);
1315
  if (TSDB_CODE_SUCCESS == code) {
3,403✔
1316
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_QUERY_SHOW, 0,
3,403✔
1317
                                  pCxt->pMetaCache);
1318
  }
1319
  return code;
3,403✔
1320
}
1321

1322
static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
9,476✔
1323
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS,
9,476✔
1324
                                 pCxt->pMetaCache);
1325
}
1326

1327
static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) {
40,045✔
1328
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
40,045✔
1329
                                         TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache);
1330
  if (TSDB_CODE_SUCCESS == code) {
40,045✔
1331
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
40,045✔
1332
  }
1333
  return code;
40,045✔
1334
}
1335

1336
static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) {
10,147✔
1337
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES,
10,147✔
1338
                                 pCxt->pMetaCache);
1339
}
1340

1341
static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,013✔
1342
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
4,013✔
1343
                                         TSDB_INS_TABLE_USER_PRIVILEGES, pCxt->pMetaCache);
1344
  if (TSDB_CODE_SUCCESS == code) {
4,013✔
1345
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0,
4,013✔
1346
                                  pCxt->pMetaCache);
1347
  }
1348
  return code;
4,013✔
1349
}
1350

1351
static int32_t collectMetaKeyFromShowRolePrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,220✔
1352
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1,220✔
1353
                                         TSDB_INS_TABLE_ROLE_PRIVILEGES, pCxt->pMetaCache);
1354
  if (TSDB_CODE_SUCCESS == code) {
1,220✔
1355
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0,
1,220✔
1356
                                  pCxt->pMetaCache);
1357
  }
1358
  return code;
1,220✔
1359
}
1360

UNCOV
1361
static int32_t collectMetaKeyFromShowRoleColPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
UNCOV
1362
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
×
1363
                                         TSDB_INS_TABLE_ROLE_COL_PRIVILEGES, pCxt->pMetaCache);
UNCOV
1364
  if (TSDB_CODE_SUCCESS == code) {
×
UNCOV
1365
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0,
×
1366
                                  pCxt->pMetaCache);
1367
  }
UNCOV
1368
  return code;
×
1369
}
1370

1371
static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
15,514✔
1372
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS,
15,514✔
1373
                                         pCxt->pMetaCache);
1374
  if (TSDB_CODE_SUCCESS == code) {
15,514✔
1375
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
15,514✔
1376
  }
1377
  if (TSDB_CODE_SUCCESS == code) {
15,514✔
1378
    code =
1379
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
15,514✔
1380
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1381
  }
1382
  return code;
15,514✔
1383
}
1384

1385
static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
748,600✔
1386
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS,
748,600✔
1387
                                         pCxt->pMetaCache);
1388
  return code;
748,600✔
1389
}
1390

1391
static int32_t collectMetaKeyFromShowScans(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,420✔
1392
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SCANS,
2,420✔
1393
                                         pCxt->pMetaCache);
1394
  return code;
2,420✔
1395
}
1396

1397
static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
34,425✔
1398
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
34,425✔
1399
                                         TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache);
1400
  return code;
34,425✔
1401
}
1402

1403
static int32_t collectMetaKeyFromShowScanDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,870✔
1404
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1,870✔
1405
                                         TSDB_INS_TABLE_SCAN_DETAILS, pCxt->pMetaCache);
1406
  return code;
1,870✔
1407
}
1408

1409
static int32_t collectMetaKeyFromShowSsMigrates(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
92,430✔
1410
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SSMIGRATES,
92,430✔
1411
                                         pCxt->pMetaCache);
1412
  return code;
92,430✔
1413
}
1414

1415
static int32_t collectMetaKeyFromShowTokens(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,938✔
1416
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOKENS,
1,938✔
1417
                                         pCxt->pMetaCache);
1418
  return code;
1,938✔
1419
}
1420

1421
static int32_t collectMetaKeyFromShowTransactionDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
316✔
1422
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
316✔
1423
                                         TSDB_INS_TABLE_TRANSACTION_DETAILS, pCxt->pMetaCache);
1424
  if (TSDB_CODE_SUCCESS == code) {
316✔
1425
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_TRANS_SHOW, 0,
316✔
1426
                                  pCxt->pMetaCache);
1427
  }
1428
  return code;
316✔
1429
}
1430

1431
static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,288✔
1432
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1,288✔
1433
                                         TSDB_INS_TABLE_GRANTS_FULL, pCxt->pMetaCache);
1434
  if (TSDB_CODE_SUCCESS == code) {
1,288✔
1435
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
1,288✔
1436
                                  pCxt->pMetaCache);
1437
  }
1438
  return code;
1,288✔
1439
}
1440

1441
static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,288✔
1442
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1,288✔
1443
                                         TSDB_INS_TABLE_GRANTS_LOGS, pCxt->pMetaCache);
1444
  if (TSDB_CODE_SUCCESS == code) {
1,288✔
1445
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
1,288✔
1446
                                  pCxt->pMetaCache);
1447
  }
1448
  return code;
1,288✔
1449
}
1450

1451
static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,483✔
1452
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES,
1,483✔
1453
                                         pCxt->pMetaCache);
1454
  if (TSDB_CODE_SUCCESS == code) {
1,483✔
1455
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0,
1,483✔
1456
                                  pCxt->pMetaCache);
1457
  }
1458
  return code;
1,483✔
1459
}
1460

1461
static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
193✔
1462
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS,
193✔
1463
                                 pCxt->pMetaCache);
1464
}
1465

1466
static int32_t collectMetaKeyFromShowEncryptAlgorithms(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
815✔
1467
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
815✔
1468
                                         TSDB_INS_TABLE_ENCRYPT_ALGORITHMS, pCxt->pMetaCache);
1469
  return code;
815✔
1470
}
1471

UNCOV
1472
static int32_t collectMetaKeyFromShowEncryptStatus(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
UNCOV
1473
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
×
1474
                                         TSDB_INS_TABLE_ENCRYPT_STATUS, pCxt->pMetaCache);
UNCOV
1475
  return code;
×
1476
}
1477

1478
static int32_t collectMetaKeyFromShowMounts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,344✔
1479
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MOUNTS,
1,344✔
1480
                                         pCxt->pMetaCache);
1481
  if (TSDB_CODE_SUCCESS == code) {
1,344✔
1482
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_MOUNT_SHOW, 0,
1,344✔
1483
                                  pCxt->pMetaCache);
1484
  }
1485
  return code;
1,344✔
1486
}
1487

1488
static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) {
74,049✔
1489
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
74,049✔
1490
}
1491

1492
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
103,836✔
1493
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
103,836✔
1494
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
103,836✔
1495
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
103,836✔
1496
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
103,836✔
1497
  if (TSDB_CODE_SUCCESS == code) {
103,836✔
1498
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
103,836✔
1499
  }
1500
  if (TSDB_CODE_SUCCESS == code) {
103,836✔
1501
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
103,836✔
1502
  }
1503
  // if (TSDB_CODE_SUCCESS == code) {
1504
  //   code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
1505
  //                                 AUTH_TYPE_READ, pCxt->pMetaCache);
1506
  // }
1507
  if (TSDB_CODE_SUCCESS == code) {
103,836✔
1508
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
103,836✔
1509
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1510
  }
1511
  if (TSDB_CODE_SUCCESS == code) {
103,836✔
1512
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
103,836✔
1513
                                  PRIV_CM_SHOW_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1514
  }
1515
  return code;
103,836✔
1516
}
1517

1518
static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) {
8,844✔
1519
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
8,844✔
1520
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
8,844✔
1521
  tstrncpy(name.tname, pStmt->viewName, TSDB_TABLE_NAME_LEN);
8,844✔
1522
  char dbFName[TSDB_DB_FNAME_LEN];
8,844✔
1523
  (void)tNameGetFullDbName(&name, dbFName);
8,844✔
1524
  int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0);
8,844✔
1525
  if (TSDB_CODE_SUCCESS == code) {
8,844✔
1526
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
8,844✔
1527
  }
1528
  if (TSDB_CODE_SUCCESS == code) {
8,844✔
1529
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
8,844✔
1530
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1531
  }
1532
  if (TSDB_CODE_SUCCESS == code) {
8,844✔
1533
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
8,844✔
1534
                                      PRIV_CM_SHOW_CREATE, PRIV_OBJ_VIEW, pCxt->pMetaCache);
1535
  }
1536
  if (TSDB_CODE_SUCCESS == code) {
8,844✔
1537
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
8,844✔
1538
  }
1539
  pCxt->pMetaCache->forceFetchViewMeta = true;
8,844✔
1540
  return code;
8,844✔
1541
}
1542

1543
static int32_t collectMetaKeyFromShowCreateRsma(SCollectMetaKeyCxt* pCxt, SShowCreateRsmaStmt* pStmt) {
3,490✔
1544
  int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
3,490✔
1545
                                        PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1546
  if (TSDB_CODE_SUCCESS == code) {
3,490✔
1547
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
3,490✔
1548
  }
1549
  if (TSDB_CODE_SUCCESS == code) {
3,490✔
1550
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName,
3,490✔
1551
                                  PRIV_CM_SHOW_CREATE, PRIV_OBJ_RSMA, pCxt->pMetaCache);
1552
  }
1553
  return code;
3,490✔
1554
}
1555

1556
static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,963✔
1557
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS,
1,963✔
1558
                                         pCxt->pMetaCache);
1559
  if (TSDB_CODE_SUCCESS == code) {
1,963✔
1560
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_APPS_SHOW, 0,
1,963✔
1561
                                  pCxt->pMetaCache);
1562
  }
1563
  return code;
1,963✔
1564
}
1565

1566
static int32_t collectMetaKeyFromShowInstances(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
784✔
1567
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_INSTANCES,
784✔
1568
                                 pCxt->pMetaCache);
1569
}
1570

1571
static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
579,021✔
1572
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
579,021✔
1573
                                         pCxt->pMetaCache);
1574
  if (TSDB_CODE_SUCCESS == code) {
579,021✔
1575
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_TRANS_SHOW, 0,
579,021✔
1576
                                  pCxt->pMetaCache);
1577
  }
1578
  return code;
579,021✔
1579
}
1580

1581
static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) {
1,967,887✔
1582
  STableNode* pTable = (STableNode*)pStmt->pFromTable;
1,967,887✔
1583
  return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, PRIV_TBL_DELETE, PRIV_OBJ_TBL);
1,967,887✔
1584
}
1585

1586
static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) {
517,640✔
1587
  STableNode* pTable = (STableNode*)pStmt->pTable;
517,640✔
1588
  int32_t     code =
1589
      collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, PRIV_TBL_INSERT, PRIV_OBJ_TBL);
517,640✔
1590
  if (TSDB_CODE_SUCCESS == code) {
517,640✔
1591
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
517,640✔
1592
  }
1593
  return code;
517,640✔
1594
}
1595

1596
static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) {
3,835✔
1597
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
3,835✔
1598
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
3,835✔
1599
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
3,835✔
1600
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
3,835✔
1601
  if (TSDB_CODE_SUCCESS == code) {
3,835✔
1602
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
3,835✔
1603
  }
1604
  return code;
3,835✔
1605
}
1606
static int32_t collectMetaKeyFromShowValidateVtable(SCollectMetaKeyCxt* pCxt, SShowValidateVirtualTable* pStmt) {
3,864✔
1607
  // Collect database information
1608
  int32_t code = 0;
3,864✔
1609

1610
  code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
3,864✔
1611
                                 TSDB_INS_TABLE_VIRTUAL_TABLES_REFERENCING, pCxt->pMetaCache);
1612
  if (TSDB_CODE_SUCCESS == code && pStmt->tableName[0] != 0) {
3,864✔
1613
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
3,864✔
1614
  }
1615

1616
  if (TSDB_CODE_SUCCESS == code) {
3,864✔
1617
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
3,864✔
1618
  }
1619
  if (TSDB_CODE_SUCCESS == code && pStmt->tableName[0] != 0) {
3,864✔
1620
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
3,864✔
1621
  }
1622
  return code;
3,864✔
1623
}
1624

1625
static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
29,595✔
1626
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS,
29,595✔
1627
                                 pCxt->pMetaCache);
1628
}
1629

1630
static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) {
34,114✔
1631
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
34,114✔
1632
  if (TSDB_CODE_SUCCESS == code) {
34,114✔
1633
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_COMPACT,
34,114✔
1634
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1635
  }
1636
  return code;
34,114✔
1637
}
1638

1639
static int32_t collectMetaKeyFromRollupDatabase(SCollectMetaKeyCxt* pCxt, SRollupDatabaseStmt* pStmt) {
10,590✔
1640
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
10,590✔
1641
  if (TSDB_CODE_SUCCESS == code) {
10,590✔
1642
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_ROLLUP,
10,590✔
1643
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1644
  }
1645
  return code;
10,590✔
1646
}
1647

1648
static int32_t collectMetaKeyFromScanDatabase(SCollectMetaKeyCxt* pCxt, SScanDatabaseStmt* pStmt) {
1,070✔
1649
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,070✔
1650
  if (TSDB_CODE_SUCCESS == code) {
1,070✔
1651
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_SCAN,
1,070✔
1652
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1653
  }
1654
  return code;
1,070✔
1655
}
1656

1657
static int32_t collectMetaKeyFromSsmigrateDatabase(SCollectMetaKeyCxt* pCxt, SSsMigrateDatabaseStmt* pStmt) {
3,170✔
1658
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
3,170✔
1659
  if (TSDB_CODE_SUCCESS == code) {
3,170✔
1660
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
3,170✔
1661
                                  PRIV_DB_SSMIGRATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1662
  }
1663
  return code;
3,170✔
1664
}
1665

1666
static int32_t collectMetaKeyFromTrimDatabase(SCollectMetaKeyCxt* pCxt, STrimDatabaseStmt* pStmt) {
10,285✔
1667
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
10,285✔
1668
  if (TSDB_CODE_SUCCESS == code) {
10,285✔
1669
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_TRIM,
10,285✔
1670
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1671
  }
1672
  return code;
10,285✔
1673
}
1674

1675
static int32_t collectMetaKeyFromCompactVgroups(SCollectMetaKeyCxt* pCxt, SCompactVgroupsStmt* pStmt) {
4,075✔
1676
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
4,075✔
1677
}
1678

1679
static int32_t collectMetaKeyFromRollupVgroups(SCollectMetaKeyCxt* pCxt, SRollupVgroupsStmt* pStmt) {
4,740✔
1680
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
4,740✔
1681
}
1682

1683
static int32_t collectMetaKeyFromScanVgroups(SCollectMetaKeyCxt* pCxt, SScanVgroupsStmt* pStmt) {
275✔
1684
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
275✔
1685
}
1686

1687
static int32_t collectMetaKeyFromGrantImpl(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt, bool grant) {
1,485,753✔
1688
  int32_t code = TSDB_CODE_SUCCESS;
1,485,753✔
1689

1690
  if (pStmt->optrType == TSDB_ALTER_ROLE_ROLE) {
1,485,753✔
1691
    if (pStmt->roleName[0] == 'S' && pStmt->roleName[1] == 'Y' && pStmt->roleName[2] == 'S') {
17,570✔
1692
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSDBA) == 0) {
16,578✔
1693
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
3,147✔
1694
                                      grant ? PRIV_GRANT_SYSDBA : PRIV_REVOKE_SYSDBA, 0, pCxt->pMetaCache);
1695
      }
1696
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSSEC) == 0) {
13,431✔
1697
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
3,557✔
1698
                                      grant ? PRIV_GRANT_SYSSEC : PRIV_REVOKE_SYSSEC, 0, pCxt->pMetaCache);
1699
      }
1700
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSAUDIT) == 0) {
9,874✔
1701
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
2,157✔
1702
                                      grant ? PRIV_GRANT_SYSAUDIT : PRIV_REVOKE_SYSAUDIT, 0, pCxt->pMetaCache);
1703
      }
1704
    }
1705
  } else if (TSDB_ALTER_ROLE_PRIVILEGES == pStmt->optrType) {
1,468,183✔
1706
    bool isRealObj = IS_SPECIFIC_OBJ(pStmt->objName);
1,468,183✔
1707
    if (isRealObj) {
1,468,183✔
1708
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->objName, pCxt->pMetaCache);
1,442,713✔
1709
    }
1710
    if (TSDB_CODE_SUCCESS == code) {
1,468,183✔
1711
      if (isRealObj && IS_SPECIFIC_OBJ(pStmt->tabName)) {
1,468,183✔
1712
        if (PRIV_OBJ_TBL == pStmt->privileges.objType) {
694,027✔
1713
          code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
10,976✔
1714
        } else if (PRIV_OBJ_VIEW == pStmt->privileges.objType || PRIV_OBJ_NONE == pStmt->privileges.objType) {
683,051✔
1715
          code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
672,705✔
1716
          pCxt->pMetaCache->forceFetchViewMeta = true;
672,705✔
1717
        } else {
1718
          // TODO: other object types
1719
        }
1720
      }
1721
    }
1722
  }
1723
  if (TSDB_CODE_SUCCESS == code) {
1,476,892✔
1724
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL,
1,476,892✔
1725
                                  grant ? PRIV_GRANT_PRIVILEGE : PRIV_REVOKE_PRIVILEGE, 0, pCxt->pMetaCache);
1726
  }
1727

1728
  return code;
1,476,892✔
1729
}
1730

1731
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
972,650✔
1732
  return collectMetaKeyFromGrantImpl(pCxt, pStmt, true);
972,650✔
1733
}
1734

1735
static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) {
513,103✔
1736
  return collectMetaKeyFromGrantImpl(pCxt, (SGrantStmt*)pStmt, false);
513,103✔
1737
}
1738

1739
static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) {
229,915✔
1740
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
229,915✔
1741

1742
  if (TSDB_CODE_SUCCESS == code) {
229,915✔
1743
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
229,915✔
1744
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1745
  }
1746
  if (TSDB_CODE_SUCCESS == code) {
229,915✔
1747
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
229,915✔
1748
  }
1749

1750
  if (TSDB_CODE_SUCCESS == code) {
229,915✔
1751
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
229,915✔
1752
                                  PRIV_VIEW_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1753
  }
1754
  if (TSDB_CODE_SUCCESS == code && pStmt->orReplace) {
229,915✔
1755
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
20,873✔
1756
                                  PRIV_CM_ALTER, PRIV_OBJ_VIEW, pCxt->pMetaCache);
1757
  }
1758
  if (TSDB_CODE_SUCCESS == code) {
229,915✔
1759
    if (!pStmt->pQuery ||
229,915✔
1760
        (QUERY_NODE_SELECT_STMT != nodeType(pStmt->pQuery) && QUERY_NODE_SET_OPERATOR != nodeType(pStmt->pQuery))) {
229,915✔
UNCOV
1761
      code = TSDB_CODE_PAR_INVALID_VIEW_QUERY;
×
1762
    } else {
1763
      code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
229,915✔
1764
    }
1765
  }
1766

1767
  return code;
229,915✔
1768
}
1769

1770
static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) {
172,154✔
1771
  int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
344,308✔
1772
                                            pStmt->viewName, PRIV_CM_DROP, PRIV_OBJ_VIEW, pCxt->pMetaCache);
172,154✔
1773
  pCxt->pMetaCache->forceFetchViewMeta = true;
172,154✔
1774
  if (TSDB_CODE_SUCCESS == code) {
172,154✔
1775
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
172,154✔
1776
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1777
  }
1778
  if (TSDB_CODE_SUCCESS == code) {
172,154✔
1779
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
172,154✔
1780
  }
1781
  if (TSDB_CODE_SUCCESS == code) {
172,154✔
1782
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
172,154✔
1783
  }
1784
  return code;
172,154✔
1785
}
1786

1787
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
9,226✔
1788
  int32_t code;
1789
  if (pStmt->pOptions->recursiveTsma) {
9,226✔
1790
    // if creating recursive tsma, the tablename is tsmaName
1791
    code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
1,404✔
1792
    if (TSDB_CODE_SUCCESS == code) {
1,404✔
1793
      char dstTbName[TSDB_TABLE_NAME_LEN] = {0};
1,404✔
1794
      snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName);
1,404✔
1795
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
1,404✔
1796
      if (TSDB_CODE_SUCCESS == code) {
1,404✔
1797
        code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
1,404✔
1798
      }
1799
    }
1800
  } else {
1801
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
7,822✔
1802
    if (TSDB_CODE_SUCCESS == code) {
7,822✔
1803
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
7,822✔
1804
    }
1805
    if (TSDB_CODE_SUCCESS == code) {
7,822✔
1806
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
7,822✔
1807
                                    PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
1808
    }
1809
    if (TSDB_CODE_SUCCESS == code) {
7,822✔
1810
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
7,822✔
1811
                                    PRIV_STREAM_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1812
    }
1813
    if (TSDB_CODE_SUCCESS == code) {
7,822✔
1814
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
7,822✔
1815
                                    PRIV_TSMA_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1816
    }
1817
  }
1818
  if (TSDB_CODE_SUCCESS == code) {
9,226✔
1819
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,226✔
1820
  }
1821
  if (TSDB_CODE_SUCCESS == code) {
9,226✔
1822
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,226✔
1823
  }
1824

1825
  if (TSDB_CODE_SUCCESS == code) {
9,226✔
1826
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
9,226✔
1827
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1828
  }
1829
  if (TSDB_CODE_SUCCESS == code) {
9,226✔
1830
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE,
9,226✔
1831
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1832
  }
1833

1834
  return code;
9,226✔
1835
}
1836

1837
static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) {
4,380✔
1838
  int32_t code;
1839
  code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache);
4,380✔
1840
  if (TSDB_CODE_SUCCESS == code) {
4,380✔
1841
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
4,380✔
1842
  }
1843
  if (TSDB_CODE_SUCCESS == code) {
4,380✔
1844
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
4,380✔
1845
  }
1846

1847
  if (TSDB_CODE_SUCCESS == code) {
4,380✔
1848
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
4,380✔
1849
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1850
  }
1851
  if (TSDB_CODE_SUCCESS == code) {
4,380✔
1852
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tsmaName,
4,380✔
1853
                                  PRIV_CM_DROP, PRIV_OBJ_TSMA, pCxt->pMetaCache);
1854
  }
1855
  return code;
4,380✔
1856
}
1857

1858
static int32_t collectMetaKeyFromShowUsage(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
364✔
1859
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_DISK_USAGE,
364✔
1860
                                         pCxt->pMetaCache);
1861
  if (TSDB_CODE_SUCCESS == code) {
364✔
1862
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
364✔
1863
  }
1864
  if (TSDB_CODE_SUCCESS == code) {
364✔
1865
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
364✔
1866
  }
1867
  if (TSDB_CODE_SUCCESS == code) {
364✔
1868
    code =
1869
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
364✔
1870
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1871
  }
1872
  return code;
364✔
1873
}
1874

1875
static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
160✔
1876
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS,
160✔
1877
                                 pCxt->pMetaCache);
1878
}
1879

1880
static int32_t collectMetaKeyFromCreateRsmaStmt(SCollectMetaKeyCxt* pCxt, SCreateRsmaStmt* pStmt) {
119,780✔
1881
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
119,780✔
1882
  if (TSDB_CODE_SUCCESS == code) {
119,780✔
1883
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
119,780✔
1884
  }
1885
  if (TSDB_CODE_SUCCESS == code) {
119,780✔
1886
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
119,780✔
1887
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1888
  }
1889
  if (TSDB_CODE_SUCCESS == code) {
119,780✔
1890
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
119,780✔
1891
                                  PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
1892
  }
1893
  if (TSDB_CODE_SUCCESS == code) {
119,780✔
1894
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
119,780✔
1895
                                  PRIV_TBL_INSERT, PRIV_OBJ_TBL, pCxt->pMetaCache);
1896
  }
1897
  if (TSDB_CODE_SUCCESS == code) {
119,780✔
1898
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
119,780✔
1899
                                  PRIV_RSMA_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1900
  }
1901
  return code;
119,780✔
1902
}
1903

1904
static int32_t collectMetaKeyFromDropRsmaStmt(SCollectMetaKeyCxt* pCxt, SDropRsmaStmt* pStmt) {
10,910✔
1905
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
10,910✔
1906
  if (TSDB_CODE_SUCCESS == code) {
10,910✔
1907
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
10,910✔
1908
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1909
  }
1910
  if (TSDB_CODE_SUCCESS == code) {
10,910✔
1911
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName,
10,910✔
1912
                                  PRIV_CM_DROP, PRIV_OBJ_RSMA, pCxt->pMetaCache);
1913
  }
1914
  return code;
10,910✔
1915
}
1916

1917
static int32_t collectMetaKeyFromAlterRsmaStmt(SCollectMetaKeyCxt* pCxt, SAlterRsmaStmt* pStmt) {
22,290✔
1918
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
22,290✔
1919
  if (TSDB_CODE_SUCCESS == code) {
22,290✔
1920
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName,
22,290✔
1921
                                  PRIV_CM_ALTER, PRIV_OBJ_RSMA, pCxt->pMetaCache);
1922
  }
1923
  return code;
22,290✔
1924
}
1925

1926
static int32_t collectMetaKeyFromShowRsmasStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
14,700✔
1927
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RSMAS,
14,700✔
1928
                                 pCxt->pMetaCache);
1929
}
1930

1931
static int32_t collectMetaKeyFromShowRetentionsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
41,171✔
1932
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTIONS,
41,171✔
1933
                                 pCxt->pMetaCache);
1934
}
1935

1936
static int32_t collectMetaKeyFromShowRetentionDetailsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,370✔
1937
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTION_DETAILS,
2,370✔
1938
                                 pCxt->pMetaCache);
1939
}
1940

1941
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
5,211✔
1942
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
5,211✔
1943
                                         pCxt->pMetaCache);
1944
  if (TSDB_CODE_SUCCESS == code && pStmt->dbName[0]) {
5,211✔
1945
    // just to verify whether the database exists
1946
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
1,722✔
1947
  }
1948
  return code;
5,211✔
1949
}
1950

1951
static int32_t collectMetaKeyFromAlterLocalStmt(SCollectMetaKeyCxt* pCxt, SAlterLocalStmt* pStmt) {
571,844✔
1952
  if ('\0' == pStmt->value[0]) {
571,844✔
1953
    char* p = strchr(pStmt->config, ' ');
6,312✔
1954
    if (NULL != p) {
6,312✔
1955
      *p = 0;
5,675✔
1956
      tstrncpy(pStmt->value, p + 1, sizeof(pStmt->value));
5,675✔
1957
    }
1958
  }
1959
  int32_t privType = cfgGetPrivType(tsCfg, pStmt->config, 0);
571,844✔
1960
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, privType, 0,
571,844✔
1961
                                pCxt->pMetaCache);
1962
  return TSDB_CODE_SUCCESS;
1963
}
1964

1965
static int32_t collectMetaKeyFromSysPrivStmt(SCollectMetaKeyCxt* pCxt, EPrivType privType) {
781,712✔
1966
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, privType, 0,
781,712✔
1967
                                pCxt->pMetaCache);
1968
}
1969

1970
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
1,075,807,556✔
1971
  int32_t code = 0;
1,075,807,556✔
1972
  SNode*  pOrigStmt = pCxt->pStmt;
1,075,807,556✔
1973
  pCxt->pStmt = pStmt;
1,075,815,389✔
1974

1975
  switch (nodeType(pStmt)) {
1,075,801,433✔
1976
    case QUERY_NODE_SET_OPERATOR:
15,310,819✔
1977
      code = collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
15,310,819✔
1978
      break;
15,311,692✔
1979
    case QUERY_NODE_SELECT_STMT:
764,578,261✔
1980
      code = collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
764,578,261✔
1981
      break;
764,602,630✔
1982
    case QUERY_NODE_ALTER_DATABASE_STMT:
218,448✔
1983
      code = collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
218,448✔
1984
      break;
218,448✔
1985
    case QUERY_NODE_FLUSH_DATABASE_STMT:
1,992,511✔
1986
      code = collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
1,992,511✔
1987
      break;
1,992,511✔
1988
    case QUERY_NODE_CREATE_TABLE_STMT:
9,738,306✔
1989
      code = collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
9,738,306✔
1990
      break;
9,738,306✔
1991
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
234,092✔
1992
      code = collectMetaKeyFromCreateVTable(pCxt, (SCreateVTableStmt*)pStmt);
234,092✔
1993
      break;
234,092✔
1994
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
424,475✔
1995
      code = collectMetaKeyFromCreateVSubTable(pCxt, (SCreateVSubTableStmt*)pStmt);
424,475✔
1996
      break;
424,475✔
1997
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
38,135,884✔
1998
      code = collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
38,135,884✔
1999
      break;
38,137,354✔
2000
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
1,458✔
2001
      code = collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
1,458✔
2002
      break;
1,458✔
2003
    case QUERY_NODE_DROP_TABLE_STMT:
2,750,084✔
2004
      code = collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
2,750,084✔
2005
      break;
2,750,084✔
2006
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
101,932✔
2007
      code = collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
101,932✔
2008
      break;
101,932✔
2009
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
78,732✔
2010
      code = collectMetaKeyFromDropVtable(pCxt, (SDropVirtualTableStmt*)pStmt);
78,732✔
2011
      break;
78,732✔
2012
    case QUERY_NODE_ALTER_TABLE_STMT:
23,114,617✔
2013
      code = collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
23,114,617✔
2014
      break;
23,114,617✔
2015
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
564,832✔
2016
      code = collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
564,832✔
2017
      break;
564,832✔
2018
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
450,488✔
2019
      code = collectMetaKeyFromAlterVtable(pCxt, (SAlterTableStmt*)pStmt);
450,488✔
2020
      break;
450,488✔
2021
    case QUERY_NODE_USE_DATABASE_STMT:
99,326,220✔
2022
      code = collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
99,326,220✔
2023
      break;
99,328,584✔
2024
    case QUERY_NODE_CREATE_INDEX_STMT:
23,353✔
2025
      code = collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
23,353✔
2026
      break;
23,353✔
2027
    case QUERY_NODE_DROP_INDEX_STMT:
11,335✔
2028
      code = collectMetaKeyFromDropIndex(pCxt, (SDropIndexStmt*)pStmt);
11,335✔
2029
      break;
11,335✔
2030
    case QUERY_NODE_CREATE_TOPIC_STMT:
206,368✔
2031
      code = collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
206,368✔
2032
      break;
206,368✔
2033
    case QUERY_NODE_EXPLAIN_STMT:
101,324,168✔
2034
      code = collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
101,324,168✔
2035
      break;
101,335,244✔
2036
    case QUERY_NODE_DESCRIBE_STMT:
578,187✔
2037
      code = collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
578,187✔
2038
      break;
578,187✔
2039
    case QUERY_NODE_COMPACT_DATABASE_STMT:
34,114✔
2040
      code = collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
34,114✔
2041
      break;
34,114✔
2042
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
10,590✔
2043
      code = collectMetaKeyFromRollupDatabase(pCxt, (SRollupDatabaseStmt*)pStmt);
10,590✔
2044
      break;
10,590✔
2045
    case QUERY_NODE_SCAN_DATABASE_STMT:
1,070✔
2046
      code = collectMetaKeyFromScanDatabase(pCxt, (SScanDatabaseStmt*)pStmt);
1,070✔
2047
      break;
1,070✔
2048
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
3,170✔
2049
      code = collectMetaKeyFromSsmigrateDatabase(pCxt, (SSsMigrateDatabaseStmt*)pStmt);
3,170✔
2050
      break;
3,170✔
2051
    case QUERY_NODE_TRIM_DATABASE_STMT:
10,285✔
2052
      code = collectMetaKeyFromTrimDatabase(pCxt, (STrimDatabaseStmt*)pStmt);
10,285✔
2053
      break;
10,285✔
2054
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
4,075✔
2055
      code = collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt);
4,075✔
2056
      break;
4,075✔
2057
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
4,740✔
2058
      code = collectMetaKeyFromRollupVgroups(pCxt, (SRollupVgroupsStmt*)pStmt);
4,740✔
2059
      break;
4,740✔
2060
    case QUERY_NODE_SCAN_VGROUPS_STMT:
275✔
2061
      code = collectMetaKeyFromScanVgroups(pCxt, (SScanVgroupsStmt*)pStmt);
275✔
2062
      break;
275✔
2063
    case QUERY_NODE_CREATE_STREAM_STMT:
445,953✔
2064
      code = collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
445,953✔
2065
      break;
445,953✔
2066
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
12,730✔
2067
      code = collectMetaKeyFromRecalculateStream(pCxt, (SRecalcStreamStmt*)pStmt);
12,730✔
2068
      break;
12,730✔
2069
    case QUERY_NODE_GRANT_STMT:
972,650✔
2070
      code = collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
972,650✔
2071
      break;
972,650✔
2072
    case QUERY_NODE_REVOKE_STMT:
513,103✔
2073
      code = collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
513,103✔
2074
      break;
513,103✔
2075
    case QUERY_NODE_SHOW_DNODES_STMT:
25,110✔
2076
      code = collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
25,110✔
2077
      break;
25,110✔
2078
    case QUERY_NODE_SHOW_MNODES_STMT:
354,322✔
2079
      code = collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
354,322✔
2080
      break;
354,322✔
UNCOV
2081
    case QUERY_NODE_SHOW_MODULES_STMT:
×
UNCOV
2082
      code = collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2083
      break;
×
2084
    case QUERY_NODE_SHOW_QNODES_STMT:
2,197✔
2085
      code = collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
2,197✔
2086
      break;
2,197✔
2087
    case QUERY_NODE_SHOW_SNODES_STMT:
64,801✔
2088
      code = collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
64,801✔
2089
      break;
64,801✔
2090
    case QUERY_NODE_SHOW_ANODES_STMT:
184✔
2091
      code = collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
184✔
2092
      break;
184✔
UNCOV
2093
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
UNCOV
2094
      code = collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2095
      break;
×
2096
    case QUERY_NODE_SHOW_BNODES_STMT:
62,765✔
2097
      code = collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
62,765✔
2098
      break;
62,765✔
UNCOV
2099
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
UNCOV
2100
      code = collectMetaKeyFromShowBackupNodes(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2101
      break;
×
2102
    case QUERY_NODE_SHOW_XNODES_STMT:
2,367✔
2103
      code = collectMetaKeyFromShowXnodes(pCxt, (SShowStmt*)pStmt);
2,367✔
2104
      break;
2,367✔
2105
    case QUERY_NODE_SHOW_XNODE_TASKS_STMT:
7,232✔
2106
      code = collectMetaKeyFromShowXnodeTasks(pCxt, (SShowStmt*)pStmt);
7,232✔
2107
      break;
7,232✔
2108
    case QUERY_NODE_SHOW_XNODE_AGENTS_STMT:
4,313✔
2109
      code = collectMetaKeyFromShowXnodeAgents(pCxt, (SShowStmt*)pStmt);
4,313✔
2110
      break;
4,313✔
2111
    case QUERY_NODE_SHOW_XNODE_JOBS_STMT:
5,286✔
2112
      code = collectMetaKeyFromShowXnodeJobs(pCxt, (SShowStmt*)pStmt);
5,286✔
2113
      break;
5,286✔
2114
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
608✔
2115
      code = collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
608✔
2116
      break;
608✔
2117
    case QUERY_NODE_SHOW_CLUSTER_STMT:
3,227✔
2118
      code = collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
3,227✔
2119
      break;
3,227✔
2120
    case QUERY_NODE_SHOW_SECURITY_POLICIES_STMT:
525✔
2121
      code = collectMetaKeyFromShowSecurityPolicies(pCxt, (SShowStmt*)pStmt);
525✔
2122
      break;
525✔
2123
    case QUERY_NODE_SHOW_DATABASES_STMT:
201,862✔
2124
      code = collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
201,862✔
2125
      break;
201,862✔
2126
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
12,147✔
2127
      code = collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
12,147✔
2128
      break;
12,147✔
2129
    case QUERY_NODE_SHOW_INDEXES_STMT:
7,408✔
2130
      code = collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
7,408✔
2131
      break;
7,408✔
2132
    case QUERY_NODE_SHOW_STABLES_STMT:
243,278✔
2133
      code = collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
243,278✔
2134
      break;
243,278✔
2135
    case QUERY_NODE_SHOW_STREAMS_STMT:
126,580✔
2136
      code = collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
126,580✔
2137
      break;
126,580✔
2138
    case QUERY_NODE_SHOW_TABLES_STMT:
348,006✔
2139
    case QUERY_NODE_SHOW_VTABLES_STMT:
2140
      code = collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
348,006✔
2141
      break;
348,006✔
UNCOV
2142
    case QUERY_NODE_SHOW_FILESETS_STMT:
×
UNCOV
2143
      code = collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2144
      break;
×
2145
    case QUERY_NODE_SHOW_TAGS_STMT:
709,803✔
2146
      code = collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
709,803✔
2147
      break;
709,803✔
2148
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
6,853✔
2149
      code = collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
6,853✔
2150
      break;
6,853✔
2151
    case QUERY_NODE_SHOW_USERS_STMT:
110,991✔
2152
      code = collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
110,991✔
2153
      break;
110,991✔
2154
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
15,113✔
2155
      code = collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
15,113✔
2156
      break;
15,113✔
2157
    case QUERY_NODE_SHOW_ROLES_STMT:
1,312✔
2158
      code = collectMetaKeyFromShowRoles(pCxt, (SShowStmt*)pStmt);
1,312✔
2159
      break;
1,312✔
2160
    case QUERY_NODE_SHOW_LICENCES_STMT:
2,835✔
2161
      code = collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
2,835✔
2162
      break;
2,835✔
2163
    case QUERY_NODE_SHOW_VGROUPS_STMT:
249,325✔
2164
      code = collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
249,325✔
2165
      break;
249,325✔
2166
    case QUERY_NODE_SHOW_TOPICS_STMT:
20,350✔
2167
      code = collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
20,350✔
2168
      break;
20,350✔
2169
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
17,387✔
2170
      code = collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
17,387✔
2171
      break;
17,387✔
2172
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
2,413✔
2173
      code = collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
2,413✔
2174
      break;
2,413✔
2175
    case QUERY_NODE_SHOW_QUERIES_STMT:
3,403✔
2176
      code = collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
3,403✔
2177
      break;
3,403✔
2178
    case QUERY_NODE_SHOW_VARIABLES_STMT:
9,476✔
2179
      code = collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
9,476✔
2180
      break;
9,476✔
2181
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
40,045✔
2182
      code = collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
40,045✔
2183
      break;
40,045✔
2184
    case QUERY_NODE_SHOW_VNODES_STMT:
10,147✔
2185
      code = collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
10,147✔
2186
      break;
10,147✔
2187
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
4,013✔
2188
      code = collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
4,013✔
2189
      break;
4,013✔
2190
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
1,220✔
2191
      code = collectMetaKeyFromShowRolePrivileges(pCxt, (SShowStmt*)pStmt);
1,220✔
2192
      break;
1,220✔
UNCOV
2193
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
UNCOV
2194
      code = collectMetaKeyFromShowRoleColPrivileges(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2195
      break;
×
2196
    case QUERY_NODE_SHOW_VIEWS_STMT:
15,514✔
2197
      code = collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
15,514✔
2198
      break;
15,514✔
2199
    case QUERY_NODE_SHOW_COMPACTS_STMT:
748,600✔
2200
      code = collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
748,600✔
2201
      break;
748,600✔
2202
    case QUERY_NODE_SHOW_SCANS_STMT:
2,420✔
2203
      code = collectMetaKeyFromShowScans(pCxt, (SShowStmt*)pStmt);
2,420✔
2204
      break;
2,420✔
2205
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
34,425✔
2206
      code = collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
34,425✔
2207
      break;
34,425✔
2208
    case QUERY_NODE_SHOW_SCAN_DETAILS_STMT:
1,870✔
2209
      code = collectMetaKeyFromShowScanDetails(pCxt, (SShowStmt*)pStmt);
1,870✔
2210
      break;
1,870✔
2211
    case QUERY_NODE_SHOW_SSMIGRATES_STMT:
92,430✔
2212
      code = collectMetaKeyFromShowSsMigrates(pCxt, (SShowStmt*)pStmt);
92,430✔
2213
      break;
92,430✔
2214
    case QUERY_NODE_SHOW_TOKENS_STMT:
1,938✔
2215
      code = collectMetaKeyFromShowTokens(pCxt, (SShowStmt*)pStmt);
1,938✔
2216
      break;
1,938✔
2217
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
316✔
2218
      code = collectMetaKeyFromShowTransactionDetails(pCxt, (SShowStmt*)pStmt);
316✔
2219
      break;
316✔
2220
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
1,288✔
2221
      code = collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
1,288✔
2222
      break;
1,288✔
2223
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
1,288✔
2224
      code = collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
1,288✔
2225
      break;
1,288✔
2226
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
1,483✔
2227
      code = collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
1,483✔
2228
      break;
1,483✔
2229
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
193✔
2230
      code = collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
193✔
2231
      break;
193✔
2232
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
815✔
2233
      code = collectMetaKeyFromShowEncryptAlgorithms(pCxt, (SShowStmt*)pStmt);
815✔
2234
      break;
815✔
UNCOV
2235
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
UNCOV
2236
      code = collectMetaKeyFromShowEncryptStatus(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2237
      break;
×
2238
    case QUERY_NODE_SHOW_MOUNTS_STMT:
1,344✔
2239
      code = collectMetaKeyFromShowMounts(pCxt, (SShowStmt*)pStmt);
1,344✔
2240
      break;
1,344✔
2241
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
74,049✔
2242
      code = collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
74,049✔
2243
      break;
74,049✔
2244
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
103,836✔
2245
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
2246
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
2247
      code = collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
103,836✔
2248
      break;
103,836✔
2249
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
8,844✔
2250
      code = collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
8,844✔
2251
      break;
8,844✔
2252
    case QUERY_NODE_SHOW_CREATE_RSMA_STMT:
3,490✔
2253
      code = collectMetaKeyFromShowCreateRsma(pCxt, (SShowCreateRsmaStmt*)pStmt);
3,490✔
2254
      break;
3,490✔
2255
    case QUERY_NODE_SHOW_APPS_STMT:
1,963✔
2256
      code = collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
1,963✔
2257
      break;
1,963✔
2258
    case QUERY_NODE_SHOW_INSTANCES_STMT:
784✔
2259
      code = collectMetaKeyFromShowInstances(pCxt, (SShowStmt*)pStmt);
784✔
2260
      break;
784✔
2261
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
579,021✔
2262
      code = collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
579,021✔
2263
      break;
579,021✔
2264
    case QUERY_NODE_SHOW_USAGE_STMT:
364✔
2265
      code = collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
364✔
2266
      break;
364✔
2267
    case QUERY_NODE_DELETE_STMT:
1,967,887✔
2268
      code = collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
1,967,887✔
2269
      break;
1,967,887✔
2270
    case QUERY_NODE_INSERT_STMT:
517,640✔
2271
      code = collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
517,640✔
2272
      break;
517,640✔
2273
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
3,835✔
2274
      code = collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
3,835✔
2275
      break;
3,835✔
2276
    case QUERY_NODE_SHOW_VALIDATE_VTABLE_STMT:
3,864✔
2277
      code = collectMetaKeyFromShowValidateVtable(pCxt, (SShowValidateVirtualTable*)pStmt);
3,864✔
2278
      break;
3,864✔
2279
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
29,595✔
2280
      code = collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
29,595✔
2281
      break;
29,595✔
2282
    case QUERY_NODE_CREATE_VIEW_STMT:
229,915✔
2283
      code = collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
229,915✔
2284
      break;
229,915✔
2285
    case QUERY_NODE_DROP_VIEW_STMT:
172,154✔
2286
      code = collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
172,154✔
2287
      break;
172,154✔
2288
    case QUERY_NODE_CREATE_TSMA_STMT:
9,226✔
2289
      code = collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
9,226✔
2290
      break;
9,226✔
2291
    case QUERY_NODE_DROP_TSMA_STMT:
4,380✔
2292
      code = collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
4,380✔
2293
      break;
4,380✔
2294
    case QUERY_NODE_SHOW_TSMAS_STMT:
160✔
2295
      code = collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
160✔
2296
      break;
160✔
2297
    case QUERY_NODE_CREATE_RSMA_STMT:
119,780✔
2298
      code = collectMetaKeyFromCreateRsmaStmt(pCxt, (SCreateRsmaStmt*)pStmt);
119,780✔
2299
      break;
119,780✔
2300
    case QUERY_NODE_DROP_RSMA_STMT:
10,910✔
2301
      code = collectMetaKeyFromDropRsmaStmt(pCxt, (SDropRsmaStmt*)pStmt);
10,910✔
2302
      break;
10,910✔
2303
    case QUERY_NODE_ALTER_RSMA_STMT:
22,290✔
2304
      code = collectMetaKeyFromAlterRsmaStmt(pCxt, (SAlterRsmaStmt*)pStmt);
22,290✔
2305
      break;
22,290✔
2306
    case QUERY_NODE_SHOW_RSMAS_STMT:
14,700✔
2307
      code = collectMetaKeyFromShowRsmasStmt(pCxt, (SShowStmt*)pStmt);
14,700✔
2308
      break;
14,700✔
2309
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
41,171✔
2310
      code = collectMetaKeyFromShowRetentionsStmt(pCxt, (SShowStmt*)pStmt);
41,171✔
2311
      break;
41,171✔
2312
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
2,370✔
2313
      code = collectMetaKeyFromShowRetentionDetailsStmt(pCxt, (SShowStmt*)pStmt);
2,370✔
2314
      break;
2,370✔
2315
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
5,211✔
2316
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
2317
      code = collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
5,211✔
2318
      break;
5,211✔
2319
    case QUERY_NODE_CREATE_DATABASE_STMT:
1,684,169✔
2320
      code = collectMetaKeyFromCreateDatabase(pCxt, (SCreateDatabaseStmt*)pStmt);
1,684,169✔
2321
      break;
1,684,169✔
2322
    case QUERY_NODE_DROP_DATABASE_STMT:
1,432,449✔
2323
      code = collectMetaKeyFromDropDatabase(pCxt, (SDropDatabaseStmt*)pStmt);
1,432,449✔
2324
      break;
1,432,449✔
2325
    case QUERY_NODE_BALANCE_VGROUP_STMT:
12,895✔
2326
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE);
12,895✔
2327
      break;
12,895✔
2328
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
4,842✔
2329
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
2330
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE_LEADER);
4,842✔
2331
      break;
4,842✔
UNCOV
2332
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
UNCOV
2333
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_MERGE);
×
UNCOV
2334
      break;
×
2335
    case QUERY_NODE_SPLIT_VGROUP_STMT:
19,005✔
2336
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_SPLIT);
19,005✔
2337
      break;
19,005✔
2338
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
49,275✔
2339
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_REDISTRIBUTE);
49,275✔
2340
      break;
49,275✔
2341
    case QUERY_NODE_CREATE_FUNCTION_STMT:
15,856✔
2342
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_CREATE);
15,856✔
2343
      break;
15,856✔
2344
    case QUERY_NODE_DROP_FUNCTION_STMT:
9,175✔
2345
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_DROP);
9,175✔
2346
      break;
9,175✔
2347
    case QUERY_NODE_CREATE_MOUNT_STMT:
1,788✔
2348
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_CREATE);
1,788✔
2349
      break;
1,788✔
2350
    case QUERY_NODE_DROP_MOUNT_STMT:
592✔
2351
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_DROP);
592✔
2352
      break;
592✔
2353
    case QUERY_NODE_CREATE_ROLE_STMT:
4,893✔
2354
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_CREATE);
4,893✔
2355
      break;
4,893✔
2356
    case QUERY_NODE_DROP_ROLE_STMT:
1,760✔
2357
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_DROP);
1,760✔
2358
      break;
1,760✔
2359
    case QUERY_NODE_CREATE_USER_STMT:
116,442✔
2360
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_CREATE);
116,442✔
2361
      break;
116,442✔
2362
    case QUERY_NODE_ALTER_USER_STMT:
61,597✔
2363
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_ALTER);
61,597✔
2364
      break;
61,597✔
2365
    case QUERY_NODE_DROP_USER_STMT:
59,057✔
2366
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_DROP);
59,057✔
2367
      break;
59,057✔
2368
    case QUERY_NODE_ALTER_LOCAL_STMT:
571,844✔
2369
      return collectMetaKeyFromAlterLocalStmt(pCxt, (SAlterLocalStmt*)pStmt);
571,844✔
2370
    case QUERY_NODE_CREATE_DNODE_STMT:
320,375✔
2371
    case QUERY_NODE_CREATE_MNODE_STMT:
2372
    case QUERY_NODE_CREATE_QNODE_STMT:
2373
    case QUERY_NODE_CREATE_SNODE_STMT:
2374
    case QUERY_NODE_CREATE_BNODE_STMT:
2375
    case QUERY_NODE_CREATE_ANODE_STMT:
2376
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_CREATE);
320,375✔
2377
      break;
320,375✔
2378
    case QUERY_NODE_DROP_DNODE_STMT:
101,653✔
2379
    case QUERY_NODE_DROP_MNODE_STMT:
2380
    case QUERY_NODE_DROP_QNODE_STMT:
2381
    case QUERY_NODE_DROP_SNODE_STMT:
2382
    case QUERY_NODE_DROP_BNODE_STMT:
2383
    case QUERY_NODE_DROP_ANODE_STMT:
2384
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_DROP);
101,653✔
2385
      break;
101,653✔
2386
    case QUERY_NODE_KILL_TRANSACTION_STMT:
623✔
2387
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_TRANS_KILL);
623✔
2388
      break;
623✔
2389
    case QUERY_NODE_KILL_QUERY_STMT:
1,540✔
2390
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_QUERY_KILL);
1,540✔
2391
      break;
1,540✔
2392
    case QUERY_NODE_KILL_CONNECTION_STMT:
344✔
2393
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_CONN_KILL);
344✔
2394
      break;
344✔
2395
    default:
2,672,623✔
2396
      break;
2,672,623✔
2397
  }
2398

2399
  pCxt->pStmt = pOrigStmt;
1,075,268,847✔
2400

2401
  return code;
1,075,279,638✔
2402
}
2403

2404
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
482,634,635✔
2405
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
482,634,635✔
2406
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
482,634,936✔
2407
}
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