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

taosdata / TDengine / #4917

07 Jan 2026 03:52PM UTC coverage: 65.42% (+0.02%) from 65.402%
#4917

push

travis-ci

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

31 of 34 new or added lines in 2 files covered. (91.18%)

819 existing lines in 129 files now uncovered.

202679 of 309814 relevant lines covered (65.42%)

116724351.99 hits per line

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

86.15
/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) {
258,943,175✔
33
  *pQuery = NULL;
258,943,175✔
34
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
258,945,328✔
35
  if (NULL == *pQuery) {
258,952,811✔
36
    return code;
×
37
  }
38
  (*pQuery)->pRoot = pRootNode;
258,953,229✔
39
  (*pQuery)->placeholderNum = placeholderNo;
258,951,328✔
40
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
258,951,266✔
41
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
258,935,170✔
42

43
  return TSDB_CODE_SUCCESS;
258,946,922✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
267,489,247✔
47
  SAstCreateContext cxt;
266,800,397✔
48
  initAstCreateContext(pParseCxt, &cxt);
267,490,631✔
49
  void* pParser = ParseAlloc((FMalloc)taosMemMalloc);
267,480,322✔
50
  if (!pParser) return terrno;
267,487,525✔
51
  int32_t i = 0;
267,487,525✔
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,223,624✔
56
      goto abort_parse;
159,399,528✔
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);
604,458✔
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: {
100,043,399✔
74
        Parse(pParser, 0, t0, &cxt);
100,043,399✔
75
        goto abort_parse;
100,043,399✔
76
      }
77
      case TK_NK_ILLEGAL: {
198,787✔
78
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
198,787✔
79
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
198,787✔
80
        goto abort_parse;
198,787✔
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;
8,028,118✔
92
        }
93
    }
94
  }
95

96
abort_parse:
267,468,784✔
97
  ParseFree(pParser, (FFree)taosAutoMemoryFree);
267,483,489✔
98
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
267,483,528✔
99
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
258,942,753✔
100
    if (TSDB_CODE_SUCCESS != code) {
258,932,209✔
101
      return code;
×
102
    }
103
  }
104
  taosArrayDestroy(cxt.pPlaceholderValues);
267,472,984✔
105
  return cxt.errCode;
267,480,657✔
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) {
478,617,675✔
127
  switch (fmGetFuncType(pFunc->functionName)) {
478,617,675✔
128
    case FUNCTION_TYPE_LAST_ROW:
16,913,548✔
129
    case FUNCTION_TYPE_LAST:
130
      pCxt->hasLastRowOrLast = true;
16,913,548✔
131
      break;
16,913,548✔
132
    case FUNCTION_TYPE_UDF:
551,033✔
133
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
551,033✔
134
      break;
551,033✔
135
    default:
461,149,561✔
136
      break;
461,149,561✔
137
  }
138
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
478,614,142✔
139
}
140

141
static bool needGetTableIndex(SNode* pStmt) {
440,622,658✔
142
  return false;
440,622,658✔
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,434,249✔
151
  if (0 == pName->type) {
1,434,249✔
152
    return TSDB_CODE_SUCCESS;
997,314✔
153
  }
154
  if (TSDB_DB_NAME_T == pName->type) {
436,935✔
155
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
135,705✔
156
  }
157
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
301,230✔
158
}
159

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

170
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
440,619,690✔
171
                                               EPrivType privType, EPrivObjType objType) {
172
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
440,619,690✔
173
  if (TSDB_CODE_SUCCESS == code) {
440,622,293✔
174
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, NULL, PRIV_DB_USE, PRIV_OBJ_DB,
440,622,295✔
175
                                  pCxt->pMetaCache);
176
  }
177
  if (TSDB_CODE_SUCCESS == code) {
440,622,309✔
178
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
440,622,309✔
179
  }
180
  if (TSDB_CODE_SUCCESS == code) {
440,624,166✔
181
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
440,624,166✔
182
  }
183
  if (TSDB_CODE_SUCCESS == code) {
440,624,215✔
184
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, privType, objType,
440,624,215✔
185
                                  pCxt->pMetaCache);
186
  }
187
#ifdef TD_ENTERPRISE
188
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
440,624,207✔
189
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, privType,
18,245✔
190
                                  objType, pCxt->pMetaCache);
191
  }
192
#endif
193
  if (TSDB_CODE_SUCCESS == code) {
440,621,491✔
194
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
440,621,491✔
195
  }
196
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
440,624,211✔
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))) {
440,622,108✔
200
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
2,777✔
201
  }
202
  if (TSDB_CODE_SUCCESS == code &&
440,622,170✔
203
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
440,622,170✔
204
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_TABLE_VC_COLS) ||
440,062,925✔
205
       0 == strcmp(pTable, TSDB_INS_DISK_USAGE) || 0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS)) &&
439,186,337✔
206
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
1,440,533✔
207
    code = collectMetaKeyFromInsTags(pCxt);
1,434,249✔
208
  }
209
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
440,619,430✔
210
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
228,448✔
211
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
228,448✔
212
  }
213
  return code;
440,621,469✔
214
}
215

216
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
438,374,319✔
217
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
438,374,319✔
218
                                                  PRIV_TBL_SELECT, PRIV_OBJ_TBL);
