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

taosdata / TDengine / #4914

06 Jan 2026 01:30AM UTC coverage: 64.876% (-0.008%) from 64.884%
#4914

push

travis-ci

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

180 of 319 new or added lines in 14 files covered. (56.43%)

3475 existing lines in 124 files now uncovered.

194993 of 300563 relevant lines covered (64.88%)

116239151.85 hits per line

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

86.14
/source/libs/parser/src/parAstParser.c
1
/*
2
 * Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
3
 *
4
 * This program is free software: you can use, redistribute, and/or modify
5
 * it under the terms of the GNU Affero General Public License, version 3
6
 * or later ("AGPL"), as published by the Free Software Foundation.
7
 *
8
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10
 * FITNESS FOR A PARTICULAR PURPOSE.
11
 *
12
 * You should have received a copy of the GNU Affero General Public License
13
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14
 */
15

16
#include "functionMgt.h"
17
#include "os.h"
18
#include "parAst.h"
19
#include "parInt.h"
20
#include "parToken.h"
21
#include "systable.h"
22
#include "tglobal.h"
23

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

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

32
int32_t buildQueryAfterParse(SQuery** pQuery, SNode* pRootNode, int16_t placeholderNo, SArray** pPlaceholderValues) {
253,403,073✔
33
  *pQuery = NULL;
253,403,073✔
34
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
253,415,221✔
35
  if (NULL == *pQuery) {
253,434,705✔
36
    return code;
×
37
  }
38
  (*pQuery)->pRoot = pRootNode;
253,435,177✔
39
  (*pQuery)->placeholderNum = placeholderNo;
253,431,804✔
40
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
253,426,816✔
41
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
253,404,804✔
42

43
  return TSDB_CODE_SUCCESS;
253,408,591✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
261,571,940✔
47
  SAstCreateContext cxt;
260,913,374✔
48
  initAstCreateContext(pParseCxt, &cxt);
261,572,306✔
49
  void* pParser = ParseAlloc((FMalloc)taosMemMalloc);
261,556,609✔
50
  if (!pParser) return terrno;
261,554,437✔
51
  int32_t i = 0;
261,554,437✔
52
  while (1) {
2,147,483,647✔
53
    SToken t0 = {0};
2,147,483,647✔
54
    if (cxt.pQueryCxt->pSql[i] == 0) {
2,147,483,647✔
55
      Parse(pParser, 0, t0, &cxt);
159,507,869✔
56
      goto abort_parse;
159,647,293✔
57
    }
58
    if (!pParseCxt->hasDupQuoteChar) {
2,147,483,647✔
59
      char dupQuoteChar = 0;
2,147,483,647✔
60
      t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, &dupQuoteChar);
2,147,483,647✔
61
      if (dupQuoteChar) pParseCxt->hasDupQuoteChar = true;
2,147,483,647✔
62
    } else {
63
      t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, NULL);
603,663✔
64
    }
65
    t0.z = (char*)(cxt.pQueryCxt->pSql + i);
2,147,483,647✔
66
    i += t0.n;
2,147,483,647✔
67

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

96
abort_parse:
261,512,841✔
97
  ParseFree(pParser, (FFree)taosAutoMemoryFree);
261,540,786✔
98
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
261,565,085✔
99
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
253,424,951✔
100
    if (TSDB_CODE_SUCCESS != code) {
253,401,962✔
101
      return code;
×
102
    }
103
  }
104
  taosArrayDestroy(cxt.pPlaceholderValues);
261,542,096✔
105
  return cxt.errCode;
261,536,638✔
106
}
107

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

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

122
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt);
123
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt);
124
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt);
125

126
static EDealRes collectMetaKeyFromFunction(SCollectMetaKeyFromExprCxt* pCxt, SFunctionNode* pFunc) {
457,095,181✔
127
  switch (fmGetFuncType(pFunc->functionName)) {
457,095,181✔
128
    case FUNCTION_TYPE_LAST_ROW:
15,999,919✔
129
    case FUNCTION_TYPE_LAST:
130
      pCxt->hasLastRowOrLast = true;
15,999,919✔
131
      break;
15,999,948✔
132
    case FUNCTION_TYPE_UDF:
538,298✔
133
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
538,298✔
134
      break;
538,298✔
135
    default:
440,552,898✔
136
      break;
440,552,898✔
137
  }
138
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
457,091,144✔
139
}
140

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

