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

taosdata / TDengine / #4897

25 Dec 2025 10:17AM UTC coverage: 65.717% (-0.2%) from 65.929%
#4897

push

travis-ci

web-flow
fix: [6622889291] Fix invalid rowSize. (#34043)

186011 of 283047 relevant lines covered (65.72%)

113853896.64 hits per line

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

89.53
/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) {
269,950,948✔
33
  *pQuery = NULL;
269,950,948✔
34
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
269,956,211✔
35
  if (NULL == *pQuery) {
269,967,463✔
36
    return code;
×
37
  }
38
  (*pQuery)->pRoot = pRootNode;
269,968,757✔
39
  (*pQuery)->placeholderNum = placeholderNo;
269,960,969✔
40
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
269,963,497✔
41
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
269,927,053✔
42

43
  return TSDB_CODE_SUCCESS;
269,951,388✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
280,266,854✔
47
  SAstCreateContext cxt;
279,174,074✔
48
  initAstCreateContext(pParseCxt, &cxt);
280,272,916✔
49
  void* pParser = ParseAlloc((FMalloc)taosMemMalloc);
280,252,647✔
50
  if (!pParser) return terrno;
280,270,806✔
51
  int32_t i = 0;
280,270,806✔
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);
164,560,757✔
56
      goto abort_parse;
164,798,304✔
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);
291,654✔
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: {
105,859,961✔
74
        Parse(pParser, 0, t0, &cxt);
105,859,961✔
75
        goto abort_parse;
105,859,446✔
76
      }
77
      case TK_NK_ILLEGAL: {
212,902✔
78
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
212,902✔
79
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
212,902✔
80
        goto abort_parse;
212,902✔
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;
9,648,853✔
92
        }
93
    }
94
  }
95

96
abort_parse:
280,240,154✔
97
  ParseFree(pParser, (FFree)taosAutoMemoryFree);
280,260,530✔
98
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
280,264,802✔
99
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
269,960,375✔
100
    if (TSDB_CODE_SUCCESS != code) {
269,926,640✔
101
      return code;
×
102
    }
103
  }
104
  taosArrayDestroy(cxt.pPlaceholderValues);
280,231,067✔
105
  return cxt.errCode;
280,241,781✔
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) {
415,907,118✔
127
  switch (fmGetFuncType(pFunc->functionName)) {
415,907,118✔
128
    case FUNCTION_TYPE_LAST_ROW:
17,974,388✔
129
    case FUNCTION_TYPE_LAST:
130
      pCxt->hasLastRowOrLast = true;
17,974,388✔
131
      break;
17,975,224✔
132
    case FUNCTION_TYPE_UDF:
204,932✔
133
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
204,932✔
134
      break;
204,932✔
135
    default:
397,718,343✔
136
      break;
397,718,343✔
137
  }
138
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
415,898,499✔
139
}
140

141
static bool needGetTableIndex(SNode* pStmt) {
466,924,769✔
142
  return false;
466,924,769✔
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,475,629✔
151
  if (0 == pName->type) {
1,475,629✔
152
    return TSDB_CODE_SUCCESS;
782,813✔
153
  }
154
  if (TSDB_DB_NAME_T == pName->type) {
692,816✔
155
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
211,841✔
156
  }
157
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
480,975✔
158
}
159

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

170
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
466,922,357✔
171
                                               AUTH_TYPE authType) {
172
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
466,922,357✔
173
  if (TSDB_CODE_SUCCESS == code) {
466,922,581✔
174
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
466,923,078✔
175
  }
176
  if (TSDB_CODE_SUCCESS == code) {
466,926,911✔
177
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, authType,
466,926,911✔
178
                                  pCxt->pMetaCache);
179
  }
180
#ifdef TD_ENTERPRISE
181
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
466,924,831✔
182
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, authType,
335,495✔
183
                                  pCxt->pMetaCache);
184
  }
185
#endif
186
  if (TSDB_CODE_SUCCESS == code) {
466,924,769✔
187
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
466,924,769✔
188
  }
189
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
466,926,859✔
190
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
×
191
  }
192
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
466,924,499✔
193
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
6,510✔
194
  }
195
  if (TSDB_CODE_SUCCESS == code &&
466,923,339✔
196
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
466,923,339✔
197
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_TABLE_VC_COLS) ||
465,993,470✔
198
       0 == strcmp(pTable, TSDB_INS_DISK_USAGE) || 0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS)) &&
465,441,220✔
199
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
1,484,011✔
200
    code = collectMetaKeyFromInsTags(pCxt);
1,475,629✔
201
  }
202
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
466,923,609✔
203
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
223,553✔
204
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
223,553✔
205
  }
206
  return code;
466,922,834✔
207
}
208

209
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
464,351,059✔
210
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
464,351,059✔
211
                                                  AUTH_TYPE_READ);
212
  if (TSDB_CODE_SUCCESS == pCxt->errCode && pCxt->pComCxt->collectVStbRefDbs) {
464,351,256✔
213
    pCxt->errCode = reserveVStbRefDbsInCache(pCxt->pComCxt->pParseCxt->acctId, pRealTable->table.dbName, pRealTable->table.tableName, pCxt->pComCxt->pMetaCache);
437,037,570✔
214
  }
215
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
464,358,498✔
216
}
217

218
static EDealRes collectMetaKeyFromTempTable(SCollectMetaKeyFromExprCxt* pCxt, STempTableNode* pTempTable) {
12,698,416✔
219
  pCxt->errCode = collectMetaKeyFromQuery(pCxt->pComCxt, pTempTable->pSubquery);
12,698,416✔
220
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
12,698,416✔
221
}
222

223
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
264,382,245✔
224
  if (pOperator->opType != OP_TYPE_EQUAL) {
264,382,245✔
225
    return TSDB_CODE_SUCCESS;
234,178,450✔
226
  }
227

228
  SValueNode* pValueNode = NULL;
30,202,910✔
229
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
30,202,910✔
230
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
3,324,497✔
231
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
578,248✔
232
    pValueNode = (SValueNode*)pOperator->pRight;
558,734✔
233
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
29,644,434✔
234
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
90,216✔
235
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
1,032✔
236
    pValueNode = (SValueNode*)pOperator->pLeft;
×
237
  } else {
238
    return TSDB_CODE_SUCCESS;
29,644,434✔
239
  }
240

241
  *ppTableName = pValueNode->literal;
558,734✔
242

243
  return TSDB_CODE_SUCCESS;
558,734✔
244
}
245

246
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
343,559,252✔
247
  if (!pCxt->tbnameCollect) {
343,559,252✔
248
    return DEAL_RES_CONTINUE;
79,176,796✔
249
  }
250

251
  char*   pTableName = NULL;
264,382,665✔
252
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
264,382,714✔
253
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
264,379,916✔
254
  if (pTableName) {
264,379,916✔
255
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
558,734✔
256
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
558,734✔
257
                                                    pTableName, AUTH_TYPE_READ);
258
  }
259

260
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
264,379,916✔
261
}
262