219
  if (TSDB_CODE_SUCCESS == pCxt->errCode && pCxt->pComCxt->collectVStbRefDbs) {
438,376,154✔
220
    pCxt->errCode = reserveVStbRefDbsInCache(pCxt->pComCxt->pParseCxt->acctId, pRealTable->table.dbName,
800,611,333✔
221
                                             pRealTable->table.tableName, pCxt->pComCxt->pMetaCache);
800,609,506✔
222
  }
223
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
438,377,754✔
224
}
225

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

231
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
253,844,525✔
232
  if (pOperator->opType != OP_TYPE_EQUAL) {
253,844,525✔
233
    return TSDB_CODE_SUCCESS;
225,231,617✔
234
  }
235

236
  SValueNode* pValueNode = NULL;
28,612,426✔
237
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
28,612,426✔
238
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
3,533,415✔
239
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
372,104✔
240
    pValueNode = (SValueNode*)pOperator->pRight;
356,144✔
241
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
28,256,243✔
242
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
70,239✔
243
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
864✔
244
    pValueNode = (SValueNode*)pOperator->pLeft;
×
245
  } else {
246
    return TSDB_CODE_SUCCESS;
28,256,282✔
247
  }
248

249
  *ppTableName = pValueNode->literal;
356,144✔
250

251
  return TSDB_CODE_SUCCESS;
356,144✔
252
}
253

254
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
361,498,617✔
255
  if (!pCxt->tbnameCollect) {
361,498,617✔
256
    return DEAL_RES_CONTINUE;
107,653,225✔
257
  }
258

259
  char*   pTableName = NULL;
253,846,356✔
260
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
253,845,874✔
261
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
253,843,520✔
262
  if (pTableName) {
253,843,520✔
263
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
356,144✔
264
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
356,144✔
265
                                                    pTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL);
266
  }
267

268
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
253,843,520✔
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:
478,618,950✔
275
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
478,618,950✔
276
    case QUERY_NODE_REAL_TABLE:
438,126,671✔
277
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
438,126,671✔
278
    case QUERY_NODE_TEMP_TABLE:
28,908,119✔
279
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
28,908,119✔
280
    case QUERY_NODE_OPERATOR:
361,499,540✔
281
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
361,499,540✔
282
    case QUERY_NODE_SET_OPERATOR:
21,295,440✔
283
      return collectMetaKeyFromSetOperator(pCxt->pComCxt, (SSetOperator*)pNode);
21,295,440✔
284
    case QUERY_NODE_SELECT_STMT:
190,644,572✔
285
      return collectMetaKeyFromQuery(pCxt->pComCxt, pNode);
190,644,572✔
286
    default:
1,814,272,384✔
287
      break;
1,814,272,384✔
288
  }
289
  return DEAL_RES_CONTINUE;
1,814,272,384✔
290
}
291

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

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

309
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
14,761,182✔
310
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
14,761,182✔
311
    return TSDB_CODE_SUCCESS;
432,424✔
312
  }
313
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
14,328,744✔
314
}
315

316
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
449,008,407✔
317
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
449,008,407✔
318
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
449,009,519✔
319
    cxt.tbnameCollect = true;
373,063,907✔
320
    cxt.pComCxt->collectVStbRefDbs = true;
373,063,907✔
321
  }
322
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
449,008,729✔
323
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
449,007,442✔
324
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
14,761,192✔
325
  }
326
  return cxt.errCode;
449,007,406✔
327
}
328

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

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

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

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

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

413
static int32_t collectMetaKeyFromCreateVSubTable(SCollectMetaKeyCxt* pCxt, SCreateVSubTableStmt* pStmt) {
206,875✔
414
  int32_t code = TSDB_CODE_SUCCESS;
206,875✔
415
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
206,875✔
416
  // super table's meta
417
  PAR_ERR_RET(
206,875✔
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));
206,875✔
421
  // check db's write auth
422
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
206,875✔
423
                                     PRIV_OBJ_DB, pCxt->pMetaCache));
424
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
206,875✔
425
                                     PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache));
426
  // check org table's read auth
427
  SNode*     pNode = NULL;
206,875✔
428
  SNodeList* pTmpNodeList = pStmt->pSpecificColRefs ? pStmt->pSpecificColRefs : pStmt->pColRefs;
206,875✔
429
  if (NULL == pTmpNodeList) {
206,875✔
430
    // no column reference
431
    return TSDB_CODE_SUCCESS;
4,849✔
432
  }
433

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

450
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
30,415,557✔
451
  int32_t code = TSDB_CODE_SUCCESS;
30,415,557✔
452
  SNode*  pNode = NULL;
30,415,557✔
453
  FOREACH(pNode, pStmt->pSubTables) {
66,874,961✔
454
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
36,450,699✔
455
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
36,457,862✔
456
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
36,457,862✔
457
      if (TSDB_CODE_SUCCESS == code) {
36,454,836✔
458
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
36,455,229✔
459
                                       pCxt->pMetaCache);
460
      }
461
      if (TSDB_CODE_SUCCESS == code) {
36,453,122✔
462
        code =
463
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
36,453,122✔
464
      }
465
      if (TSDB_CODE_SUCCESS == code) {
36,458,582✔
466
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
36,458,582✔
467
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
468
      }
469
      if (TSDB_CODE_SUCCESS == code) {
36,453,461✔
470
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
36,453,461✔
471
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
472
      }
473
    } else {
474
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
475
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
476
      if (TSDB_CODE_SUCCESS == code) {
×
477
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
478
                                       pCxt->pMetaCache);
479
      }
480
      if (TSDB_CODE_SUCCESS == code) {
×
481
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
482
                                      PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
483
      }