150
static int32_t collectMetaKeyFromInsTagsImpl(SCollectMetaKeyCxt* pCxt, SName* pName) {
1,398,608✔
151
  if (0 == pName->type) {
1,398,608✔
152
    return TSDB_CODE_SUCCESS;
981,880✔
153
  }
154
  if (TSDB_DB_NAME_T == pName->type) {
417,459✔
155
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
123,894✔
156
  }
157
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
293,565✔
158
}
159

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

170
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
418,107,956✔
171
                                               EPrivType privType, EPrivObjType objType) {
172
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
418,107,956✔
173
  if (TSDB_CODE_SUCCESS == code) {
418,109,847✔
174
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, NULL, PRIV_DB_USE, PRIV_OBJ_DB,
418,110,593✔
175
                                  pCxt->pMetaCache);
176
  }
177
  if (TSDB_CODE_SUCCESS == code) {
418,114,432✔
178
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
418,114,432✔
179
  }
180
  if (TSDB_CODE_SUCCESS == code) {
418,114,397✔
181
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
418,114,397✔
182
  }
183
  if (TSDB_CODE_SUCCESS == code) {
418,114,345✔
184
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, privType, objType,
418,114,345✔
185
                                  pCxt->pMetaCache);
186
  }
187
#ifdef TD_ENTERPRISE
188
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
418,114,833✔
189
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, privType,
14,344✔
190
                                  objType, pCxt->pMetaCache);
191
  }
192
#endif
193
  if (TSDB_CODE_SUCCESS == code) {
418,111,849✔
194
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
418,111,849✔
195
  }
196
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
418,114,446✔
197
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
×
198
  }
199
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
418,110,096✔
200
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
2,604✔
201
  }
202
  if (TSDB_CODE_SUCCESS == code &&
418,110,469✔
203
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
418,110,469✔
204
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_TABLE_VC_COLS) ||
417,577,321✔
205
       0 == strcmp(pTable, TSDB_INS_DISK_USAGE) || 0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS)) &&
416,711,229✔
206
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
1,401,121✔
207
    code = collectMetaKeyFromInsTags(pCxt);
1,399,339✔
208
  }
209
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
418,111,799✔
210
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
218,205✔
211
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
218,205✔
212
  }
213
  return code;
418,109,590✔
214
}
215

216
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
415,984,019✔
217
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
415,984,019✔
218
                                                  PRIV_TBL_SELECT, PRIV_OBJ_TBL);
219
  if (TSDB_CODE_SUCCESS == pCxt->errCode && pCxt->pComCxt->collectVStbRefDbs) {
415,986,159✔
220
    pCxt->errCode = reserveVStbRefDbsInCache(pCxt->pComCxt->pParseCxt->acctId, pRealTable->table.dbName,
758,508,146✔
221
                                             pRealTable->table.tableName, pCxt->pComCxt->pMetaCache);
758,511,364✔
222
  }
223
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
415,989,060✔
224
}
225

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

231
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
243,979,425✔
232
  if (pOperator->opType != OP_TYPE_EQUAL) {
243,979,425✔
233
    return TSDB_CODE_SUCCESS;
216,785,564✔
234
  }
235

236
  SValueNode* pValueNode = NULL;
27,193,861✔
237
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
27,193,861✔
238
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
3,436,904✔
239
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
385,811✔
240
    pValueNode = (SValueNode*)pOperator->pRight;
370,680✔
241
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
26,823,181✔
242
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
67,276✔
243
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
846✔
244
    pValueNode = (SValueNode*)pOperator->pLeft;
×
245
  } else {
246
    return TSDB_CODE_SUCCESS;
26,823,181✔
247
  }
248

249
  *ppTableName = pValueNode->literal;
370,680✔
250

251
  return TSDB_CODE_SUCCESS;
370,680✔
252
}
253

254
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
347,303,488✔
255
  if (!pCxt->tbnameCollect) {
347,303,488✔
256
    return DEAL_RES_CONTINUE;
103,324,063✔
257
  }
258

259
  char*   pTableName = NULL;