263
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
2,147,483,647✔
264
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
2,147,483,647✔
265
  switch (nodeType(pNode)) {
2,147,483,647✔
266
    case QUERY_NODE_FUNCTION:
415,908,111✔
267
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
415,908,111✔
268
    case QUERY_NODE_REAL_TABLE:
463,959,055✔
269
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
463,959,055✔
270
    case QUERY_NODE_TEMP_TABLE:
12,698,416✔
271
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
12,698,416✔
272
    case QUERY_NODE_OPERATOR:
343,560,999✔
273
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
343,560,999✔
274
    case QUERY_NODE_SET_OPERATOR:
24,946,416✔
275
      return collectMetaKeyFromSetOperator(pCxt->pComCxt, (SSetOperator*)pNode);
24,946,416✔
276
    case QUERY_NODE_SELECT_STMT:
223,250,979✔
277
      return collectMetaKeyFromSelect(pCxt->pComCxt, (SSelectStmt*)pNode);
223,250,979✔
278
    default:
1,676,501,733✔
279
      break;
1,676,501,733✔
280
  }
281
  return DEAL_RES_CONTINUE;
1,676,501,733✔
282
}
283

284
static int32_t collectMetaKeyFromExprs(SCollectMetaKeyCxt* pCxt, SNodeList* pList) {
31,826,306✔
285
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .errCode = TSDB_CODE_SUCCESS, .tbnameCollect = false};
31,826,306✔
286
  nodesWalkExprs(pList, collectMetaKeyFromExprImpl, &cxt);
31,826,306✔
287
  return cxt.errCode;
31,826,306✔
288
}
289

290
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt) {
31,826,306✔
291
  int32_t code = collectMetaKeyFromQuery(pCxt, pStmt->pLeft);
31,826,306✔
292
  if (TSDB_CODE_SUCCESS == code) {
31,826,306✔
293
    code = collectMetaKeyFromQuery(pCxt, pStmt->pRight);
31,826,306✔
294
  }
295
  if (TSDB_CODE_SUCCESS == code) {
31,826,306✔
296
    code = collectMetaKeyFromExprs(pCxt, pStmt->pOrderByList);
31,826,306✔
297
  }
298
  return code;
31,826,306✔
299
}
300

301
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
16,669,554✔
302
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
16,669,554✔
303
    return TSDB_CODE_SUCCESS;
493,474✔
304
  }
305
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
16,176,775✔
306
}
307

308
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
463,048,282✔
309
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
463,048,282✔
310
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
463,050,608✔
311
    cxt.tbnameCollect = true;
404,732,604✔
312
    cxt.pComCxt->collectVStbRefDbs = true;
404,732,604✔
313
  }
314
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
463,050,583✔
315
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
463,051,948✔
316
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
16,670,040✔
317
  }
318
  return cxt.errCode;
463,052,384✔
319
}
320

321
static int32_t collectMetaKeyFromAlterDatabase(SCollectMetaKeyCxt* pCxt, SAlterDatabaseStmt* pStmt) {
206,211✔
322
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
206,211✔
323
}
324

325
static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) {
2,058,097✔
326
  return reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
2,058,097✔
327
}
328

329
static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) {
21,600,152✔
330
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
21,600,152✔
331
  if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) {
21,600,152✔
332
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
19,874,839✔
333
  }
334
  if (TSDB_CODE_SUCCESS == code) {
21,600,152✔
335
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
21,600,152✔
336
                                  pCxt->pMetaCache);
337
  }
338
  return code;
21,600,152✔
339
}
340

341
static int32_t collectMetaKeyFromCreateVTable(SCollectMetaKeyCxt* pCxt, SCreateVTableStmt* pStmt) {
145,942✔
342
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
145,942✔
343
  if (TSDB_CODE_SUCCESS == code) {
145,942✔
344
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
145,942✔
345
  }
346
  if (TSDB_CODE_SUCCESS == code) {
145,942✔
347
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
145,942✔
348
                                  pCxt->pMetaCache);
349
  }
350
  if (TSDB_CODE_SUCCESS == code) {
145,942✔
351
    SNode *pNode = NULL;
145,942✔
352
    FOREACH(pNode, pStmt->pCols) {
141,266,291✔
353
      SColumnDefNode *pCol = (SColumnDefNode*)pNode;
141,120,349✔
354
      if (NULL == pCol) {
141,120,349✔
355
        code = TSDB_CODE_PAR_INVALID_COLUMN;
×
356
        break;
×
357
      }
358
      SColumnOptions *pOptions = (SColumnOptions*)pCol->pOptions;
141,120,349✔
359
      if (pOptions && pOptions->hasRef) {
141,120,349✔
360
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
88,101,134✔
361
        if (TSDB_CODE_SUCCESS == code) {
88,101,134✔
362
          code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache);
88,101,134✔
363
        }
364
        if (TSDB_CODE_SUCCESS == code) {
88,101,134✔
365
          code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pOptions->refDb,
176,201,926✔
366
                                        pOptions->refTable, AUTH_TYPE_READ, pCxt->pMetaCache);
88,101,134✔
367
        }
368
        if (TSDB_CODE_SUCCESS != code) {
88,101,134✔
369
          break;
×
370
        }
371
      }
372
    }
373
  }
374
  return code;
145,942✔
375
}
376

377
static int32_t collectMetaKeyFromCreateVSubTable(SCollectMetaKeyCxt* pCxt, SCreateVSubTableStmt* pStmt) {
264,692✔
378
  int32_t code = TSDB_CODE_SUCCESS;
264,692✔
379
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
264,692✔
380
  // super table's meta
381
  PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->useDbName, pStmt->useTableName,pCxt->pMetaCache));
264,692✔
382
  // child table's meta
383
  PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
264,692✔
384
  // check db's write auth
385
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL,
264,692✔
386
                                     AUTH_TYPE_WRITE, pCxt->pMetaCache));
387
  // check org table's read auth
388
  SNode     *pNode = NULL;
264,692✔
389
  SNodeList *pTmpNodeList = pStmt->pSpecificColRefs ? pStmt->pSpecificColRefs : pStmt->pColRefs;
264,692✔
390
  if (NULL == pTmpNodeList) {
264,692✔
391
    // no column reference
392
    return TSDB_CODE_SUCCESS;
4,024✔
393
  }
394

395
  FOREACH(pNode, pTmpNodeList) {
54,111,437✔
396
    SColumnRefNode *pColRef = (SColumnRefNode*)pNode;
53,850,769✔
397
    if (NULL == pColRef) {
53,850,769✔
398
      code = TSDB_CODE_PAR_INVALID_COLUMN;
×
399
      break;
×
400
    }
401
    PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName,
53,850,769✔
402
                                        pCxt->pMetaCache));
403
    PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName,
53,850,769✔
404
                                          pCxt->pMetaCache));
405
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pColRef->refDbName,
53,850,769✔
406
                                       pColRef->refTableName, AUTH_TYPE_READ, pCxt->pMetaCache));
407
  }
408
  return code;
260,668✔
409
}
410

411
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
34,630,075✔
412
  int32_t code = TSDB_CODE_SUCCESS;
34,630,075✔
413
  SNode*  pNode = NULL;
34,630,075✔
414
  FOREACH(pNode, pStmt->pSubTables) {
73,746,666✔
415
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
39,107,748✔
416
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
39,119,545✔
417
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
39,119,545✔
418
      if (TSDB_CODE_SUCCESS == code) {
39,110,988✔
419
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
39,113,285✔
420
                                       pCxt->pMetaCache);
421
      }