484
      if (TSDB_CODE_SUCCESS == code) {
×
485
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
486
                                      PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
487
      }
488
    }
489

490
    if (TSDB_CODE_SUCCESS != code) {
36,459,404✔
491
      break;
×
492
    }
493
  }
494
  return code;
30,422,417✔
495
}
496

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

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

516
  return code;
1,288✔
517
}
518

519
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
2,012,778✔
520
  int32_t code = TSDB_CODE_SUCCESS;
2,012,778✔
521
  SNode*  pNode = NULL;
2,012,778✔
522
  FOREACH(pNode, pStmt->pTables) {
4,134,782✔
523
    SDropTableClause* pClause = (SDropTableClause*)pNode;
2,122,004✔
524
    if (pStmt->withOpt) {
2,122,004✔
525
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
137,423✔
526
      if (TSDB_CODE_SUCCESS == code) {
137,423✔
527
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
137,423✔
528
      }
529
      if (TSDB_CODE_SUCCESS == code) {
137,423✔
530
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
137,423✔
531
      }
532
    } else {
533
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,984,581✔
534
      if (TSDB_CODE_SUCCESS == code) {
1,984,581✔
535
        code =
536
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,984,581✔
537
      }
538
      if (TSDB_CODE_SUCCESS == code) {
1,984,581✔
539
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
3,964,309✔
540
                                      pClause->tableName, PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
1,984,581✔
541
      }
542
    }
543
    if (TSDB_CODE_SUCCESS == code) {
2,122,004✔
544
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE,
2,122,004✔
545
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
546
    }
547

548
    if (TSDB_CODE_SUCCESS != code) {
2,122,004✔
549
      break;
×
550
    }
551
  }
552
  return code;
2,012,778✔
553
}
554

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

572
static int32_t collectMetaKeyFromDropVtable(SCollectMetaKeyCxt* pCxt, SDropVirtualTableStmt* pStmt) {
69,099✔
573
  int32_t code = TSDB_CODE_SUCCESS;
69,099✔
574
  if (pStmt->withOpt) {
69,099✔
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);
69,099✔
584
    if (TSDB_CODE_SUCCESS == code) {
69,099✔
585
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
69,099✔
586
    }
587
    if (TSDB_CODE_SUCCESS == code) {
69,099✔
588
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
69,099✔
589
                                    PRIV_OBJ_DB, pCxt->pMetaCache);
590
    }
591
    if (TSDB_CODE_SUCCESS == code) {
69,099✔
592
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
69,099✔
593
                                    PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache);
594
    }
595
  }
596
  return code;
69,099✔
597
}
598

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

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

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

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

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

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

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

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

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

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

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

808
  return code;
251,396✔
809
}
810

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

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

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

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

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

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

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

885
static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
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) {
×
889
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0,
×
890
                                  pCxt->pMetaCache);
891
  }
892
  return code;
×
893
}
894

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

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

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

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

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

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

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

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

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

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

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

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

1036
static int32_t collectMetaKeyFromShowFilesets(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
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) {
×
1040
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
1041
  }
1042
  if (TSDB_CODE_SUCCESS == code) {
×
1043
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
1044
  }
1045
  if (TSDB_CODE_SUCCESS == code) {
×
1046
    code =
1047
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
×
1048
                               NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache);
1049
  }
1050
  return code;
×
1051
}
1052

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

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

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

1085
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
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) {
×
1089
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_USER_SHOW, 0,
×
1090
                                  pCxt->pMetaCache);
1091
  }
1092
  return code;
×
1093
}
1094

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

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

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

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

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

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

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

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

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

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

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

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

1184
static int32_t collectMetaKeyFromShowRoleColPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
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) {
×
1188
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0,
×
1189
                                  pCxt->pMetaCache);
1190
  }
1191
  return code;
×
1192
}
1193

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1311
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
74,407✔
1312
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
74,407✔
1313
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
74,407✔
1314
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
74,407✔
1315
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
74,407✔
1316
  if (TSDB_CODE_SUCCESS == code) {
74,407✔
1317
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
74,407✔
1318
  }
1319
  if (TSDB_CODE_SUCCESS == code) {
74,407✔
1320
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
74,407✔
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,407✔
1327
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE,
74,407✔
1328
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1329
  }
1330
  if (TSDB_CODE_SUCCESS == code) {
74,407✔
1331
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
74,407✔
1332
                                  PRIV_CM_SHOW_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1333
  }
1334
  return code;
74,407✔
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) {
×
1345
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1346
  }
1347
  if (TSDB_CODE_SUCCESS == code) {
×
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) {
×
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) {
×
1356
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
×
1357
  }
1358
  pCxt->pMetaCache->forceFetchViewMeta = true;
×
1359
  return code;
×
1360
}
1361

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

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

1380
static int32_t collectMetaKeyFromShowInstances(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
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) {
601,840✔
1386
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
601,840✔
1387
                                 pCxt->pMetaCache);
1388
}
1389

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

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

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

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

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

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

1439
static int32_t collectMetaKeyFromScanDatabase(SCollectMetaKeyCxt* pCxt, SScanDatabaseStmt* pStmt) {
114✔
1440
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
114✔
1441
  if (TSDB_CODE_SUCCESS == code) {
114✔
1442
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_SCAN,
114✔
1443
                                  PRIV_OBJ_DB, pCxt->pMetaCache);
1444
  }
1445
  return code;
114✔
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) {
×
1451
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
×
1452
                                  PRIV_DB_SSMIGRATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1453
  }