243,979,796✔
260
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
243,978,915✔
261
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
243,979,887✔
262
  if (pTableName) {
243,979,887✔
263
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
370,680✔
264
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
370,680✔
265
                                                    pTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
266
  }
267

268
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
243,979,887✔
269
}
270

271
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
2,147,483,647✔
272
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
2,147,483,647✔
273
  switch (nodeType(pNode)) {
2,147,483,647✔
274
    case QUERY_NODE_FUNCTION:
457,096,391✔
275
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
457,096,391✔
276
    case QUERY_NODE_REAL_TABLE:
415,742,456✔
277
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
415,742,456✔
278
    case QUERY_NODE_TEMP_TABLE:
28,352,991✔
279
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
28,352,991✔
280
    case QUERY_NODE_OPERATOR:
347,305,787✔
281
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
347,305,787✔
282
    case QUERY_NODE_SET_OPERATOR:
19,979,712✔
283
      return collectMetaKeyFromSetOperator(pCxt->pComCxt, (SSetOperator*)pNode);
19,979,712✔
284
    case QUERY_NODE_SELECT_STMT:
178,745,064✔
285
      return collectMetaKeyFromSelect(pCxt->pComCxt, (SSelectStmt*)pNode);
178,745,064✔
286
    default:
1,721,586,356✔
287
      break;
1,721,586,356✔
288
  }
289
  return DEAL_RES_CONTINUE;
1,721,586,356✔
290
}
291

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

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

309
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
13,999,380✔
310
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
13,999,380✔
311
    return TSDB_CODE_SUCCESS;
416,192✔
312
  }
313
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
13,583,208✔
314
}
315

316
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
426,240,171✔
317
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
426,240,171✔
318
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
426,243,441✔
319
    cxt.tbnameCollect = true;
353,703,121✔
320
    cxt.pComCxt->collectVStbRefDbs = true;
353,703,121✔
321
  }
322
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
426,237,382✔
323
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
426,242,718✔
324
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
13,999,306✔
325
  }
326
  return cxt.errCode;
426,242,573✔
327
}
328

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

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

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

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

372
static int32_t collectMetaKeyFromCreateVTable(SCollectMetaKeyCxt* pCxt, SCreateVTableStmt* pStmt) {
120,918✔
373
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
120,918✔
374
  if (TSDB_CODE_SUCCESS == code) {
120,918✔
375
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
120,918✔
376
  }
377
  if (TSDB_CODE_SUCCESS == code) {
120,918✔
378
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
120,918✔
379
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
380
  }
381
  if (TSDB_CODE_SUCCESS == code) {
120,918✔
382
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE,
120,918✔
383
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
384
  }
385
  if (TSDB_CODE_SUCCESS == code) {
120,918✔
386
    SNode* pNode = NULL;
120,918✔
387
    FOREACH(pNode, pStmt->pCols) {
120,267,075✔
388
      SColumnDefNode* pCol = (SColumnDefNode*)pNode;
120,146,157✔
389
      if (NULL == pCol) {
120,146,157✔
390
        code = TSDB_CODE_PAR_INVALID_COLUMN;
×
391
        break;
×
392
      }
393
      SColumnOptions* pOptions = (SColumnOptions*)pCol->pOptions;
120,146,157✔
394
      if (pOptions && pOptions->hasRef) {
120,146,157✔
395
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
75,015,249✔
396
        if (TSDB_CODE_SUCCESS == code) {
75,015,249✔
397
          code =
398
              reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
75,015,249✔
399
        }
400
        if (TSDB_CODE_SUCCESS == code) {
75,015,249✔
401
          code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pOptions->refDb,
150,030,276✔
402
                                        pOptions->refTable, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
75,015,249✔
403
        }
404
        if (TSDB_CODE_SUCCESS != code) {
75,015,249✔
405
          break;
×
406
        }
407
      }
408
    }
409
  }
410
  return code;
120,918✔
411
}
412

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

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

450
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
29,665,323✔
451
  int32_t code = TSDB_CODE_SUCCESS;
29,665,323✔
452
  SNode*  pNode = NULL;