422
      if (TSDB_CODE_SUCCESS == code) {
39,118,040✔
423
        code =
424
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
39,118,040✔
425
      }
426
      if (TSDB_CODE_SUCCESS == code) {
39,126,972✔
427
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
39,126,972✔
428
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
429
      }
430
    } else {
431
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
265✔
432
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
265✔
433
      if (TSDB_CODE_SUCCESS == code) {
×
434
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
435
                                       pCxt->pMetaCache);
436
      }
437
      if (TSDB_CODE_SUCCESS == code) {
×
438
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
439
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
440
      }
441
    }
442

443
    if (TSDB_CODE_SUCCESS != code) {
39,116,591✔
444
      break;
×
445
    }
446
  }
447
  return code;
34,637,888✔
448
}
449

450
static int32_t collectMetaKeyFromCreateSubTableFromFile(SCollectMetaKeyCxt*            pCxt,
1,470✔
451
                                                        SCreateSubTableFromFileClause* pClause) {
452
  int32_t code = TSDB_CODE_SUCCESS;
1,470✔
453
  SNode*  pNode = NULL;
1,470✔
454

455
  code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
1,470✔
456
  if (TSDB_CODE_SUCCESS == code) {
1,470✔
457
    code =
458
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, pCxt->pMetaCache);
1,470✔
459
  }
460
  if (TSDB_CODE_SUCCESS == code) {
1,470✔
461
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
1,470✔
462
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
463
  }
464

465
  return code;
1,470✔
466
}
467

468
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
1,717,905✔
469
  int32_t code = TSDB_CODE_SUCCESS;
1,717,905✔
470
  SNode*  pNode = NULL;
1,717,905✔
471
  FOREACH(pNode, pStmt->pTables) {
3,721,897✔
472
    SDropTableClause* pClause = (SDropTableClause*)pNode;
2,003,992✔
473
    if (pStmt->withOpt) {
2,003,992✔
474
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
356,152✔
475
      if (TSDB_CODE_SUCCESS == code) {
356,152✔
476
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
356,152✔
477
      }
478
      if (TSDB_CODE_SUCCESS == code) {
356,152✔
479
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
356,152✔
480
      }
481
    } else {
482
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,647,840✔
483
      if (TSDB_CODE_SUCCESS == code) {
1,647,840✔
484
        code =
485
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,647,840✔
486
      }
487
      if (TSDB_CODE_SUCCESS == code) {
1,647,840✔
488
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
3,291,859✔
489
                                      pClause->tableName, AUTH_TYPE_WRITE, pCxt->pMetaCache);
1,647,840✔
490
      }
491
    }
492
    if (TSDB_CODE_SUCCESS != code) {
2,003,992✔
493
      break;
×
494
    }
495
  }
496
  return code;
1,717,905✔
497
}
498

499
static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) {
187,889✔
500
  if (pStmt->withOpt) {
187,889✔
501
    return reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
131,532✔
502
  }
503
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
56,357✔
504
                                AUTH_TYPE_WRITE, pCxt->pMetaCache);
505
}
506

507
static int32_t collectMetaKeyFromDropVtable(SCollectMetaKeyCxt* pCxt, SDropVirtualTableStmt* pStmt) {
78,965✔
508
  int32_t code = TSDB_CODE_SUCCESS;
78,965✔
509
  if (pStmt->withOpt) {
78,965✔
510
    code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
×
511
    if (TSDB_CODE_SUCCESS == code) {
×
512
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
513
    }
514
    if (TSDB_CODE_SUCCESS == code) {
×
515
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
516
    }
517
  } else {
518
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
78,965✔
519
    if (TSDB_CODE_SUCCESS == code) {
78,965✔
520
      code =
521
          reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
78,965✔
522
    }
523
    if (TSDB_CODE_SUCCESS == code) {
78,965✔
524
      code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
157,930✔
525
                                    pStmt->tableName, AUTH_TYPE_WRITE, pCxt->pMetaCache);
78,965✔
526
    }
527
  }
528
  return code;
78,965✔
529
}
530

531
static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
20,264,820✔
532
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
20,264,820✔
533
  if (TSDB_CODE_SUCCESS == code && (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType || TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL == pStmt->alterType)) {
20,264,820✔
534
    SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
8,741,272✔
535
    tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
8,741,272✔
536
    tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
8,741,272✔
537
    code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
8,741,272✔
538
  }
539
  if (TSDB_CODE_SUCCESS == code) {
20,264,820✔
540
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
20,264,820✔
541
  }
542
  if (TSDB_CODE_SUCCESS == code) {
20,264,820✔
543
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
20,264,820✔
544
  }
545
  if (TSDB_CODE_SUCCESS == code) {
20,264,820✔
546
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
20,264,820✔
547
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
548
  }
549
  return code;
20,264,820✔
550
}
551

552
static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
533,038✔
553
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
533,038✔
554
  if (TSDB_CODE_SUCCESS == code) {
533,038✔
555
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
533,038✔
556
  }
557
  if (TSDB_CODE_SUCCESS == code) {
533,038✔
558
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
533,038✔
559
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
560
  }
561
  return code;
533,038✔
562
}
563

564
static int32_t collectMetaKeyFromAlterVtable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
422,557✔
565
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache));
422,557✔
566
  if (TSDB_ALTER_TABLE_UPDATE_TAG_VAL == pStmt->alterType || TSDB_ALTER_TABLE_UPDATE_MULTI_TAG_VAL == pStmt->alterType) {
422,557✔
567
    SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
34,251✔
568
    tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
34,251✔
569
    tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
34,251✔
570
    PAR_ERR_RET(catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name));
34,251✔
571
  }
572
  PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
422,557✔
573
  PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache));
422,557✔
574
  PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
422,557✔
575
                                     AUTH_TYPE_WRITE, pCxt->pMetaCache));
576
  if (pStmt->alterType == TSDB_ALTER_TABLE_ALTER_COLUMN_REF || pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COLUMN_REF) {
422,557✔
577
    PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->refDbName, pStmt->refTableName, pCxt->pMetaCache));
162,055✔
578
    PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName, pStmt->refTableName,
162,055✔
579
                                       AUTH_TYPE_READ, pCxt->pMetaCache));
580
  }
581
  return TSDB_CODE_SUCCESS;
422,557✔
582
}
583

584
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
2,594,534✔
585
  return reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
2,594,534✔
586
}
587

588
static int32_t collectMetaKeyFromCreateIndex(SCollectMetaKeyCxt* pCxt, SCreateIndexStmt* pStmt) {
16,046✔
589
  int32_t code = TSDB_CODE_SUCCESS;
16,046✔
590
  if (INDEX_TYPE_SMA == pStmt->indexType || INDEX_TYPE_NORMAL == pStmt->indexType) {
16,046✔
591
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
16,046✔
592
    if (TSDB_CODE_SUCCESS == code) {
16,046✔
593
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
16,046✔
594
    }
595
    if (TSDB_CODE_SUCCESS == code) {
16,046✔
596
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
16,046✔
597
    }
598
    if (TSDB_CODE_SUCCESS == code) {
16,046✔
599
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
16,046✔
600
    }
601
  }
602
  return code;
16,046✔
603
}
604