1454
  return code;
×
1455
}
1456

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

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

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

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

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

1481
  if (pStmt->optrType == TSDB_ALTER_ROLE_ROLE) {
964,025✔
1482
    if (pStmt->roleName[0] == 'S' && pStmt->roleName[1] == 'Y' && pStmt->roleName[2] == 'S') {
3,480✔
1483
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSDBA) == 0) {
3,325✔
1484
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_SYSDBA, 0,
155✔
1485
                                      pCxt->pMetaCache);
1486
      }
1487
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSSEC) == 0) {
3,170✔
1488
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_SYSSEC, 0,
155✔
1489
                                      pCxt->pMetaCache);
1490
      }
1491
      if (strcmp(pStmt->roleName, TSDB_ROLE_SYSAUDIT) == 0) {
3,015✔
1492
        return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_SYSAUDIT,
155✔
1493
                                      0, pCxt->pMetaCache);
1494
      }
1495
    }
1496
  } else if (TSDB_ALTER_ROLE_PRIVILEGES == pStmt->optrType) {
960,545✔
1497
    bool isRealObj = ('\0' != pStmt->objName[0] && strncmp(pStmt->objName, "*", TSDB_OBJ_NAME_LEN) != 0);
960,545✔
1498
    if (isRealObj) {
960,545✔
1499
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->objName, pCxt->pMetaCache);
954,762✔
1500
    }
1501
    if (TSDB_CODE_SUCCESS == code) {
960,545✔
1502
      if (isRealObj && '\0' != pStmt->tabName[0] && strncmp(pStmt->tabName, "*", TSDB_TABLE_NAME_LEN) != 0) {
960,545✔
1503
        EPrivObjType objType = PRIV_OBJ_TBL;
437,305✔
1504
        SPrivIter    privIter = {0};
437,305✔
1505
        privIterInit(&privIter, &pStmt->privileges.privSet);
437,305✔
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) {
437,305✔
1514
          code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
431,557✔
1515
        } else if (PRIV_OBJ_VIEW == pStmt->privileges.objType) {
5,748✔
1516
          code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
1,120✔
1517
          pCxt->pMetaCache->forceFetchViewMeta = true;
1,120✔
1518
        } else {
1519
          // TODO: other object types
1520
        }
1521
      }
1522
    }
1523
  }
1524
  if (TSDB_CODE_SUCCESS == code) {
963,560✔
1525
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANT_PRIVILEGE, 0,
963,560✔
1526
                                  pCxt->pMetaCache);
1527
  }
1528

1529
  return code;
963,560✔
1530
}
1531

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

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

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

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

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

1560
  return code;
17,630✔
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) {
×
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) {
×
1572
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1573
  }
1574
  if (TSDB_CODE_SUCCESS == code) {
×
1575
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
×
1576
  }
1577
  return code;
×
1578
}
1579

1580
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
800✔
1581
  int32_t code;
1582
  if (pStmt->pOptions->recursiveTsma) {
800✔
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) {
×
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);
800✔
1595
    if (TSDB_CODE_SUCCESS == code) {
800✔
1596
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
800✔
1597
    }
1598
    if (TSDB_CODE_SUCCESS == code) {
800✔
1599
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
800✔
1600
                                    PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache);
1601
    }
1602
    if (TSDB_CODE_SUCCESS == code) {
800✔
1603
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
800✔
1604
                                    PRIV_STREAM_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache);
1605
    }
1606
    if (TSDB_CODE_SUCCESS == code) {
800✔
1607
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
800✔
1608
                                    PRIV_TSMA_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache);
1609
    }
1610
  }
1611
  if (TSDB_CODE_SUCCESS == code) {
800✔
1612
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
800✔
1613
  }
1614
  if (TSDB_CODE_SUCCESS == code) {
800✔
1615
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
800✔
1616
  }
1617

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

1627
  return code;
800✔
1628
}
1629

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) {
×
1634
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1635
  }
1636
  if (TSDB_CODE_SUCCESS == code) {
×
1637
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1638
  }
1639

1640
  if (TSDB_CODE_SUCCESS == code) {
×
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) {
×
1645
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tsmaName,
×
1646
                                  PRIV_CM_DROP, PRIV_OBJ_TSMA, pCxt->pMetaCache);
1647
  }
1648
  return code;
×
1649
}
1650

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

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

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

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

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

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

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

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

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

1749
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
558,111,586✔
1750
  int32_t code = 0;
558,111,586✔
1751
  SNode* pOrigStmt = pCxt->pStmt;
558,111,586✔
1752
  pCxt->pStmt = pStmt;
558,118,115✔
1753
  