29,665,323✔
453
  FOREACH(pNode, pStmt->pSubTables) {
65,259,136✔
454
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
35,576,060✔
455
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
35,589,570✔
456
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
35,589,570✔
457
      if (TSDB_CODE_SUCCESS == code) {
35,592,097✔
458
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
35,592,185✔
459
                                       pCxt->pMetaCache);
460
      }
461
      if (TSDB_CODE_SUCCESS == code) {
35,591,781✔
462
        code =
463
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
35,591,781✔
464
      }
465
      if (TSDB_CODE_SUCCESS == code) {
35,600,387✔
466
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
35,600,387✔
467
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
468
      }
469
      if (TSDB_CODE_SUCCESS == code) {
35,599,717✔
470
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
35,599,717✔
471
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
472
      }
473
    } else {
474
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
475
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
476
      if (TSDB_CODE_SUCCESS == code) {
×
477
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
478
                                       pCxt->pMetaCache);
479
      }
480
      if (TSDB_CODE_SUCCESS == code) {
×
481
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
482
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
483
      }
484
      if (TSDB_CODE_SUCCESS == code) {
×
485
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
486
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
487
      }
488
    }
489

490
    if (TSDB_CODE_SUCCESS != code) {
35,593,813✔
491
      break;
×
492
    }
493
  }
494
  return code;
29,668,571✔
495
}
496

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

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

516
  return code;
1,294✔
517
}
518

519
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
1,971,391✔
520
  int32_t code = TSDB_CODE_SUCCESS;
1,971,391✔
521
  SNode*  pNode = NULL;
1,971,391✔
522
  FOREACH(pNode, pStmt->pTables) {
4,052,180✔
523
    SDropTableClause* pClause = (SDropTableClause*)pNode;
2,080,789✔
524
    if (pStmt->withOpt) {
2,080,789✔
525
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
135,593✔
526
      if (TSDB_CODE_SUCCESS == code) {
135,593✔
527
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
135,593✔
528
      }
529
      if (TSDB_CODE_SUCCESS == code) {
135,593✔
530
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
135,593✔
531
      }
532
    } else {
533
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,945,196✔
534
      if (TSDB_CODE_SUCCESS == code) {
1,945,196✔
535
        code =
536
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,945,196✔
537
      }
538
      if (TSDB_CODE_SUCCESS == code) {
1,945,196✔
539
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
3,885,686✔
540
                                      pClause->tableName, PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
1,945,196✔
541
      }
542
    }
543
    if (TSDB_CODE_SUCCESS == code) {
2,080,789✔
544
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE,
2,080,789✔
545
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
546
    }
547

548
    if (TSDB_CODE_SUCCESS != code) {
2,080,789✔
549
      break;
×
550
    }
551
  }
552
  return code;
1,971,391✔
553
}
554

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

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

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

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

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

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

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

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

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

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

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

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

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

808
  return code;
244,832✔
809
}
810

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1478
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
959,895✔
1479
  int32_t code = TSDB_CODE_SUCCESS;
959,895✔
1480

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

1529
  return code;
959,427✔
1530
}
1531

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

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

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

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

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

1560
  return code;
17,293✔
1561
}
1562

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

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

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

1627
  return code;
773✔
1628
}
1629

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

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

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

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

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

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

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

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

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

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

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

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

1749
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
357,291,118✔
1750
  pCxt->pStmt = pStmt;