605
static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) {
78,218✔
606
  if (NULL != pStmt->pQuery) {
78,218✔
607
    return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
62,730✔
608
  }
609
  if (NULL != pStmt->pWhere) {
15,488✔
610
    int32_t code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, AUTH_TYPE_READ);
5,405✔
611
    return code;
5,405✔
612
  }
613
  return TSDB_CODE_SUCCESS;
10,083✔
614
}
615

616
static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) {
4,827,357✔
617
  return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
4,827,357✔
618
}
619

620
static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStmt* pStmt) {
823,130✔
621
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
823,130✔
622
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
823,130✔
623
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
823,130✔
624
  int32_t code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name);
823,385✔
625
#ifdef TD_ENTERPRISE
626
  if (TSDB_CODE_SUCCESS == code) {
823,130✔
627
    char dbFName[TSDB_DB_FNAME_LEN];
809,252✔
628
    (void)tNameGetFullDbName(&name, dbFName);
823,385✔
629
    code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->tableName, 0);
823,385✔
630
  }
631
#endif
632
  if (TSDB_CODE_SUCCESS == code) {
823,385✔
633
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
823,385✔
634
  }
635
  return code;
823,385✔
636
}
637

638
static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) {
398,934✔
639
  int32_t code = TSDB_CODE_SUCCESS;
398,934✔
640

641
  if (strcmp(pStmt->targetTabName, "") != 0) {
398,934✔
642
    PAR_ERR_RET(reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache));
395,367✔
643
    (void)reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache);
395,367✔
644
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pCxt->pMetaCache));
395,367✔
645
  }
646
  PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache));
398,934✔
647
  SRealTableNode *pTriggerTable = (SRealTableNode*)((SStreamTriggerNode*)pStmt->pTrigger)->pTrigerTable;
398,934✔
648
  if (pTriggerTable) {
398,934✔
649
    SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .tbnameCollect = true, .errCode = TSDB_CODE_SUCCESS};
391,004✔
650
    cxt.pComCxt->collectVStbRefDbs = true;
391,004✔
651
    EDealRes res = collectMetaKeyFromRealTable(&cxt, pTriggerTable);
391,004✔
652
    PAR_ERR_RET(cxt.errCode);
391,004✔
653
    PAR_ERR_RET(reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
391,004✔
654
    PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache));
391,004✔
655
  }
656
  if (pStmt->pQuery) {
398,934✔
657
    PAR_ERR_RET(collectMetaKeyFromQuery(pCxt, pStmt->pQuery));
395,367✔
658
  }
659

660
  return code;
398,934✔
661
}
662

663
static int32_t collectMetaKeyFromRecalculateStream(SCollectMetaKeyCxt* pCxt, SRecalcStreamStmt* pStmt) {
16,164✔
664
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache);
16,164✔
665
}
666

667

668
static int32_t collectMetaKeyFromShowDnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
31,213✔
669
  if (pCxt->pParseCxt->enableSysInfo) {
31,213✔
670
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DNODES,
29,757✔
671
                                   pCxt->pMetaCache);
672
  }
673
  return TSDB_CODE_SUCCESS;
1,456✔
674
}
675

676
static int32_t collectMetaKeyFromShowMnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
354,311✔
677
  if (pCxt->pParseCxt->enableSysInfo) {
354,311✔
678
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MNODES,
352,494✔
679
                                   pCxt->pMetaCache);
680
  }
681
  return TSDB_CODE_SUCCESS;
1,817✔
682
}
683

684
static int32_t collectMetaKeyFromShowModules(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
685
  if (pCxt->pParseCxt->enableSysInfo) {
×
686
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MODULES,
×
687
                                   pCxt->pMetaCache);
688
  }
689
  return TSDB_CODE_SUCCESS;
×
690
}
691

692
static int32_t collectMetaKeyFromShowQnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,914✔
693
  if (pCxt->pParseCxt->enableSysInfo) {
2,914✔
694
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_QNODES,
1,458✔
695
                                   pCxt->pMetaCache);
696
  }
697
  return TSDB_CODE_SUCCESS;
1,456✔
698
}
699

700
static int32_t collectMetaKeyFromShowSnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
105,962✔
701
  if (pCxt->pParseCxt->enableSysInfo) {
105,962✔
702
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SNODES,
103,050✔
703
                                   pCxt->pMetaCache);
704
  }
705
  return TSDB_CODE_SUCCESS;
2,912✔
706
}
707

708
static int32_t collectMetaKeyFromShowAnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
364✔
709
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES,
364✔
710
                                 pCxt->pMetaCache);
711
}
712

713
static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
714
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES_FULL,
×
715
                                 pCxt->pMetaCache);
716
}
717

718
static int32_t collectMetaKeyFromShowBnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
95,777✔
719
  if (pCxt->pParseCxt->enableSysInfo) {
95,777✔
720
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BNODES,
95,777✔
721
                                   pCxt->pMetaCache);
722
  }
723
  return TSDB_CODE_SUCCESS;
×
724
}
725

726
static int32_t collectMetaKeyFromShowBackupNodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
727
  if (pCxt->pParseCxt->enableSysInfo) {
×
728
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BACKUP_NODES,
×
729
                                   pCxt->pMetaCache);
730
  }
731
  return TSDB_CODE_SUCCESS;
×
732
}
733

734
static int32_t collectMetaKeyFromShowArbGroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
629✔
735
  if (pCxt->pParseCxt->enableSysInfo) {
629✔
736
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ARBGROUPS,
629✔
737
                                   pCxt->pMetaCache);
738
  }
739
  return TSDB_CODE_SUCCESS;
×
740
}
741

742
static int32_t collectMetaKeyFromShowCluster(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
3,646✔
743
  if (pCxt->pParseCxt->enableSysInfo) {
3,646✔
744
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CLUSTER,
2,190✔
745
                                   pCxt->pMetaCache);
746
  }
747
  return TSDB_CODE_SUCCESS;
1,456✔
748
}
749

750
static int32_t collectMetaKeyFromShowDatabases(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
206,611✔
751
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DATABASES,
206,611✔
752
                                 pCxt->pMetaCache);
753
}
754

755
static int32_t collectMetaKeyFromShowFunctions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
14,573✔
756
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FUNCTIONS,
14,573✔
757
                                 pCxt->pMetaCache);
758
}
759

760
static int32_t collectMetaKeyFromShowIndexes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
9,965✔
761
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_INDEXES,
9,965✔
762
                                 pCxt->pMetaCache);
763
}
764

765
static int32_t collectMetaKeyFromShowStables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
280,749✔
766
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STABLES,
280,749✔
767
                                         pCxt->pMetaCache);
768
  if (TSDB_CODE_SUCCESS == code) {
280,749✔
769
    code =
770
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
280,749✔
771
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
772
  }
773
  return code;
280,749✔
774
}
775

776
static int32_t collectMetaKeyFromShowStreams(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
122,360✔
777
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STREAMS,
122,360✔
778
                                 pCxt->pMetaCache);