1754
  switch (nodeType(pStmt)) {
558,109,916✔
1755
    case QUERY_NODE_SET_OPERATOR:
11,975,447✔
1756
      code = collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
11,975,447✔
1757
      break;
11,975,447✔
1758
    case QUERY_NODE_SELECT_STMT:
448,982,679✔
1759
      code = collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
448,982,679✔
1760
      break;
448,989,880✔
1761
    case QUERY_NODE_ALTER_DATABASE_STMT:
178,413✔
1762
      code = collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
178,413✔
1763
      break;
178,413✔
1764
    case QUERY_NODE_FLUSH_DATABASE_STMT:
1,744,933✔
1765
      code = collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
1,744,933✔
1766
      break;
1,744,933✔
1767
    case QUERY_NODE_CREATE_TABLE_STMT:
16,266,429✔
1768
      code = collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
16,266,429✔
1769
      break;
16,266,429✔
1770
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
129,409✔
1771
      code = collectMetaKeyFromCreateVTable(pCxt, (SCreateVTableStmt*)pStmt);
129,409✔
1772
      break;
129,409✔
1773
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
206,875✔
1774
      code = collectMetaKeyFromCreateVSubTable(pCxt, (SCreateVSubTableStmt*)pStmt);
206,875✔
1775
      break;
206,875✔
1776
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
30,415,557✔
1777
      code = collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
30,415,557✔
1778
      break;
30,418,540✔
1779
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
1,288✔
1780
      code = collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
1,288✔
1781
      break;
1,288✔
1782
    case QUERY_NODE_DROP_TABLE_STMT:
2,012,778✔
1783
      code = collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
2,012,778✔
1784
      break;
2,012,778✔
1785
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
81,141✔
1786
      code = collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
81,141✔
1787
      break;
81,141✔
1788
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
69,099✔
1789
      code = collectMetaKeyFromDropVtable(pCxt, (SDropVirtualTableStmt*)pStmt);
69,099✔
1790
      break;
69,099✔
1791
    case QUERY_NODE_ALTER_TABLE_STMT:
17,931,396✔
1792
      code = collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
17,931,396✔
1793
      break;
17,931,396✔
1794
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
483,588✔
1795
      code = collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
483,588✔
1796
      break;
483,588✔
1797
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
362,834✔
1798
      code = collectMetaKeyFromAlterVtable(pCxt, (SAlterTableStmt*)pStmt);
362,834✔
1799
      break;
362,834✔
1800
    case QUERY_NODE_USE_DATABASE_STMT:
1,999,795✔
1801
      code = collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
1,999,795✔
1802
      break;
2,000,188✔
1803
    case QUERY_NODE_CREATE_INDEX_STMT:
11,522✔
1804
      code = collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
11,522✔
1805
      break;
11,522✔
1806
    case QUERY_NODE_DROP_INDEX_STMT:
3,219✔
1807
      code = collectMetaKeyFromDropIndex(pCxt, (SDropIndexStmt*)pStmt);
3,219✔
1808
      break;
3,219✔
1809
    case QUERY_NODE_CREATE_TOPIC_STMT:
164,436✔
1810
      code = collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
164,436✔
1811
      break;
164,436✔
1812
    case QUERY_NODE_EXPLAIN_STMT:
12,522,920✔
1813
      code = collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
12,522,920✔
1814
      break;
12,522,920✔
1815
    case QUERY_NODE_DESCRIBE_STMT:
484,839✔
1816
      code = collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
484,839✔
1817
      break;
484,839✔
1818
    case QUERY_NODE_COMPACT_DATABASE_STMT:
28,068✔
1819
      code = collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
28,068✔
1820
      break;
28,068✔
1821
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
9,503✔
1822
      code = collectMetaKeyFromRollupDatabase(pCxt, (SRollupDatabaseStmt*)pStmt);
9,503✔
1823
      break;
9,503✔
1824
    case QUERY_NODE_SCAN_DATABASE_STMT:
114✔
1825
      code = collectMetaKeyFromScanDatabase(pCxt, (SScanDatabaseStmt*)pStmt);
114✔
1826
      break;
114✔
UNCOV
1827
    case QUERY_NODE_SSMIGRATE_DATABASE_STMT:
×
UNCOV
1828
      code = collectMetaKeyFromSsmigrateDatabase(pCxt, (SSsMigrateDatabaseStmt*)pStmt);
×
UNCOV
1829
      break;
×
1830
    case QUERY_NODE_TRIM_DATABASE_STMT:
8,038✔
1831
      code = collectMetaKeyFromTrimDatabase(pCxt, (STrimDatabaseStmt*)pStmt);
8,038✔
1832
      break;
8,038✔
1833
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
3,655✔
1834
      code = collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt);
3,655✔
1835
      break;
3,655✔
1836
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
4,386✔
1837
      code = collectMetaKeyFromRollupVgroups(pCxt, (SRollupVgroupsStmt*)pStmt);
4,386✔
1838
      break;
4,386✔
1839
    case QUERY_NODE_SCAN_VGROUPS_STMT:
285✔
1840
      code = collectMetaKeyFromScanVgroups(pCxt, (SScanVgroupsStmt*)pStmt);
285✔
1841
      break;
285✔
1842
    case QUERY_NODE_CREATE_STREAM_STMT:
251,396✔
1843
      code = collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
251,396✔
1844
      break;
251,396✔
1845
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
10,475✔
1846
      code = collectMetaKeyFromRecalculateStream(pCxt, (SRecalcStreamStmt*)pStmt);
10,475✔
1847
      break;
10,475✔
1848
    case QUERY_NODE_GRANT_STMT:
559,806✔
1849
      code = collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
559,806✔
1850
      break;
559,806✔
1851
    case QUERY_NODE_REVOKE_STMT:
404,219✔
1852
      code = collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
404,219✔
1853
      break;
404,219✔
1854
    case QUERY_NODE_SHOW_DNODES_STMT:
20,414✔
1855
      code = collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
20,414✔
1856
      break;
20,414✔
1857
    case QUERY_NODE_SHOW_MNODES_STMT:
287,056✔
1858
      code = collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
287,056✔
1859
      break;
287,056✔
UNCOV
1860
    case QUERY_NODE_SHOW_MODULES_STMT:
×
1861
      code = collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
1862
      break;
×
1863
    case QUERY_NODE_SHOW_QNODES_STMT:
1,283✔
1864
      code = collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
1,283✔
1865
      break;
1,283✔
1866
    case QUERY_NODE_SHOW_SNODES_STMT:
52,943✔
1867
      code = collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
52,943✔
1868
      break;
52,943✔
1869
    case QUERY_NODE_SHOW_ANODES_STMT:
160✔
1870
      code = collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
160✔
1871
      break;
160✔
UNCOV
1872
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
UNCOV
1873
      code = collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
UNCOV
1874
      break;
×
1875
    case QUERY_NODE_SHOW_BNODES_STMT:
52,076✔
1876
      code = collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
52,076✔
1877
      break;
52,076✔
UNCOV
1878
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
UNCOV
1879
      code = collectMetaKeyFromShowBackupNodes(pCxt, (SShowStmt*)pStmt);
×
UNCOV
1880
      break;
×
1881
    case QUERY_NODE_SHOW_XNODES_STMT:
383✔
1882
      code = collectMetaKeyFromShowXnodes(pCxt, (SShowStmt*)pStmt);
383✔
1883
      break;
383✔
1884
    case QUERY_NODE_SHOW_XNODE_TASKS_STMT:
383✔
1885
      code = collectMetaKeyFromShowXnodeTasks(pCxt, (SShowStmt*)pStmt);
383✔
1886
      break;
383✔
1887
    case QUERY_NODE_SHOW_XNODE_AGENTS_STMT:
383✔
1888
      code = collectMetaKeyFromShowXnodeAgents(pCxt, (SShowStmt*)pStmt);
383✔
1889
      break;
383✔
1890
    case QUERY_NODE_SHOW_XNODE_JOBS_STMT:
383✔
1891
      code = collectMetaKeyFromShowXnodeJobs(pCxt, (SShowStmt*)pStmt);
383✔
1892
      break;
383✔
1893
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
304✔
1894
      code = collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
304✔
1895
      break;
304✔
1896
    case QUERY_NODE_SHOW_CLUSTER_STMT:
1,609✔
1897
      code = collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
1,609✔
1898
      break;
1,609✔
1899
    case QUERY_NODE_SHOW_DATABASES_STMT:
156,366✔
1900
      code = collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
156,366✔
1901
      break;
156,366✔
1902
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
37,502✔
1903
      code = collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
37,502✔
1904
      break;
37,502✔
1905
    case QUERY_NODE_SHOW_INDEXES_STMT:
4,196✔
1906
      code = collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
4,196✔
1907
      break;
4,196✔
1908
    case QUERY_NODE_SHOW_STABLES_STMT:
205,553✔
1909
      code = collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
205,553✔
1910
      break;
205,553✔
1911
    case QUERY_NODE_SHOW_STREAMS_STMT:
100,646✔
1912
      code = collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
100,646✔
1913
      break;
100,646✔
1914
    case QUERY_NODE_SHOW_TABLES_STMT:
319,286✔
1915
    case QUERY_NODE_SHOW_VTABLES_STMT:
1916
      code = collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
319,286✔
1917
      break;
319,286✔
UNCOV
1918
    case QUERY_NODE_SHOW_FILESETS_STMT:
×
UNCOV
1919
      code = collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt);
×
UNCOV
1920
      break;
×
1921
    case QUERY_NODE_SHOW_TAGS_STMT:
635,822✔
1922
      code = collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
635,822✔
1923
      break;
635,822✔
1924
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
4,770✔
1925
      code = collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
4,770✔
1926
      break;
4,770✔
1927
    case QUERY_NODE_SHOW_USERS_STMT:
3,593✔
1928
      code = collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
3,593✔
1929
      break;
3,593✔
UNCOV
1930
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
UNCOV
1931
      code = collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
UNCOV
1932
      break;
×
1933
    case QUERY_NODE_SHOW_ROLES_STMT:
155✔
1934
      code = collectMetaKeyFromShowRoles(pCxt, (SShowStmt*)pStmt);
155✔
1935
      break;
155✔
1936
    case QUERY_NODE_SHOW_LICENCES_STMT:
2,068✔
1937
      code = collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
2,068✔
1938
      break;
2,068✔
1939
    case QUERY_NODE_SHOW_VGROUPS_STMT:
214,132✔
1940
      code = collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
214,132✔
1941
      break;
214,132✔
1942
    case QUERY_NODE_SHOW_TOPICS_STMT:
16,771✔
1943
      code = collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
16,771✔
1944
      break;
16,771✔
1945
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
15,502✔
1946
      code = collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
15,502✔
1947
      break;
15,502✔
1948
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
1,941✔
1949
      code = collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
1,941✔
1950
      break;
1,941✔
1951
    case QUERY_NODE_SHOW_QUERIES_STMT:
1,283✔
1952
      code = collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
1,283✔
1953
      break;
1,283✔
1954
    case QUERY_NODE_SHOW_VARIABLES_STMT:
8,251✔
1955
      code = collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
8,251✔
1956
      break;
8,251✔
1957
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
38,069✔
1958
      code = collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
38,069✔
1959
      break;
38,069✔
1960
    case QUERY_NODE_SHOW_VNODES_STMT:
3,946✔
1961
      code = collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
3,946✔
1962
      break;
3,946✔
1963
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
2,857✔
1964
      code = collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