357,291,118✔
1751
  switch (nodeType(pStmt)) {
357,300,508✔
1752
    case QUERY_NODE_SET_OPERATOR:
11,526,948✔
1753
      return collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
11,526,948✔
1754
    case QUERY_NODE_SELECT_STMT:
247,471,237✔
1755
      return collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
247,471,237✔
1756
    case QUERY_NODE_ALTER_DATABASE_STMT:
174,352✔
1757
      return collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
174,352✔
1758
    case QUERY_NODE_FLUSH_DATABASE_STMT:
1,721,338✔
1759
      return collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
1,721,338✔
1760
    case QUERY_NODE_CREATE_TABLE_STMT:
19,688,850✔
1761
      return collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
19,688,850✔
1762
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
120,918✔
1763
      return collectMetaKeyFromCreateVTable(pCxt, (SCreateVTableStmt*)pStmt);
120,918✔
1764
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
190,456✔
1765
      return collectMetaKeyFromCreateVSubTable(pCxt, (SCreateVSubTableStmt*)pStmt);
190,456✔
1766
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
29,641,166✔
1767
      return collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
29,641,166✔
1768
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
1,294✔
1769
      return collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
1,294✔
1770
    case QUERY_NODE_DROP_TABLE_STMT:
1,971,391✔
1771
      return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
1,971,391✔
1772
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
76,488✔
1773
      return collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
76,488✔
1774
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
68,895✔
1775
      return collectMetaKeyFromDropVtable(pCxt, (SDropVirtualTableStmt*)pStmt);
68,895✔
1776
    case QUERY_NODE_ALTER_TABLE_STMT:
17,544,829✔
1777
      return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
17,544,829✔
1778
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
476,751✔
1779
      return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
476,751✔
1780
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
362,196✔
1781
      return collectMetaKeyFromAlterVtable(pCxt, (SAlterTableStmt*)pStmt);
362,196✔
1782
    case QUERY_NODE_USE_DATABASE_STMT:
1,947,128✔
1783
      return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
1,947,128✔
1784
    case QUERY_NODE_CREATE_INDEX_STMT:
11,234✔
1785
      return collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
11,234✔
1786
    case QUERY_NODE_DROP_INDEX_STMT:
3,138✔
1787
      return collectMetaKeyFromDropIndex(pCxt, (SDropIndexStmt*)pStmt);
3,138✔
1788
    case QUERY_NODE_CREATE_TOPIC_STMT:
160,511✔
1789
      return collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
160,511✔
1790
    case QUERY_NODE_EXPLAIN_STMT:
12,084,483✔
1791
      return collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
12,084,483✔
1792
    case QUERY_NODE_DESCRIBE_STMT:
489,898✔
1793
      return collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
489,898✔
1794
    case QUERY_NODE_COMPACT_DATABASE_STMT:
25,920✔
1795
      return collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
25,920✔
1796
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
9,230✔
1797
      return collectMetaKeyFromRollupDatabase(pCxt, (SRollupDatabaseStmt*)pStmt);
9,230✔
1798
    case QUERY_NODE_SCAN_DATABASE_STMT:
88✔
1799
      return collectMetaKeyFromScanDatabase(pCxt, (SScanDatabaseStmt*)pStmt);
88✔
1800
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
UNCOV
1801
      return collectMetaKeyFromSsmigrateDatabase(pCxt, (SSsMigrateDatabaseStmt*)pStmt);
×
1802
    case QUERY_NODE_TRIM_DATABASE_STMT:
7,818✔
1803
      return collectMetaKeyFromTrimDatabase(pCxt, (STrimDatabaseStmt*)pStmt);
7,818✔
1804
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
3,545✔
1805
      return collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt);
3,545✔
1806
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
4,260✔
1807
      return collectMetaKeyFromRollupVgroups(pCxt, (SRollupVgroupsStmt*)pStmt);
4,260✔
1808
    case QUERY_NODE_SCAN_VGROUPS_STMT:
220✔
1809
      return collectMetaKeyFromScanVgroups(pCxt, (SScanVgroupsStmt*)pStmt);
220✔
1810
    case QUERY_NODE_CREATE_STREAM_STMT:
244,832✔
1811
      return collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
244,832✔
1812
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
10,231✔
1813
      return collectMetaKeyFromRecalculateStream(pCxt, (SRecalcStreamStmt*)pStmt);
10,231✔
1814
    case QUERY_NODE_GRANT_STMT:
557,359✔
1815
      return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
557,359✔
1816
    case QUERY_NODE_REVOKE_STMT:
402,536✔
1817
      return collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
402,536✔
1818
    case QUERY_NODE_SHOW_DNODES_STMT:
19,124✔
1819
      return collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
19,124✔
1820
    case QUERY_NODE_SHOW_MNODES_STMT:
278,454✔
1821
      return collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
278,454✔
1822
    case QUERY_NODE_SHOW_MODULES_STMT:
×
UNCOV
1823
      return collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
1824
    case QUERY_NODE_SHOW_QNODES_STMT:
1,264✔
1825
      return collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
1,264✔
1826
    case QUERY_NODE_SHOW_SNODES_STMT:
53,583✔
1827
      return collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
53,583✔
1828
    case QUERY_NODE_SHOW_ANODES_STMT:
158✔
1829
      return collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
158✔
1830
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
UNCOV
1831
      return collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
1832
    case QUERY_NODE_SHOW_BNODES_STMT:
51,649✔
1833
      return collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
51,649✔
1834
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
UNCOV
1835
      return collectMetaKeyFromShowBackupNodes(pCxt, (SShowStmt*)pStmt);
×
1836
    case QUERY_NODE_SHOW_XNODES_STMT:
373✔
1837
      return collectMetaKeyFromShowXnodes(pCxt, (SShowStmt*)pStmt);
373✔
1838
    case QUERY_NODE_SHOW_XNODE_TASKS_STMT:
373✔
1839
      return collectMetaKeyFromShowXnodeTasks(pCxt, (SShowStmt*)pStmt);
373✔
1840
    case QUERY_NODE_SHOW_XNODE_AGENTS_STMT:
373✔
1841
      return collectMetaKeyFromShowXnodeAgents(pCxt, (SShowStmt*)pStmt);
373✔
1842
    case QUERY_NODE_SHOW_XNODE_JOBS_STMT:
373✔
1843
      return collectMetaKeyFromShowXnodeJobs(pCxt, (SShowStmt*)pStmt);
373✔
1844
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
320✔
1845
      return collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
320✔
1846
    case QUERY_NODE_SHOW_CLUSTER_STMT:
1,580✔
1847
      return collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
1,580✔
1848
    case QUERY_NODE_SHOW_DATABASES_STMT:
153,851✔
1849
      return collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
153,851✔
1850
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
36,663✔
1851
      return collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
36,663✔
1852
    case QUERY_NODE_SHOW_INDEXES_STMT:
4,108✔
1853
      return collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
4,108✔
1854
    case QUERY_NODE_SHOW_STABLES_STMT:
200,891✔
1855
      return collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
200,891✔
1856
    case QUERY_NODE_SHOW_STREAMS_STMT:
98,947✔
1857
      return collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
98,947✔
1858
    case QUERY_NODE_SHOW_TABLES_STMT:
299,756✔
1859
    case QUERY_NODE_SHOW_VTABLES_STMT:
1860
      return collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
299,756✔
1861
    case QUERY_NODE_SHOW_FILESETS_STMT:
×
UNCOV
1862
      return collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt);
×
1863
    case QUERY_NODE_SHOW_TAGS_STMT:
635,454✔
1864
      return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
635,454✔
1865
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
4,638✔
1866
      return collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
4,638✔
1867
    case QUERY_NODE_SHOW_USERS_STMT:
3,700✔
1868
      return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
3,700✔
1869
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
UNCOV
1870
      return collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
1871
    case QUERY_NODE_SHOW_ROLES_STMT:
156✔
1872
      return collectMetaKeyFromShowRoles(pCxt, (SShowStmt*)pStmt);
156✔
1873
    case QUERY_NODE_SHOW_LICENCES_STMT:
1,984✔
1874
      return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
1,984✔
1875
    case QUERY_NODE_SHOW_VGROUPS_STMT:
248,076✔
1876
      return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
248,076✔
1877
    case QUERY_NODE_SHOW_TOPICS_STMT:
16,621✔
1878
      return collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
16,621✔
1879
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
14,859✔
1880
      return collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
14,859✔
1881
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
1,916✔
1882
      return collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
1,916✔
1883
    case QUERY_NODE_SHOW_QUERIES_STMT:
1,264✔
1884
      return collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
1,264✔
1885
    case QUERY_NODE_SHOW_VARIABLES_STMT:
7,546✔
1886
      return collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
7,546✔
1887
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
35,633✔
1888
      return collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
35,633✔
1889
    case QUERY_NODE_SHOW_VNODES_STMT:
3,859✔
1890
      return collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
3,859✔
1891
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
2,824✔
1892
      return collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
2,824✔
1893
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
780✔
1894
      return collectMetaKeyFromShowRolePrivileges(pCxt, (SShowStmt*)pStmt);
780✔
1895
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
UNCOV
1896
      return collectMetaKeyFromShowRoleColPrivileges(pCxt, (SShowStmt*)pStmt);