779
  if (TSDB_CODE_SUCCESS == code) {
122,360✔
780
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
122,360✔
781
  }
782
  if (TSDB_CODE_SUCCESS == code) {
122,360✔
783
    code =
784
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
122,360✔
785
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
786
  }
787
  return code;
122,360✔
788
}
789

790
static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
378,633✔
791
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TABLES,
378,633✔
792
                                         pCxt->pMetaCache);
793
  if (TSDB_CODE_SUCCESS == code) {
378,633✔
794
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
378,633✔
795
  }
796
  if (TSDB_CODE_SUCCESS == code) {
378,633✔
797
    code =
798
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
378,633✔
799
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
800
  }
801
  return code;
378,633✔
802
}
803

804
static int32_t collectMetaKeyFromShowFilesets(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
805
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FILESETS,
×
806
                                         pCxt->pMetaCache);
807
  if (TSDB_CODE_SUCCESS == code) {
×
808
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
809
  }
810
  if (TSDB_CODE_SUCCESS == code) {
×
811
    code =
812
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
×
813
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
814
  }
815
  return code;
×
816
}
817

818
static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
711,734✔
819
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS,
711,734✔
820
                                         pCxt->pMetaCache);
821
  if (TSDB_CODE_SUCCESS == code) {
711,734✔
822
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,423,468✔
823
                                   ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
711,734✔
824
  }
825
  if (TSDB_CODE_SUCCESS == code) {
711,734✔
826
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
711,734✔
827
  }
828
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) {
711,734✔
829
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
1,423,468✔
830
                                     ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
711,734✔
831
  }
832
  return code;
711,734✔
833
}
834

835
static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) {
9,725✔
836
  return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal,
9,725✔
837
                                         ((SValueNode*)pStmt->pTbName)->literal, AUTH_TYPE_READ);
9,725✔
838
}
839

840
static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8,655✔
841
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS,
8,655✔
842
                                 pCxt->pMetaCache);
843
}
844

845
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
846
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL,
×
847
                                 pCxt->pMetaCache);
848
}
849

850
static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,470✔
851
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES,
4,470✔
852
                                 pCxt->pMetaCache);
853
}
854

855
static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
242,334✔
856
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
242,334✔
857
                                         pCxt->pMetaCache);
858
  if (TSDB_CODE_SUCCESS == code) {
242,334✔
859
    // just to verify whether the database exists
860
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
242,334✔
861
  }
862
  return code;
242,334✔
863
}
864

865
static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
25,030✔
866
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS,
25,030✔
867
                                 pCxt->pMetaCache);
868
}
869

870
static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8,973✔
871
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONSUMERS,
8,973✔
872
                                 pCxt->pMetaCache);
873
}
874

875
static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,914✔
876
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONNECTIONS,
2,914✔
877
                                 pCxt->pMetaCache);
878
}
879

880
static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,914✔
881
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES,
2,914✔
882
                                 pCxt->pMetaCache);
883
}
884

885
static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
45,118✔
886
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS,
45,118✔
887
                                 pCxt->pMetaCache);
888
}
889

890
static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) {
118,157✔
891
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
118,157✔
892
                                         TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache);
893
  if (TSDB_CODE_SUCCESS == code) {
118,157✔
894
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
118,157✔
895
  }
896
  return code;
118,157✔
897
}
898

899
static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) {
2,608✔
900
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES,
2,608✔
901
                                 pCxt->pMetaCache);
902
}
903

904
static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
5,501✔
905
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USER_PRIVILEGES,
5,501✔
906
                                 pCxt->pMetaCache);
907
}
908

909
static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
17,289✔
910
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS,
17,289✔
911
                                         pCxt->pMetaCache);
912
  if (TSDB_CODE_SUCCESS == code) {
17,289✔
913
    code =
914
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
17,289✔
915
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
916
  }
917
  return code;
17,289✔
918
}
919

920
static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
427,016✔
921
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS,
427,016✔
922
                                         pCxt->pMetaCache);
923
  return code;
427,016✔
924
}
925

926
static int32_t collectMetaKeyFromShowScans(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
5,547✔
927
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SCANS,
5,547✔
928
                                         pCxt->pMetaCache);
929
  return code;
5,547✔
930
}
931

932
static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
69,666✔
933
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
69,666✔
934
                                         TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache);
935
  return code;
69,666✔
936
}
937

938
static int32_t collectMetaKeyFromShowScanDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
4,128✔
939
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
4,128✔
940
                                         TSDB_INS_TABLE_SCAN_DETAILS, pCxt->pMetaCache);
941
  return code;
4,128✔
942
}
943

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

950
static int32_t collectMetaKeyFromShowTokens(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
951
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOKENS,
×
952
                                         pCxt->pMetaCache);
953
  return code;
×
954
}
955

956
static int32_t collectMetaKeyFromShowTransactionDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
685✔
957
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
685✔
958
                                         TSDB_INS_TABLE_TRANSACTION_DETAILS, pCxt->pMetaCache);
959
  return code;
685✔
960
}
961

962
static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,548✔
963
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_FULL,
2,548✔
964
                                 pCxt->pMetaCache);
965
}
966

967
static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,548✔
968
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_LOGS,
2,548✔
969
                                 pCxt->pMetaCache);
970
}
971

972
static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,914✔
973
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES,
2,914✔
974
                                 pCxt->pMetaCache);
975
}
976

977
static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
618✔
978
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS,
618✔
979
                                 pCxt->pMetaCache);
980
}
981

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

988
static int32_t collectMetaKeyFromShowMounts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
15,744✔
989
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MOUNTS,
15,744✔
990
                                 pCxt->pMetaCache);
991
}
992

993
static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) {
97,795✔
994
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
97,795✔
995
}
996

997
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
130,755✔
998
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
130,755✔
999
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
130,755✔
1000
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
130,755✔
1001
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
130,755✔
1002
  if (TSDB_CODE_SUCCESS == code) {
130,755✔
1003
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
130,755✔
1004
  }
1005
  if (TSDB_CODE_SUCCESS == code) {
130,755✔
1006
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
130,755✔
1007
  }
1008
  if (TSDB_CODE_SUCCESS == code) {
130,755✔
1009
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
130,755✔
1010
                                  AUTH_TYPE_READ, pCxt->pMetaCache);
1011
  }
1012
  return code;
130,755✔
1013
}
1014

1015
static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) {
9,358✔
1016
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
9,358✔
1017
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
9,358✔
1018
  tstrncpy(name.tname, pStmt->viewName, TSDB_TABLE_NAME_LEN);
9,358✔
1019
  char dbFName[TSDB_DB_FNAME_LEN];
9,358✔
1020
  (void)tNameGetFullDbName(&name, dbFName);
9,358✔
1021
  int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0);
9,358✔
1022
  if (TSDB_CODE_SUCCESS == code) {
9,358✔
1023
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
9,358✔
1024
                                      AUTH_TYPE_READ, pCxt->pMetaCache);
1025
  }
1026
  if (TSDB_CODE_SUCCESS == code) {
9,358✔
1027
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
9,358✔
1028
  }
1029
  pCxt->pMetaCache->forceFetchViewMeta = true;
9,358✔
1030
  return code;
9,358✔
1031
}
1032