2,857✔
1965
      break;
2,857✔
1966
    case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT:
775✔
1967
      code = collectMetaKeyFromShowRolePrivileges(pCxt, (SShowStmt*)pStmt);
775✔
1968
      break;
775✔
UNCOV
1969
    case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT:
×
UNCOV
1970
      code = collectMetaKeyFromShowRoleColPrivileges(pCxt, (SShowStmt*)pStmt);
×
UNCOV
1971
      break;
×
1972
    case QUERY_NODE_SHOW_VIEWS_STMT:
1,948✔
1973
      code = collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
1,948✔
1974
      break;
1,948✔
1975
    case QUERY_NODE_SHOW_COMPACTS_STMT:
323,850✔
1976
      code = collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
323,850✔
1977
      break;
323,850✔
1978
    case QUERY_NODE_SHOW_SCANS_STMT:
1,995✔
1979
      code = collectMetaKeyFromShowScans(pCxt, (SShowStmt*)pStmt);
1,995✔
1980
      break;
1,995✔
1981
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
30,865✔
1982
      code = collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
30,865✔
1983
      break;
30,865✔
1984
    case QUERY_NODE_SHOW_SCAN_DETAILS_STMT:
2,280✔
1985
      code = collectMetaKeyFromShowScanDetails(pCxt, (SShowStmt*)pStmt);
2,280✔
1986
      break;
2,280✔
1987
    case QUERY_NODE_SHOW_SSMIGRATES_STMT:
×
1988
      code = collectMetaKeyFromShowSsMigrates(pCxt, (SShowStmt*)pStmt);
×
UNCOV
1989
      break;
×
UNCOV
1990
    case QUERY_NODE_SHOW_TOKENS_STMT:
×
UNCOV
1991
      code = collectMetaKeyFromShowTokens(pCxt, (SShowStmt*)pStmt);
×
UNCOV
1992
      break;
×
1993
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
274✔
1994
      code = collectMetaKeyFromShowTransactionDetails(pCxt, (SShowStmt*)pStmt);
274✔
1995
      break;
274✔
1996
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
1,120✔
1997
      code = collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
1,120✔
1998
      break;
1,120✔
1999
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
1,120✔
2000
      code = collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
1,120✔
2001
      break;
1,120✔
2002
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
1,283✔
2003
      code = collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
1,283✔
2004
      break;
1,283✔
2005
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
160✔
2006
      code = collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
160✔
2007
      break;
160✔
UNCOV
2008
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
UNCOV
2009
      code = collectMetaKeyFromShowEncryptAlgorithms(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2010
      break;
×
UNCOV
2011
    case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT:
×
UNCOV
2012
      code = collectMetaKeyFromShowEncryptStatus(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2013
      break;
×
2014
    case QUERY_NODE_SHOW_MOUNTS_STMT:
5,952✔
2015
      code = collectMetaKeyFromShowMounts(pCxt, (SShowStmt*)pStmt);
5,952✔
2016
      break;
5,952✔
2017
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
60,843✔
2018
      code = collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
60,843✔
2019
      break;
60,843✔
2020
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
74,407✔
2021
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
2022
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
2023
      code = collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
74,407✔
2024
      break;
74,407✔
UNCOV
2025
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
×
UNCOV
2026
      code = collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
×
UNCOV
2027
      break;
×
2028
    case QUERY_NODE_SHOW_CREATE_RSMA_STMT:
2,193✔
2029
      code = collectMetaKeyFromShowCreateRsma(pCxt, (SShowCreateRsmaStmt*)pStmt);
2,193✔
2030
      break;
2,193✔
2031
    case QUERY_NODE_SHOW_APPS_STMT:
1,283✔
2032
      code = collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
1,283✔
2033
      break;
1,283✔
UNCOV
2034
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
UNCOV
2035
      code = collectMetaKeyFromShowInstances(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2036
      break;
×
2037
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
601,840✔
2038
      code = collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
601,840✔
2039
      break;
601,840✔
2040
    case QUERY_NODE_SHOW_USAGE_STMT:
306✔
2041
      code = collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
306✔
2042
      break;
306✔
2043
    case QUERY_NODE_DELETE_STMT:
1,703,354✔
2044
      code = collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
1,703,354✔
2045
      break;
1,703,354✔
2046
    case QUERY_NODE_INSERT_STMT:
173,177✔
2047
      code = collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
173,177✔
2048
      break;
173,177✔
2049
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
2,963✔
2050
      code = collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
2,963✔
2051
      break;
2,963✔
2052
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
22,213✔
2053
      code = collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
22,213✔
2054
      break;
22,213✔
2055
    case QUERY_NODE_CREATE_VIEW_STMT:
17,630✔
2056
      code = collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
17,630✔
2057
      break;
17,630✔
UNCOV
2058
    case QUERY_NODE_DROP_VIEW_STMT:
×
UNCOV
2059
      code = collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
×
UNCOV
2060
      break;
×
2061
    case QUERY_NODE_CREATE_TSMA_STMT:
800✔
2062
      code = collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
800✔
2063
      break;
800✔
UNCOV
2064
    case QUERY_NODE_DROP_TSMA_STMT:
×
UNCOV
2065
      code = collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
×
UNCOV
2066
      break;
×
UNCOV
2067
    case QUERY_NODE_SHOW_TSMAS_STMT:
×
UNCOV
2068
      code = collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
×
UNCOV
2069
      break;
×
2070
    case QUERY_NODE_CREATE_RSMA_STMT:
108,919✔
2071
      code = collectMetaKeyFromCreateRsmaStmt(pCxt, (SCreateRsmaStmt*)pStmt);
108,919✔
2072
      break;
108,919✔
2073
    case QUERY_NODE_DROP_RSMA_STMT:
2,193✔
2074
      code = collectMetaKeyFromDropRsmaStmt(pCxt, (SDropRsmaStmt*)pStmt);
2,193✔
2075
      break;
2,193✔
2076
    case QUERY_NODE_ALTER_RSMA_STMT:
19,737✔
2077
      code = collectMetaKeyFromAlterRsmaStmt(pCxt, (SAlterRsmaStmt*)pStmt);
19,737✔
2078
      break;
19,737✔
2079
    case QUERY_NODE_SHOW_RSMAS_STMT:
13,158✔
2080
      code = collectMetaKeyFromShowRsmasStmt(pCxt, (SShowStmt*)pStmt);
13,158✔
2081
      break;
13,158✔
2082
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
40,205✔
2083
      code = collectMetaKeyFromShowRetentionsStmt(pCxt, (SShowStmt*)pStmt);
40,205✔
2084
      break;
40,205✔
2085
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
2,193✔
2086
      code = collectMetaKeyFromShowRetentionDetailsStmt(pCxt, (SShowStmt*)pStmt);
2,193✔
2087
      break;
2,193✔
2088
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
4,572✔
2089
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
2090
      code = collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
4,572✔
2091
      break;
4,572✔
2092
    case QUERY_NODE_CREATE_DATABASE_STMT:
1,297,067✔
2093
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_DB_CREATE);
1,297,067✔
2094
      break;
1,297,067✔
2095
    case QUERY_NODE_DROP_DATABASE_STMT:
1,069,630✔
2096
      code = collectMetaKeyFromDropDatabase(pCxt, (SDropDatabaseStmt*)pStmt);
1,069,630✔
2097
      break;
1,069,630✔
2098
    case QUERY_NODE_BALANCE_VGROUP_STMT:
11,423✔
2099
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE);
11,423✔
2100
      break;
11,423✔
2101
    case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT:
2,174✔
2102
    case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT:
2103
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE_LEADER);
2,174✔
2104
      break;