×
1897
    case QUERY_NODE_SHOW_VIEWS_STMT:
1,918✔
1898
      return collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
1,918✔
1899
    case QUERY_NODE_SHOW_COMPACTS_STMT:
340,247✔
1900
      return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
340,247✔
1901
    case QUERY_NODE_SHOW_SCANS_STMT:
1,980✔
1902
      return collectMetaKeyFromShowScans(pCxt, (SShowStmt*)pStmt);
1,980✔
1903
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
29,936✔
1904
      return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
29,936✔
1905
    case QUERY_NODE_SHOW_SCAN_DETAILS_STMT:
1,760✔
1906
      return collectMetaKeyFromShowScanDetails(pCxt, (SShowStmt*)pStmt);
1,760✔
1907
    case QUERY_NODE_SHOW_SSMIGRATES_STMT:
×
1908
      return collectMetaKeyFromShowSsMigrates(pCxt, (SShowStmt*)pStmt);
×
1909
    case QUERY_NODE_SHOW_TOKENS_STMT:
×
UNCOV
1910
      return collectMetaKeyFromShowTokens(pCxt, (SShowStmt*)pStmt);
×
1911
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
264✔
1912
      return collectMetaKeyFromShowTransactionDetails(pCxt, (SShowStmt*)pStmt);
264✔
1913
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
1,106✔
1914
      return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
1,106✔
1915
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
1,106✔
1916
      return collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
1,106✔
1917
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
1,264✔
1918
      return collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
1,264✔
1919
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
158✔
1920
      return collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
158✔
1921
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
1922
      return collectMetaKeyFromShowEncryptAlgorithms(pCxt, (SShowStmt*)pStmt);
×
1923
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
UNCOV
1924
      return collectMetaKeyFromShowEncryptStatus(pCxt, (SShowStmt*)pStmt);
×
1925
    case QUERY_NODE_SHOW_MOUNTS_STMT:
5,376✔
1926
      return collectMetaKeyFromShowMounts(pCxt, (SShowStmt*)pStmt);
5,376✔
1927
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
53,822✔
1928
      return collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
53,822✔
1929
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
74,166✔
1930
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
1931
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
1932
      return collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
74,166✔
1933
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
UNCOV
1934
      return collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
×
1935
    case QUERY_NODE_SHOW_CREATE_RSMA_STMT:
2,130✔
1936
      return collectMetaKeyFromShowCreateRsma(pCxt, (SShowCreateRsmaStmt*)pStmt);
2,130✔
1937
    case QUERY_NODE_SHOW_APPS_STMT:
1,264✔
1938
      return collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
1,264✔
1939
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
UNCOV
1940
      return collectMetaKeyFromShowInstances(pCxt, (SShowStmt*)pStmt);
×
1941
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
376,506✔
1942
      return collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
376,506✔
1943
    case QUERY_NODE_SHOW_USAGE_STMT:
286✔
1944
      return collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
286✔
1945
    case QUERY_NODE_DELETE_STMT:
1,663,998✔
1946
      return collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
1,663,998✔
1947
    case QUERY_NODE_INSERT_STMT:
77,655✔
1948
      return collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
77,655✔
1949
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
2,892✔
1950
      return collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
2,892✔
1951
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
21,577✔
1952
      return collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
21,577✔
1953
    case QUERY_NODE_CREATE_VIEW_STMT:
17,293✔
1954
      return collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
17,293✔
1955
    case QUERY_NODE_DROP_VIEW_STMT:
×
UNCOV
1956
      return collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
×
1957
    case QUERY_NODE_CREATE_TSMA_STMT:
773✔
1958
      return collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
773✔
1959
    case QUERY_NODE_DROP_TSMA_STMT:
×
1960
      return collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
×
1961
    case QUERY_NODE_SHOW_TSMAS_STMT:
×
UNCOV
1962
      return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
×
1963
    case QUERY_NODE_CREATE_RSMA_STMT:
105,790✔
1964
      return collectMetaKeyFromCreateRsmaStmt(pCxt, (SCreateRsmaStmt*)pStmt);