1033
static int32_t collectMetaKeyFromShowCreateRsma(SCollectMetaKeyCxt* pCxt, SShowCreateRsmaStmt* pStmt) { return 0; }
2,436✔
1034

1035
static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,914✔
1036
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS,
2,914✔
1037
                                 pCxt->pMetaCache);
1038
}
1039

1040
static int32_t collectMetaKeyFromShowInstances(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1041
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_INSTANCES,
×
1042
                                 pCxt->pMetaCache);
1043
}
1044

1045
static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
465,453✔
1046
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
465,453✔
1047
                                 pCxt->pMetaCache);
1048
}
1049

1050
static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) {
1,868,674✔
1051
  STableNode* pTable = (STableNode*)pStmt->pFromTable;
1,868,674✔
1052
  return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
1,868,674✔
1053
}
1054

1055
static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) {
123,940✔
1056
  STableNode* pTable = (STableNode*)pStmt->pTable;
123,940✔
1057
  int32_t     code = collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
123,940✔
1058
  if (TSDB_CODE_SUCCESS == code) {
123,940✔
1059
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
123,940✔
1060
  }
1061
  return code;
123,940✔
1062
}
1063

1064
static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) {
5,334✔
1065
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
5,334✔
1066
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
5,334✔
1067
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
5,334✔
1068
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
5,334✔
1069
  if (TSDB_CODE_SUCCESS == code) {
5,334✔
1070
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, AUTH_TYPE_READ);
5,334✔
1071
  }
1072
  return code;
5,334✔
1073
}
1074

1075
static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8,741✔
1076
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS,
8,741✔
1077
                                 pCxt->pMetaCache);
1078
}
1079

1080
static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) {
33,466✔
1081
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
33,466✔
1082
}
1083

1084
static int32_t collectMetaKeyFromRollupDatabase(SCollectMetaKeyCxt* pCxt, SRollupDatabaseStmt* pStmt) {
10,556✔
1085
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
10,556✔
1086
}
1087

1088
static int32_t collectMetaKeyFromScanDatabase(SCollectMetaKeyCxt* pCxt, SScanDatabaseStmt* pStmt) {
258✔
1089
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
258✔
1090
}
1091

1092
static int32_t collectMetaKeyFromTrimDatabase(SCollectMetaKeyCxt* pCxt, STrimDatabaseStmt* pStmt) {
8,925✔
1093
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
8,925✔
1094
}
1095

1096
static int32_t collectMetaKeyFromCompactVgroups(SCollectMetaKeyCxt* pCxt, SCompactVgroupsStmt* pStmt) {
7,875✔
1097
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
7,875✔
1098
}
1099

1100
static int32_t collectMetaKeyFromRollupVgroups(SCollectMetaKeyCxt* pCxt, SRollupVgroupsStmt* pStmt) {
4,872✔
1101
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
4,872✔
1102
}
1103

1104
static int32_t collectMetaKeyFromScanVgroups(SCollectMetaKeyCxt* pCxt, SScanVgroupsStmt* pStmt) {
645✔
1105
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
645✔
1106
}
1107

1108
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
488,820✔
1109
  if ('\0' == pStmt->tabName[0]) {
488,820✔
1110
    return TSDB_CODE_SUCCESS;
208,779✔
1111
  }
1112
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
280,041✔
1113
}
1114

1115
static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) {
442,754✔
1116
  if ('\0' == pStmt->tabName[0]) {
442,754✔
1117
    return TSDB_CODE_SUCCESS;
186,237✔
1118
  }
1119
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
256,517✔
1120
}
1121

1122
static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) {
261,496✔
1123
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
261,496✔
1124
  if (TSDB_CODE_SUCCESS == code) {
261,496✔
1125
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
261,496✔
1126
                                  pCxt->pMetaCache);
1127
  }
1128
  if (TSDB_CODE_SUCCESS == code) {
261,496✔
1129
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
261,496✔
1130
                                      AUTH_TYPE_ALTER, pCxt->pMetaCache);
1131
  }
1132
  return code;
261,496✔
1133
}
1134

1135
static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) {
190,284✔
1136
  int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
380,568✔
1137
                                            pStmt->viewName, AUTH_TYPE_ALTER, pCxt->pMetaCache);
190,284✔
1138
  pCxt->pMetaCache->forceFetchViewMeta = true;
190,284✔
1139
  return code;
190,284✔
1140
}
1141

1142
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
888✔
1143
  int32_t code;
1144
  if (pStmt->pOptions->recursiveTsma) {
888✔
1145
    // if creating recursive tsma, the tablename is tsmaName
1146
    code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
×
1147
    if (TSDB_CODE_SUCCESS == code) {
×
1148
      char dstTbName[TSDB_TABLE_NAME_LEN] = {0};
×
1149
      snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName);
×
1150
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
×
1151
      if (TSDB_CODE_SUCCESS == code) {
×
1152
        code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
×
1153
      }
1154
    }
1155
  } else {
1156
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
888✔
1157
    if (TSDB_CODE_SUCCESS == code) {
888✔
1158
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
888✔
1159
    }
1160
  }
1161
  if (TSDB_CODE_SUCCESS == code) {
888✔
1162
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
888✔
1163
  }
1164
  if (TSDB_CODE_SUCCESS == code) {
888✔
1165
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
888✔
1166
  }
1167
  return code;
888✔
1168
}
1169

1170
static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) {
×
1171
  int32_t code;
1172
  code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache);
×
1173
  if (TSDB_CODE_SUCCESS == code) {
×
1174
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1175
  }
1176
  if (TSDB_CODE_SUCCESS == code) {
×
1177
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
×
1178
  }
1179
  return code;
×
1180
}
1181

1182
static int32_t collectMetaKeyFromShowUsage(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
708✔
1183
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_DISK_USAGE,
708✔
1184
                                         pCxt->pMetaCache);
1185
  if (TSDB_CODE_SUCCESS == code) {
708✔
1186
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
708✔
1187
  }
1188
  if (TSDB_CODE_SUCCESS == code) {
708✔
1189
    code =
1190
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
708✔
1191
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
1192
  }
1193
  return code;
708✔
1194
}
1195

1196
static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
1197
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS,
×
1198
                                 pCxt->pMetaCache);
1199
}
1200

1201
static int32_t collectMetaKeyFromCreateRsmaStmt(SCollectMetaKeyCxt* pCxt, SCreateRsmaStmt* pStmt) {
120,988✔
1202
  int32_t code;
1203
  code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
120,988✔
1204
  if (TSDB_CODE_SUCCESS == code) {
120,988✔
1205
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
120,988✔
1206
  }
1207
  return code;
120,988✔
1208
}
1209

1210
static int32_t collectMetaKeyFromDropRsmaStmt(SCollectMetaKeyCxt* pCxt, SDropRsmaStmt* pStmt) {
2,436✔
1211
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
2,436✔
1212
}
1213

1214
static int32_t collectMetaKeyFromAlterRsmaStmt(SCollectMetaKeyCxt* pCxt, SAlterRsmaStmt* pStmt) {
21,924✔
1215
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
21,924✔
1216
}
1217