2,174✔
UNCOV
2105
    case QUERY_NODE_MERGE_VGROUP_STMT:
×
UNCOV
2106
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_MERGE);
×
UNCOV
2107
      break;
×
2108
    case QUERY_NODE_SPLIT_VGROUP_STMT:
20,778✔
2109
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_SPLIT);
20,778✔
2110
      break;
20,778✔
2111
    case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT:
43,856✔
2112
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_REDISTRIBUTE);
43,856✔
2113
      break;
43,856✔
2114
    case QUERY_NODE_CREATE_FUNCTION_STMT:
47,410✔
2115
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_CREATE);
47,410✔
2116
      break;
47,410✔
2117
    case QUERY_NODE_DROP_FUNCTION_STMT:
36,753✔
2118
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_DROP);
36,753✔
2119
      break;
36,753✔
2120
    case QUERY_NODE_CREATE_MOUNT_STMT:
1,364✔
2121
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_CREATE);
1,364✔
2122
      break;
1,364✔
2123
    case QUERY_NODE_DROP_MOUNT_STMT:
496✔
2124
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_DROP);
496✔
2125
      break;
496✔
2126
    case QUERY_NODE_CREATE_ROLE_STMT:
155✔
2127
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_CREATE);
155✔
2128
      break;
155✔
UNCOV
2129
    case QUERY_NODE_DROP_ROLE_STMT:
×
UNCOV
2130
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_DROP);
×
UNCOV
2131
      break;
×
2132
    case QUERY_NODE_CREATE_USER_STMT:
48,703✔
2133
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_CREATE);
48,703✔
2134
      break;
48,703✔
2135
    case QUERY_NODE_DROP_USER_STMT:
21,318✔
2136
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_DROP);
21,318✔
2137
      break;
21,318✔
2138
    case QUERY_NODE_CREATE_DNODE_STMT:
261,843✔
2139
    case QUERY_NODE_CREATE_MNODE_STMT:
2140
    case QUERY_NODE_CREATE_QNODE_STMT:
2141
    case QUERY_NODE_CREATE_SNODE_STMT:
2142
    case QUERY_NODE_CREATE_BNODE_STMT:
2143
    case QUERY_NODE_CREATE_ANODE_STMT:
2144
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_CREATE);
261,843✔
2145
      break;
261,843✔
2146
    case QUERY_NODE_DROP_DNODE_STMT:
84,365✔
2147
    case QUERY_NODE_DROP_MNODE_STMT:
2148
    case QUERY_NODE_DROP_QNODE_STMT:
2149
    case QUERY_NODE_DROP_SNODE_STMT:
2150
    case QUERY_NODE_DROP_BNODE_STMT:
2151
    case QUERY_NODE_DROP_ANODE_STMT:
2152
      code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_DROP);
84,365✔
2153
      break;
84,365✔
2154
    default:
2,434,585✔
2155
      break;
2,434,585✔
2156
  }
2157

2158
  pCxt->pStmt = pOrigStmt;
558,114,733✔
2159

2160
  return code;
558,122,034✔
2161
}
2162

2163
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
258,933,884✔
2164
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
258,933,884✔
2165
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
258,930,181✔
2166
}
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