105,790✔
1965
    case QUERY_NODE_DROP_RSMA_STMT:
2,130✔
1966
      return collectMetaKeyFromDropRsmaStmt(pCxt, (SDropRsmaStmt*)pStmt);
2,130✔
1967
    case QUERY_NODE_ALTER_RSMA_STMT:
19,170✔
1968
      return collectMetaKeyFromAlterRsmaStmt(pCxt, (SAlterRsmaStmt*)pStmt);
19,170✔
1969
    case QUERY_NODE_SHOW_RSMAS_STMT:
12,780✔
1970
      return collectMetaKeyFromShowRsmasStmt(pCxt, (SShowStmt*)pStmt);
12,780✔
1971
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
38,340✔
1972
      return collectMetaKeyFromShowRetentionsStmt(pCxt, (SShowStmt*)pStmt);
38,340✔
1973
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
2,130✔
1974
      return collectMetaKeyFromShowRetentionDetailsStmt(pCxt, (SShowStmt*)pStmt);
2,130✔
1975
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
4,662✔
1976
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
1977
      return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
4,662✔
1978
    case QUERY_NODE_CREATE_DATABASE_STMT:
1,257,621✔
1979
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_DB_CREATE);
1,257,621✔
1980
    case QUERY_NODE_DROP_DATABASE_STMT:
1,038,875✔
1981
      return collectMetaKeyFromDropDatabase(pCxt, (SDropDatabaseStmt*)pStmt);
1,038,875✔
1982
    case QUERY_NODE_BALANCE_VGROUP_STMT:
11,185✔
1983
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE);
11,185✔
1984
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
2,114✔
1985
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
1986
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE_LEADER);
2,114✔
1987
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
UNCOV
1988
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_MERGE);
×
1989
    case QUERY_NODE_SPLIT_VGROUP_STMT:
16,345✔
1990
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_SPLIT);
16,345✔
1991
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
43,390✔
1992
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_REDISTRIBUTE);
43,390✔
1993
    case QUERY_NODE_CREATE_FUNCTION_STMT:
46,214✔
1994
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_CREATE);
46,214✔
1995
    case QUERY_NODE_DROP_FUNCTION_STMT:
35,931✔
1996
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_DROP);
35,931✔
1997
    case QUERY_NODE_CREATE_MOUNT_STMT:
1,232✔
1998
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_CREATE);
1,232✔
1999
    case QUERY_NODE_DROP_MOUNT_STMT:
448✔
2000
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_DROP);
448✔
2001
    case QUERY_NODE_CREATE_ROLE_STMT:
156✔
2002
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_CREATE);
156✔
2003
    case QUERY_NODE_DROP_ROLE_STMT:
×
UNCOV
2004
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_DROP);
×
2005
    case QUERY_NODE_CREATE_USER_STMT:
47,802✔
2006
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_CREATE);
47,802✔
2007
    case QUERY_NODE_DROP_USER_STMT:
20,716✔
2008
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_DROP);
20,716✔
2009
    case QUERY_NODE_CREATE_DNODE_STMT:
253,599✔
2010
    case QUERY_NODE_CREATE_MNODE_STMT:
2011
    case QUERY_NODE_CREATE_QNODE_STMT:
2012
    case QUERY_NODE_CREATE_SNODE_STMT:
2013
    case QUERY_NODE_CREATE_BNODE_STMT:
2014
    case QUERY_NODE_CREATE_ANODE_STMT:
2015
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_CREATE);
253,599✔
2016
    case QUERY_NODE_DROP_DNODE_STMT:
86,121✔
2017
    case QUERY_NODE_DROP_MNODE_STMT:
2018
    case QUERY_NODE_DROP_QNODE_STMT:
2019
    case QUERY_NODE_DROP_SNODE_STMT:
2020
    case QUERY_NODE_DROP_BNODE_STMT:
2021
    case QUERY_NODE_DROP_ANODE_STMT:
2022
      return collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_DROP);
86,121✔
2023
    default:
2,380,643✔
2024
      break;
2,380,643✔
2025
  }
2026
  return TSDB_CODE_SUCCESS;
2,380,643✔
2027
}
2028

2029
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
253,415,702✔
2030
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
253,415,702✔
2031
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
253,414,573✔
2032
}
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