1218
static int32_t collectMetaKeyFromShowRsmasStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
14,616✔
1219
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RSMAS,
14,616✔
1220
                                 pCxt->pMetaCache);
1221
}
1222

1223
static int32_t collectMetaKeyFromShowRetentionsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
46,284✔
1224
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTIONS,
46,284✔
1225
                                 pCxt->pMetaCache);
1226
}
1227

1228
static int32_t collectMetaKeyFromShowRetentionDetailsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2,436✔
1229
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTION_DETAILS,
2,436✔
1230
                                 pCxt->pMetaCache);
1231
}
1232

1233
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
9,456✔
1234
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
9,456✔
1235
                                         pCxt->pMetaCache);
1236
  if (TSDB_CODE_SUCCESS == code && pStmt->dbName[0]) {
9,456✔
1237
    // just to verify whether the database exists
1238
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
3,540✔
1239
  }
1240
  return code;
9,456✔
1241
}
1242

1243
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
351,696,218✔
1244
  pCxt->pStmt = pStmt;
351,696,218✔
1245
  switch (nodeType(pStmt)) {
351,710,429✔
1246
    case QUERY_NODE_SET_OPERATOR:
6,879,890✔
1247
      return collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
6,879,890✔
1248
    case QUERY_NODE_SELECT_STMT:
239,785,615✔
1249
      return collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
239,785,615✔
1250
    case QUERY_NODE_ALTER_DATABASE_STMT:
206,211✔
1251
      return collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
206,211✔
1252
    case QUERY_NODE_FLUSH_DATABASE_STMT:
2,058,097✔
1253
      return collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
2,058,097✔
1254
    case QUERY_NODE_CREATE_TABLE_STMT:
21,600,152✔
1255
      return collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
21,600,152✔
1256
    case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT:
145,942✔
1257
      return collectMetaKeyFromCreateVTable(pCxt, (SCreateVTableStmt*)pStmt);
145,942✔
1258
    case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT:
264,692✔
1259
      return collectMetaKeyFromCreateVSubTable(pCxt, (SCreateVSubTableStmt*)pStmt);
264,692✔
1260
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
34,631,844✔
1261
      return collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
34,631,844✔
1262
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
1,470✔
1263
      return collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
1,470✔
1264
    case QUERY_NODE_DROP_TABLE_STMT:
1,717,905✔
1265
      return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
1,717,905✔
1266
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
187,889✔
1267
      return collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
187,889✔
1268
    case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT:
78,965✔
1269
      return collectMetaKeyFromDropVtable(pCxt, (SDropVirtualTableStmt*)pStmt);
78,965✔
1270
    case QUERY_NODE_ALTER_TABLE_STMT:
20,264,820✔
1271
      return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
20,264,820✔
1272
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
533,038✔
1273
      return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
533,038✔
1274
    case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT:
422,557✔
1275
      return collectMetaKeyFromAlterVtable(pCxt, (SAlterTableStmt*)pStmt);
422,557✔
1276
    case QUERY_NODE_USE_DATABASE_STMT:
2,594,534✔
1277
      return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
2,594,534✔
1278
    case QUERY_NODE_CREATE_INDEX_STMT:
16,046✔
1279
      return collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
16,046✔
1280
    case QUERY_NODE_CREATE_TOPIC_STMT:
78,218✔
1281
      return collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
78,218✔
1282
    case QUERY_NODE_EXPLAIN_STMT:
4,827,357✔
1283
      return collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
4,827,357✔
1284
    case QUERY_NODE_DESCRIBE_STMT:
823,130✔
1285
      return collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
823,130✔
1286
    case QUERY_NODE_COMPACT_DATABASE_STMT:
33,466✔
1287
      return collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
33,466✔
1288
    case QUERY_NODE_ROLLUP_DATABASE_STMT:
10,556✔
1289
      return collectMetaKeyFromRollupDatabase(pCxt, (SRollupDatabaseStmt*)pStmt);
10,556✔
1290
    case QUERY_NODE_SCAN_DATABASE_STMT:
258✔
1291
      return collectMetaKeyFromScanDatabase(pCxt, (SScanDatabaseStmt*)pStmt);
258✔
1292
    case QUERY_NODE_TRIM_DATABASE_STMT:
8,925✔
1293
      return collectMetaKeyFromTrimDatabase(pCxt, (STrimDatabaseStmt*)pStmt);
8,925✔
1294
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
7,875✔
1295
      return collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt);
7,875✔
1296
    case QUERY_NODE_ROLLUP_VGROUPS_STMT:
4,872✔
1297
      return collectMetaKeyFromRollupVgroups(pCxt, (SRollupVgroupsStmt*)pStmt);
4,872✔
1298
    case QUERY_NODE_SCAN_VGROUPS_STMT:
645✔
1299
      return collectMetaKeyFromScanVgroups(pCxt, (SScanVgroupsStmt*)pStmt);
645✔
1300
    case QUERY_NODE_CREATE_STREAM_STMT:
398,934✔
1301
      return collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
398,934✔
1302
    case QUERY_NODE_RECALCULATE_STREAM_STMT:
16,164✔
1303
      return collectMetaKeyFromRecalculateStream(pCxt, (SRecalcStreamStmt*)pStmt);
16,164✔
1304
    case QUERY_NODE_GRANT_STMT:
488,820✔
1305
      return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
488,820✔
1306
    case QUERY_NODE_REVOKE_STMT:
442,754✔
1307
      return collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
442,754✔
1308
    case QUERY_NODE_SHOW_DNODES_STMT:
31,213✔
1309
      return collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
31,213✔
1310
    case QUERY_NODE_SHOW_MNODES_STMT:
354,311✔
1311
      return collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
354,311✔
1312
    case QUERY_NODE_SHOW_MODULES_STMT:
×
1313
      return collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
1314
    case QUERY_NODE_SHOW_QNODES_STMT:
2,914✔
1315
      return collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
2,914✔
1316
    case QUERY_NODE_SHOW_SNODES_STMT:
105,962✔
1317
      return collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
105,962✔
1318
    case QUERY_NODE_SHOW_ANODES_STMT:
364✔
1319
      return collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
364✔
1320
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
1321
      return collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
1322
    case QUERY_NODE_SHOW_BNODES_STMT:
95,777✔
1323
      return collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
95,777✔
1324
    case QUERY_NODE_SHOW_BACKUP_NODES_STMT:
×
1325
      return collectMetaKeyFromShowBackupNodes(pCxt, (SShowStmt*)pStmt);
×
1326
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
629✔
1327
      return collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
629✔
1328
    case QUERY_NODE_SHOW_CLUSTER_STMT:
3,646✔
1329
      return collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
3,646✔
1330
    case QUERY_NODE_SHOW_DATABASES_STMT:
206,611✔
1331
      return collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
206,611✔
1332
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
14,573✔
1333
      return collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
14,573✔
1334
    case QUERY_NODE_SHOW_INDEXES_STMT:
9,965✔
1335
      return collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
9,965✔
1336
    case QUERY_NODE_SHOW_STABLES_STMT:
280,749✔
1337
      return collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
280,749✔
1338
    case QUERY_NODE_SHOW_STREAMS_STMT:
122,360✔
1339
      return collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
122,360✔
1340
    case QUERY_NODE_SHOW_TABLES_STMT:
378,633✔
1341
    case QUERY_NODE_SHOW_VTABLES_STMT:
1342
      return collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
378,633✔
1343
    case QUERY_NODE_SHOW_FILESETS_STMT:
×
1344
      return collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt);
×
1345
    case QUERY_NODE_SHOW_TAGS_STMT:
711,734✔
1346
      return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
711,734✔
1347
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
9,725✔
1348
      return collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
9,725✔
1349
    case QUERY_NODE_SHOW_USERS_STMT:
8,655✔
1350
      return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
8,655✔
1351
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
1352
      return collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
1353
    case QUERY_NODE_SHOW_LICENCES_STMT:
4,470✔
1354
      return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
4,470✔
1355
    case QUERY_NODE_SHOW_VGROUPS_STMT:
242,334✔
1356
      return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
242,334✔
1357
    case QUERY_NODE_SHOW_TOPICS_STMT:
25,030✔
1358
      return collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
25,030✔
1359
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
8,973✔
1360
      return collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
8,973✔
1361
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
2,914✔
1362
      return collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
2,914✔
1363
    case QUERY_NODE_SHOW_QUERIES_STMT:
2,914✔
1364
      return collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
2,914✔
1365
    case QUERY_NODE_SHOW_VARIABLES_STMT:
45,118✔
1366
      return collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
45,118✔
1367
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
118,157✔
1368
      return collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
118,157✔
1369
    case QUERY_NODE_SHOW_VNODES_STMT:
2,608✔
1370
      return collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
2,608✔
1371
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
5,501✔
1372
      return collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
5,501✔
1373
    case QUERY_NODE_SHOW_VIEWS_STMT:
17,289✔
1374
      return collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
17,289✔
1375
    case QUERY_NODE_SHOW_COMPACTS_STMT:
427,016✔
1376
      return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
427,016✔
1377
    case QUERY_NODE_SHOW_SCANS_STMT:
5,547✔
1378
      return collectMetaKeyFromShowScans(pCxt, (SShowStmt*)pStmt);
5,547✔
1379
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
69,666✔
1380
      return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
69,666✔
1381
    case QUERY_NODE_SHOW_SCAN_DETAILS_STMT:
4,128✔
1382
      return collectMetaKeyFromShowScanDetails(pCxt, (SShowStmt*)pStmt);
4,128✔
1383
    case QUERY_NODE_SHOW_SSMIGRATES_STMT:
×
1384
      return collectMetaKeyFromShowSsMigrates(pCxt, (SShowStmt*)pStmt);
×
1385
    case QUERY_NODE_SHOW_TOKENS_STMT:
×
1386
      return collectMetaKeyFromShowTokens(pCxt, (SShowStmt*)pStmt);
×
1387
    case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT:
685✔
1388
      return collectMetaKeyFromShowTransactionDetails(pCxt, (SShowStmt*)pStmt);
685✔
1389
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
2,548✔
1390
      return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
2,548✔
1391
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
2,548✔
1392
      return collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
2,548✔
1393
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
2,914✔
1394
      return collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
2,914✔
1395
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
618✔
1396
      return collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
618✔
1397
    case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT:
×
1398
      return collectMetaKeyFromShowEncryptAlgorithms(pCxt, (SShowStmt*)pStmt);
×
1399
    case QUERY_NODE_SHOW_MOUNTS_STMT:
15,744✔
1400
      return collectMetaKeyFromShowMounts(pCxt, (SShowStmt*)pStmt);
15,744✔
1401
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
97,795✔
1402
      return collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
97,795✔
1403
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
130,755✔
1404
    case QUERY_NODE_SHOW_CREATE_VTABLE_STMT:
1405
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
1406
      return collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
130,755✔
1407
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
9,358✔
1408
      return collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
9,358✔
1409
    case QUERY_NODE_SHOW_CREATE_RSMA_STMT:
2,436✔
1410
      return collectMetaKeyFromShowCreateRsma(pCxt, (SShowCreateRsmaStmt*)pStmt);
2,436✔
1411
    case QUERY_NODE_SHOW_APPS_STMT:
2,914✔
1412
      return collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
2,914✔
1413
    case QUERY_NODE_SHOW_INSTANCES_STMT:
×
1414
      return collectMetaKeyFromShowInstances(pCxt, (SShowStmt*)pStmt);
×
1415
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
465,453✔
1416
      return collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
465,453✔
1417
    case QUERY_NODE_SHOW_USAGE_STMT:
708✔
1418
      return collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
708✔
1419
    case QUERY_NODE_DELETE_STMT:
1,868,674✔
1420
      return collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
1,868,674✔
1421
    case QUERY_NODE_INSERT_STMT:
123,940✔
1422
      return collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
123,940✔
1423
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
5,334✔
1424
      return collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
5,334✔
1425
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
8,741✔
1426
      return collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
8,741✔
1427
    case QUERY_NODE_CREATE_VIEW_STMT:
261,496✔
1428
      return collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
261,496✔
1429
    case QUERY_NODE_DROP_VIEW_STMT:
190,284✔
1430
      return collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
190,284✔
1431
    case QUERY_NODE_CREATE_TSMA_STMT:
888✔
1432
      return collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
888✔
1433
    case QUERY_NODE_DROP_TSMA_STMT:
×
1434
      return collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
×
1435
    case QUERY_NODE_SHOW_TSMAS_STMT:
×
1436
      return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
×
1437
    case QUERY_NODE_CREATE_RSMA_STMT:
120,988✔
1438
      return collectMetaKeyFromCreateRsmaStmt(pCxt, (SCreateRsmaStmt*)pStmt);
120,988✔
1439
    case QUERY_NODE_DROP_RSMA_STMT:
2,436✔
1440
      return collectMetaKeyFromDropRsmaStmt(pCxt, (SDropRsmaStmt*)pStmt);
2,436✔
1441
    case QUERY_NODE_ALTER_RSMA_STMT:
21,924✔
1442
      return collectMetaKeyFromAlterRsmaStmt(pCxt, (SAlterRsmaStmt*)pStmt);
21,924✔
1443
    case QUERY_NODE_SHOW_RSMAS_STMT:
14,616✔
1444
      return collectMetaKeyFromShowRsmasStmt(pCxt, (SShowStmt*)pStmt);
14,616✔
1445
    case QUERY_NODE_SHOW_RETENTIONS_STMT:
46,284✔
1446
      return collectMetaKeyFromShowRetentionsStmt(pCxt, (SShowStmt*)pStmt);
46,284✔
1447
    case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT:
2,436✔
1448
      return collectMetaKeyFromShowRetentionDetailsStmt(pCxt, (SShowStmt*)pStmt);
2,436✔
1449
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
9,456✔
1450
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
1451
      return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
9,456✔
1452
    default:
6,425,371✔
1453
      break;
6,425,371✔
1454
  }
1455
  return TSDB_CODE_SUCCESS;
6,425,371✔
1456
}
1457

1458
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
269,938,638✔
1459
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
269,938,638✔
1460
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
269,929,973✔
1461
}
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