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

taosdata / TDengine / #3558

17 Dec 2024 06:05AM UTC coverage: 59.778% (+1.6%) from 58.204%
#3558

push

travis-ci

web-flow
Merge pull request #29179 from taosdata/merge/mainto3.0

merge: form main to 3.0 branch

132787 of 287595 branches covered (46.17%)

Branch coverage included in aggregate %.

104 of 191 new or added lines in 5 files covered. (54.45%)

6085 existing lines in 168 files now uncovered.

209348 of 284746 relevant lines covered (73.52%)

8164844.48 hits per line

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

82.05
/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) {
982,130✔
33
  *pQuery = NULL;
982,130✔
34
  int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery);
982,130✔
35
  if (NULL == *pQuery) {
982,142!
36
    return code;
×
37
  }
38
  (*pQuery)->pRoot = pRootNode;
982,142✔
39
  (*pQuery)->placeholderNum = placeholderNo;
982,142✔
40
  TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues);
982,142✔
41
  (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE;
982,142✔
42

43
  return TSDB_CODE_SUCCESS;
982,142✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
1,003,858✔
47
  SAstCreateContext cxt;
48
  initAstCreateContext(pParseCxt, &cxt);
1,003,858✔
49
  void* pParser = ParseAlloc((FMalloc)taosMemMalloc);
1,003,876✔
50
  if (!pParser) return terrno;
1,003,874!
51
  int32_t i = 0;
1,003,874✔
52
  while (1) {
64,338,242✔
53
    SToken t0 = {0};
65,342,116✔
54
    if (cxt.pQueryCxt->pSql[i] == 0) {
65,342,116✔
55
      Parse(pParser, 0, t0, &cxt);
627,260✔
56
      goto abort_parse;
1,008,129✔
57
    }
58
    t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type);
64,714,856✔
59
    t0.z = (char*)(cxt.pQueryCxt->pSql + i);
64,707,952✔
60
    i += t0.n;
64,707,952✔
61

62
    switch (t0.type) {
64,707,952!
63
      case TK_NK_SPACE:
20,620,609✔
64
      case TK_NK_COMMENT: {
65
        break;
20,620,609✔
66
      }
67
      case TK_NK_SEMI: {
356,188✔
68
        Parse(pParser, 0, t0, &cxt);
356,188✔
69
        goto abort_parse;
356,187✔
70
      }
71
      case TK_NK_ILLEGAL: {
1,316✔
72
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
1,316✔
73
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
1,316✔
74
        goto abort_parse;
1,316✔
75
      }
76
      case TK_NK_OCT: {
×
77
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unsupported token: \"%s\"", t0.z);
×
78
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
×
79
        goto abort_parse;
×
80
      }
81
      default:
43,729,839✔
82
        // ParseTrace(stdout, "");
83
        Parse(pParser, t0.type, t0, &cxt);
43,729,839✔
84
        if (TSDB_CODE_SUCCESS != cxt.errCode) {
43,741,003✔
85
          goto abort_parse;
23,370✔
86
        }
87
    }
88
  }
89

90
abort_parse:
1,008,129✔
91
  ParseFree(pParser, (FFree)taosAutoMemoryFree);
1,008,129✔
92
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
1,003,866✔
93
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
982,142✔
94
    if (TSDB_CODE_SUCCESS != code) {
982,153!
95
      return code;
×
96
    }
97
  }
98
  taosArrayDestroy(cxt.pPlaceholderValues);
1,003,877✔
99
  return cxt.errCode;
1,003,866✔
100
}
101

102
typedef struct SCollectMetaKeyCxt {
103
  SParseContext*   pParseCxt;
104
  SParseMetaCache* pMetaCache;
105
  SNode*           pStmt;
106
} SCollectMetaKeyCxt;
107

108
typedef struct SCollectMetaKeyFromExprCxt {
109
  SCollectMetaKeyCxt* pComCxt;
110
  bool                hasLastRowOrLast;
111
  bool                tbnameCollect;
112
  int32_t             errCode;
113
} SCollectMetaKeyFromExprCxt;
114

115
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt);
116

117
static EDealRes collectMetaKeyFromFunction(SCollectMetaKeyFromExprCxt* pCxt, SFunctionNode* pFunc) {
2,729,772✔
118
  switch (fmGetFuncType(pFunc->functionName)) {
2,729,772✔
119
    case FUNCTION_TYPE_LAST_ROW:
22,518✔
120
    case FUNCTION_TYPE_LAST:
121
      pCxt->hasLastRowOrLast = true;
22,518✔
122
      break;
22,518✔
123
    case FUNCTION_TYPE_UDF:
217✔
124
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
217✔
125
      break;
216✔
126
    default:
2,707,058✔
127
      break;
2,707,058✔
128
  }
129
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
2,729,792!
130
}
131

132
static bool needGetTableIndex(SNode* pStmt) {
989,585✔
133
  if (QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && QUERY_NODE_SELECT_STMT == nodeType(pStmt)) {
989,585✔
134
    SSelectStmt* pSelect = (SSelectStmt*)pStmt;
13,125✔
135
    return (NULL != pSelect->pWindow && QUERY_NODE_INTERVAL_WINDOW == nodeType(pSelect->pWindow));
13,125!
136
  }
137
  return false;
976,460✔
138
}
139

140
static int32_t collectMetaKeyFromInsTagsImpl(SCollectMetaKeyCxt* pCxt, SName* pName) {
8,360✔
141
  if (0 == pName->type) {
8,360✔
142
    return TSDB_CODE_SUCCESS;
7,464✔
143
  }
144
  if (TSDB_DB_NAME_T == pName->type) {
896✔
145
    return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache);
216✔
146
  }
147
  return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache);
680✔
148
}
149

150
static int32_t collectMetaKeyFromInsTags(SCollectMetaKeyCxt* pCxt) {
8,360✔
151
  SSelectStmt* pSelect = (SSelectStmt*)pCxt->pStmt;
8,360✔
152
  SName        name = {0};
8,360✔
153
  int32_t      code = getVnodeSysTableTargetName(pCxt->pParseCxt->acctId, pSelect->pWhere, &name);
8,360✔
154
  if (TSDB_CODE_SUCCESS == code) {
8,360!
155
    code = collectMetaKeyFromInsTagsImpl(pCxt, &name);
8,360✔
156
  }
157
  return code;
8,360✔
158
}
159

160
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
989,557✔
161
                                               AUTH_TYPE authType) {
162
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
989,557✔
163
  if (TSDB_CODE_SUCCESS == code) {
989,592✔
164
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
989,591✔
165
  }
166
  if (TSDB_CODE_SUCCESS == code) {
989,593✔
167
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, authType,
989,592✔
168
                                  pCxt->pMetaCache);
169
  }
170
#ifdef TD_ENTERPRISE
171
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
989,591✔
172
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, authType,
444✔
173
                                  pCxt->pMetaCache);
174
  }
175
#endif
176
  if (TSDB_CODE_SUCCESS == code) {
989,591✔
177
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
989,589✔
178
  }
179
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
989,595✔
180
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
7,298✔
181
  }
182
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
989,587!
183
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
7✔
184
  }
185
  if (TSDB_CODE_SUCCESS == code &&
989,587✔
186
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
989,581✔
187
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_DISK_USAGE) ||
988,062✔
188
       0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS)) &&
981,230!
189
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
8,351!
190
    code = collectMetaKeyFromInsTags(pCxt);
8,360✔
191
  }
192
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
989,587!
193
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
13,126✔
194
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
13,125✔
195
  }
196
  return code;
989,589✔
197
}
198

199
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
941,548✔
200
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
941,548✔
201
                                                  AUTH_TYPE_READ);
202
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
941,576✔
203
}
204

205
static EDealRes collectMetaKeyFromTempTable(SCollectMetaKeyFromExprCxt* pCxt, STempTableNode* pTempTable) {
291,553✔
206
  pCxt->errCode = collectMetaKeyFromQuery(pCxt->pComCxt, pTempTable->pSubquery);
291,553✔
207
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
291,553!
208
}
209

210
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
1,047,312✔
211
  if (pOperator->opType != OP_TYPE_EQUAL) {
1,047,312✔
212
    return TSDB_CODE_SUCCESS;
973,701✔
213
  }
214

215
  SValueNode* pValueNode = NULL;
73,611✔
216
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
73,611✔
217
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
19,029✔
218
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
5,567✔
219
    pValueNode = (SValueNode*)pOperator->pRight;
5,562✔
220
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
68,049✔
221
             0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
250✔
222
             nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
5!
223
    pValueNode = (SValueNode*)pOperator->pLeft;
×
224
  } else {
225
    return TSDB_CODE_SUCCESS;
68,049✔
226
  }
227

228
  *ppTableName = pValueNode->literal;
5,562✔
229

230
  return TSDB_CODE_SUCCESS;
5,562✔
231
}
232

233
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
1,674,597✔
234
  if (!pCxt->tbnameCollect) {
1,674,597✔
235
    return DEAL_RES_CONTINUE;
627,287✔
236
  }
237

238
  char*   pTableName = NULL;
1,047,310✔
239
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
1,047,310✔
240
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
1,047,317!
241
  if (pTableName) {
1,047,317✔
242
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
5,562✔
243
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName,
5,562✔
244
                                                    pTableName, AUTH_TYPE_READ);
245
  }
246

247
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
1,047,317!
248
}
249

250
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
16,658,776✔
251
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
16,658,776✔
252
  switch (nodeType(pNode)) {
16,658,776✔
253
    case QUERY_NODE_FUNCTION:
2,729,791✔
254
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
2,729,791✔
255
    case QUERY_NODE_REAL_TABLE:
941,559✔
256
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
941,559✔
257
    case QUERY_NODE_TEMP_TABLE:
291,553✔
258
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
291,553✔
259
    case QUERY_NODE_OPERATOR:
1,674,615✔
260
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
1,674,615✔
261
    default:
11,021,258✔
262
      break;
11,021,258✔
263
  }
264
  return DEAL_RES_CONTINUE;
11,021,258✔
265
}
266

267
static int32_t collectMetaKeyFromExprs(SCollectMetaKeyCxt* pCxt, SNodeList* pList) {
78,496✔
268
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .errCode = TSDB_CODE_SUCCESS, .tbnameCollect = false};
78,496✔
269
  nodesWalkExprs(pList, collectMetaKeyFromExprImpl, &cxt);
78,496✔
270
  return cxt.errCode;
78,496✔
271
}
272

273
static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt) {
78,496✔
274
  int32_t code = collectMetaKeyFromQuery(pCxt, pStmt->pLeft);
78,496✔
275
  if (TSDB_CODE_SUCCESS == code) {
78,496!
276
    code = collectMetaKeyFromQuery(pCxt, pStmt->pRight);
78,496✔
277
  }
278
  if (TSDB_CODE_SUCCESS == code) {
78,496!
279
    code = collectMetaKeyFromExprs(pCxt, pStmt->pOrderByList);
78,496✔
280
  }
281
  return code;
78,496✔
282
}
283

284
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
20,291✔
285
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
20,291!
286
    return TSDB_CODE_SUCCESS;
5,229✔
287
  }
288
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
15,062✔
289
}
290

291
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
1,210,598✔
292
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
1,210,598✔
293
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
1,210,598✔
294
    cxt.tbnameCollect = true;
717,306✔
295
  }
296
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
1,210,598✔
297
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
1,210,625!
298
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
20,032✔
299
  }
300
  return cxt.errCode;
1,210,626✔
301
}
302

303
static int32_t collectMetaKeyFromAlterDatabase(SCollectMetaKeyCxt* pCxt, SAlterDatabaseStmt* pStmt) {
214✔
304
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
214✔
305
}
306

307
static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) {
5,043✔
308
  return reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
5,043✔
309
}
310

311
static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) {
17,200✔
312
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
17,200✔
313
  if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) {
17,200!
314
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
12,366✔
315
  }
316
  if (TSDB_CODE_SUCCESS == code) {
17,200!
317
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
17,200✔
318
                                  pCxt->pMetaCache);
319
  }
320
  return code;
17,200✔
321
}
322

323
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
26,171✔
324
  int32_t code = TSDB_CODE_SUCCESS;
26,171✔
325
  SNode*  pNode = NULL;
26,171✔
326
  FOREACH(pNode, pStmt->pSubTables) {
85,537!
327
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
59,364!
328
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
59,364✔
329
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
59,364✔
330
      if (TSDB_CODE_SUCCESS == code) {
59,365!
331
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
59,365✔
332
                                       pCxt->pMetaCache);
333
      }
334
      if (TSDB_CODE_SUCCESS == code) {
59,368!
335
        code =
336
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
59,368✔
337
      }
338
      if (TSDB_CODE_SUCCESS == code) {
59,378!
339
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
59,378✔
340
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
341
      }
342
    } else {
343
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
344
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
345
      if (TSDB_CODE_SUCCESS == code) {
×
346
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
347
                                       pCxt->pMetaCache);
348
      }
349
      if (TSDB_CODE_SUCCESS == code) {
×
350
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
351
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
352
      }
353
    }
354

355
    if (TSDB_CODE_SUCCESS != code) {
59,366!
356
      break;
×
357
    }
358
  }
359
  return code;
26,173✔
360
}
361

362
static int32_t collectMetaKeyFromCreateSubTableFromFile(SCollectMetaKeyCxt*            pCxt,
×
363
                                                        SCreateSubTableFromFileClause* pClause) {
364
  int32_t code = TSDB_CODE_SUCCESS;
×
365
  SNode*  pNode = NULL;
×
366

367
  code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
368
  if (TSDB_CODE_SUCCESS == code) {
×
369
    code =
370
        reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, pCxt->pMetaCache);
×
371
  }
372
  if (TSDB_CODE_SUCCESS == code) {
×
373
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
374
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
375
  }
376

377
  return code;
×
378
}
379

380
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
2,205✔
381
  int32_t code = TSDB_CODE_SUCCESS;
2,205✔
382
  SNode*  pNode = NULL;
2,205✔
383
  FOREACH(pNode, pStmt->pTables) {
5,222!
384
    SDropTableClause* pClause = (SDropTableClause*)pNode;
3,017✔
385
    if (pStmt->withOpt) {
3,017✔
386
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
821✔
387
      if (TSDB_CODE_SUCCESS == code) {
821!
388
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
821✔
389
      }
390
      if (TSDB_CODE_SUCCESS == code) {
821!
391
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
821✔
392
      }
393
    } else {
394
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
2,196✔
395
      if (TSDB_CODE_SUCCESS == code) {
2,196!
396
        code =
397
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
2,196✔
398
      }
399
      if (TSDB_CODE_SUCCESS == code) {
2,196!
400
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
2,196✔
401
                                      pClause->tableName, AUTH_TYPE_WRITE, pCxt->pMetaCache);
2,196✔
402
      }
403
    }
404
    if (TSDB_CODE_SUCCESS != code) {
3,017!
405
      break;
×
406
    }
407
  }
408
  return code;
2,205✔
409
}
410

411
static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) {
236✔
412
  if (pStmt->withOpt) {
236✔
413
    return reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
213✔
414
  }
415
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
23✔
416
                                AUTH_TYPE_WRITE, pCxt->pMetaCache);
417
}
418

419
static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
4,153✔
420
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
4,153✔
421
  if (TSDB_CODE_SUCCESS == code) {
4,153!
422
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
4,153✔
423
  }
424
  if (TSDB_CODE_SUCCESS == code) {
4,153!
425
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
4,153✔
426
  }
427
  if (TSDB_CODE_SUCCESS == code) {
4,153!
428
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
4,153✔
429
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
430
  }
431
  return code;
4,153✔
432
}
433

434
static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) {
334✔
435
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
334✔
436
  if (TSDB_CODE_SUCCESS == code) {
334!
437
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
334✔
438
  }
439
  if (TSDB_CODE_SUCCESS == code) {
334!
440
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
334✔
441
                                  AUTH_TYPE_WRITE, pCxt->pMetaCache);
442
  }
443
  return code;
334✔
444
}
445

446
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
5,708✔
447
  return reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
5,708✔
448
}
449

450
static int32_t collectMetaKeyFromCreateIndex(SCollectMetaKeyCxt* pCxt, SCreateIndexStmt* pStmt) {
59✔
451
  int32_t code = TSDB_CODE_SUCCESS;
59✔
452
  if (INDEX_TYPE_SMA == pStmt->indexType || INDEX_TYPE_NORMAL == pStmt->indexType) {
59!
453
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
59✔
454
    if (TSDB_CODE_SUCCESS == code) {
59!
455
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
59✔
456
    }
457
    if (TSDB_CODE_SUCCESS == code) {
59!
458
      code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
59✔
459
    }
460
    if (TSDB_CODE_SUCCESS == code) {
59!
461
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
59✔
462
    }
463
  }
464
  return code;
59✔
465
}
466

467
static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) {
601✔
468
  if (NULL != pStmt->pQuery) {
601✔
469
    return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
479✔
470
  }
471
  if (NULL != pStmt->pWhere) {
122✔
472
    int32_t code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, AUTH_TYPE_READ);
21✔
473
    return code;
21✔
474
  }
475
  return TSDB_CODE_SUCCESS;
101✔
476
}
477

478
static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) {
106,190✔
479
  return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
106,190✔
480
}
481

482
static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStmt* pStmt) {
1,200✔
483
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
1,200✔
484
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
1,200✔
485
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
1,200✔
486
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
1,200✔
487
#ifdef TD_ENTERPRISE
488
  if (TSDB_CODE_SUCCESS == code) {
1,200!
489
    char dbFName[TSDB_DB_FNAME_LEN];
490
    (void)tNameGetFullDbName(&name, dbFName);
1,200✔
491
    code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->tableName, 0);
1,200✔
492
  }
493
#endif
494
  if (TSDB_CODE_SUCCESS == code) {
1,200!
495
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
1,200✔
496
  }
497
  return code;
1,200✔
498
}
499

500
static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) {
952✔
501
  int32_t code =
502
      reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache);
952✔
503
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pSubtable && NULL != pStmt->pQuery) {
952!
504
    SSelectStmt* pSelect = (SSelectStmt*)pStmt->pQuery;
282✔
505
    int32_t      code = nodesCloneNode(pStmt->pSubtable, &pSelect->pSubtable);
282✔
506
    if (NULL == pSelect->pSubtable) {
282!
507
      return code;
×
508
    }
509
  }
510
  if (TSDB_CODE_SUCCESS == code) {
952!
511
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
952✔
512
  }
513
  if (TSDB_CODE_SUCCESS == code && pStmt->pOptions->fillHistory) {
952!
514
    SSelectStmt* pSelect = (SSelectStmt*)pStmt->pQuery;
261✔
515
    code = reserveDbCfgForLastRow(pCxt, pSelect->pFromTable);
261✔
516
  }
517
  return code;
952✔
518
}
519

520
static int32_t collectMetaKeyFromShowDnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
92✔
521
  if (pCxt->pParseCxt->enableSysInfo) {
92✔
522
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DNODES,
88✔
523
                                   pCxt->pMetaCache);
524
  }
525
  return TSDB_CODE_SUCCESS;
4✔
526
}
527

528
static int32_t collectMetaKeyFromShowMnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
12✔
529
  if (pCxt->pParseCxt->enableSysInfo) {
12✔
530
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MNODES,
8✔
531
                                   pCxt->pMetaCache);
532
  }
533
  return TSDB_CODE_SUCCESS;
4✔
534
}
535

536
static int32_t collectMetaKeyFromShowModules(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
537
  if (pCxt->pParseCxt->enableSysInfo) {
×
538
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MODULES,
×
539
                                   pCxt->pMetaCache);
540
  }
541
  return TSDB_CODE_SUCCESS;
×
542
}
543

544
static int32_t collectMetaKeyFromShowQnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
21✔
545
  if (pCxt->pParseCxt->enableSysInfo) {
21✔
546
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_QNODES,
17✔
547
                                   pCxt->pMetaCache);
548
  }
549
  return TSDB_CODE_SUCCESS;
4✔
550
}
551

552
static int32_t collectMetaKeyFromShowSnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
35✔
553
  if (pCxt->pParseCxt->enableSysInfo) {
35✔
554
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SNODES,
27✔
555
                                   pCxt->pMetaCache);
556
  }
557
  return TSDB_CODE_SUCCESS;
8✔
558
}
559

560
static int32_t collectMetaKeyFromShowAnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
561
  if (pCxt->pParseCxt->enableSysInfo) {
×
562
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES,
×
563
                                   pCxt->pMetaCache);
564
  }
565
  return TSDB_CODE_SUCCESS;
×
566
}
567

568
static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
569
  if (pCxt->pParseCxt->enableSysInfo) {
×
570
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES_FULL,
×
571
                                   pCxt->pMetaCache);
572
  }
573
  return TSDB_CODE_SUCCESS;
×
574
}
575

576
static int32_t collectMetaKeyFromShowBnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
577
  if (pCxt->pParseCxt->enableSysInfo) {
×
578
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BNODES,
×
579
                                   pCxt->pMetaCache);
580
  }
581
  return TSDB_CODE_SUCCESS;
×
582
}
583

584
static int32_t collectMetaKeyFromShowArbGroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
585
  if (pCxt->pParseCxt->enableSysInfo) {
×
586
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ARBGROUPS,
×
587
                                   pCxt->pMetaCache);
588
  }
589
  return TSDB_CODE_SUCCESS;
×
590
}
591

592
static int32_t collectMetaKeyFromShowCluster(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
10✔
593
  if (pCxt->pParseCxt->enableSysInfo) {
10✔
594
    return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CLUSTER,
6✔
595
                                   pCxt->pMetaCache);
596
  }
597
  return TSDB_CODE_SUCCESS;
4✔
598
}
599

600
static int32_t collectMetaKeyFromShowDatabases(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
246✔
601
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DATABASES,
246✔
602
                                 pCxt->pMetaCache);
603
}
604

605
static int32_t collectMetaKeyFromShowFunctions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
18✔
606
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FUNCTIONS,
18✔
607
                                 pCxt->pMetaCache);
608
}
609

610
static int32_t collectMetaKeyFromShowIndexes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
20✔
611
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_INDEXES,
20✔
612
                                 pCxt->pMetaCache);
613
}
614

615
static int32_t collectMetaKeyFromShowStables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
213✔
616
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STABLES,
213✔
617
                                         pCxt->pMetaCache);
618
  if (TSDB_CODE_SUCCESS == code) {
213!
619
    code =
620
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
213✔
621
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
622
  }
623
  return code;
213✔
624
}
625

626
static int32_t collectMetaKeyFromShowStreams(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
204✔
627
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STREAMS,
204✔
628
                                 pCxt->pMetaCache);
629
}
630

631
static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,204✔
632
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TABLES,
1,204✔
633
                                         pCxt->pMetaCache);
634
  if (TSDB_CODE_SUCCESS == code) {
1,204!
635
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
1,204✔
636
  }
637
  if (TSDB_CODE_SUCCESS == code) {
1,204!
638
    code =
639
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
1,204✔
640
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
641
  }
642
  return code;
1,204✔
643
}
644

645
static int32_t collectMetaKeyFromShowFilesets(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
646
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FILESETS,
×
647
                                         pCxt->pMetaCache);
648
  if (TSDB_CODE_SUCCESS == code) {
×
649
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
650
  }
651
  if (TSDB_CODE_SUCCESS == code) {
×
652
    code =
653
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
×
654
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
655
  }
656
  return code;
×
657
}
658

659
static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
805✔
660
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS,
805✔
661
                                         pCxt->pMetaCache);
662
  if (TSDB_CODE_SUCCESS == code) {
805!
663
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
805✔
664
                                   ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
805✔
665
  }
666
  if (TSDB_CODE_SUCCESS == code) {
805!
667
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
805✔
668
  }
669
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) {
805!
670
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
805✔
671
                                     ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
805✔
672
  }
673
  return code;
805✔
674
}
675

676
static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) {
10✔
677
  return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal,
20✔
678
                                         ((SValueNode*)pStmt->pTbName)->literal, AUTH_TYPE_READ);
10✔
679
}
680

681
static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
15✔
682
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS,
15✔
683
                                 pCxt->pMetaCache);
684
}
685

686
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
687
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL,
×
688
                                 pCxt->pMetaCache);
689
}
690

691
static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
22✔
692
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES,
22✔
693
                                 pCxt->pMetaCache);
694
}
695

696
static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
481✔
697
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
481✔
698
                                         pCxt->pMetaCache);
699
  if (TSDB_CODE_SUCCESS == code) {
481!
700
    // just to verify whether the database exists
701
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
481✔
702
  }
703
  return code;
481✔
704
}
705

706
static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
30✔
707
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS,
30✔
708
                                 pCxt->pMetaCache);
709
}
710

711
static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
55✔
712
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONSUMERS,
55✔
713
                                 pCxt->pMetaCache);
714
}
715

716
static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
717
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONNECTIONS,
7✔
718
                                 pCxt->pMetaCache);
719
}
720

721
static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
722
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES,
7✔
723
                                 pCxt->pMetaCache);
724
}
725

726
static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
12✔
727
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS,
12✔
728
                                 pCxt->pMetaCache);
729
}
730

731
static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) {
344✔
732
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
344✔
733
                                         TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache);
734
  if (TSDB_CODE_SUCCESS == code) {
344!
735
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
344✔
736
  }
737
  return code;
344✔
738
}
739

740
static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) {
15✔
741
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES,
15✔
742
                                 pCxt->pMetaCache);
743
}
744

745
static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
16✔
746
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USER_PRIVILEGES,
16✔
747
                                 pCxt->pMetaCache);
748
}
749

750
static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
18✔
751
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS,
18✔
752
                                         pCxt->pMetaCache);
753
  if (TSDB_CODE_SUCCESS == code) {
18!
754
    code =
755
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
18✔
756
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
757
  }
758
  return code;
18✔
759
}
760

761
static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
98✔
762
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS,
98✔
763
                                         pCxt->pMetaCache);
764
  return code;
98✔
765
}
766

767
static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1✔
768
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1✔
769
                                         TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache);
770
  return code;
1✔
771
}
772

773
static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
774
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_FULL,
7✔
775
                                 pCxt->pMetaCache);
776
}
777

778
static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
779
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_LOGS,
7✔
780
                                 pCxt->pMetaCache);
781
}
782

783
static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8✔
784
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES,
8✔
785
                                 pCxt->pMetaCache);
786
}
787

788
static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
789
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS,
×
790
                                 pCxt->pMetaCache);
791
}
792

793
static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) {
24✔
794
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
24✔
795
}
796

797
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
100✔
798
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
100✔
799
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
100✔
800
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
100✔
801
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
100✔
802
  if (TSDB_CODE_SUCCESS == code) {
100!
803
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
100✔
804
  }
805
  if (TSDB_CODE_SUCCESS == code) {
100!
806
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
100✔
807
  }
808
  if (TSDB_CODE_SUCCESS == code) {
100!
809
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
100✔
810
                                  AUTH_TYPE_READ, pCxt->pMetaCache);
811
  }
812
  return code;
100✔
813
}
814

815
static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) {
12✔
816
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
12✔
817
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
12✔
818
  tstrncpy(name.tname, pStmt->viewName, TSDB_TABLE_NAME_LEN);
12✔
819
  char dbFName[TSDB_DB_FNAME_LEN];
820
  (void)tNameGetFullDbName(&name, dbFName);
12✔
821
  int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0);
12✔
822
  if (TSDB_CODE_SUCCESS == code) {
12!
823
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
12✔
824
                                      AUTH_TYPE_READ, pCxt->pMetaCache);
825
  }
826
  if (TSDB_CODE_SUCCESS == code) {
12!
827
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
12✔
828
  }
829
  pCxt->pMetaCache->forceFetchViewMeta = true;
12✔
830
  return code;
12✔
831
}
832

833
static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
834
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS,
7✔
835
                                 pCxt->pMetaCache);
836
}
837

838
static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
391✔
839
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
391✔
840
                                 pCxt->pMetaCache);
841
}
842

843
static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) {
42,294✔
844
  STableNode* pTable = (STableNode*)pStmt->pFromTable;
42,294✔
845
  return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
42,294✔
846
}
847

848
static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) {
117✔
849
  STableNode* pTable = (STableNode*)pStmt->pTable;
117✔
850
  int32_t     code = collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
117✔
851
  if (TSDB_CODE_SUCCESS == code) {
117!
852
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
117✔
853
  }
854
  return code;
117✔
855
}
856

857
static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) {
9✔
858
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
9✔
859
  tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN);
9✔
860
  tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN);
9✔
861
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
9✔
862
  if (TSDB_CODE_SUCCESS == code) {
9!
863
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, AUTH_TYPE_READ);
9✔
864
  }
865
  return code;
9✔
866
}
867

868
static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
75✔
869
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS,
75✔
870
                                 pCxt->pMetaCache);
871
}
872

873
static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) {
20✔
874
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
20✔
875
}
876

877
static int32_t collectMetaKeyFromCompactVgroups(SCollectMetaKeyCxt* pCxt, SCompactVgroupsStmt* pStmt) {
×
878
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
×
879
}
880

881
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
147✔
882
  if ('\0' == pStmt->tabName[0]) {
147✔
883
    return TSDB_CODE_SUCCESS;
100✔
884
  }
885
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
47✔
886
}
887

888
static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) {
81✔
889
  if ('\0' == pStmt->tabName[0]) {
81✔
890
    return TSDB_CODE_SUCCESS;
68✔
891
  }
892
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
13✔
893
}
894

895
static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) {
177✔
896
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
177✔
897
  if (TSDB_CODE_SUCCESS == code) {
177!
898
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
177✔
899
                                  pCxt->pMetaCache);
900
  }
901
  if (TSDB_CODE_SUCCESS == code) {
177!
902
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
177✔
903
                                      AUTH_TYPE_ALTER, pCxt->pMetaCache);
904
  }
905
  return code;
177✔
906
}
907

908
static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) {
118✔
909
  int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
118✔
910
                                            pStmt->viewName, AUTH_TYPE_ALTER, pCxt->pMetaCache);
118✔
911
  pCxt->pMetaCache->forceFetchViewMeta = true;
118✔
912
  return code;
118✔
913
}
914

915
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
354✔
916
  int32_t code;
917
  if (pStmt->pOptions->recursiveTsma) {
354✔
918
    // if creating recursive tsma, the tablename is tsmaName
919
    code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
126✔
920
    if (TSDB_CODE_SUCCESS == code) {
126!
921
      char dstTbName[TSDB_TABLE_NAME_LEN] = {0};
126✔
922
      snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName);
126✔
923
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
126✔
924
      if (TSDB_CODE_SUCCESS == code) {
126!
925
        code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
126✔
926
      }
927
    }
928
  } else {
929
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
228✔
930
    if (TSDB_CODE_SUCCESS == code) {
228!
931
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
228✔
932
    }
933
  }
934
  if (TSDB_CODE_SUCCESS == code) {
354!
935
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
354✔
936
  }
937
  if (TSDB_CODE_SUCCESS == code) {
354!
938
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
354✔
939
  }
940
  return code;
354✔
941
}
942

943
static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) {
172✔
944
  int32_t code;
945
  code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache);
172✔
946
  if (TSDB_CODE_SUCCESS == code) {
172!
947
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
172✔
948
  }
949
  if (TSDB_CODE_SUCCESS == code) {
172!
950
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
172✔
951
  }
952
  return code;
172✔
953
}
954

955
static int32_t collectMetaKeyFromShowUsage(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1✔
956
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_DISK_USAGE,
1✔
957
                                         pCxt->pMetaCache);
958
  if (TSDB_CODE_SUCCESS == code) {
1!
959
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
1✔
960
  }
961
  if (TSDB_CODE_SUCCESS == code) {
1!
962
    code =
963
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
1✔
964
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
965
  }
966
  return code;
1✔
967
}
968

UNCOV
969
static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
UNCOV
970
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS,
×
971
                                 pCxt->pMetaCache);
972
}
973

974
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
8✔
975
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
8✔
976
                                         pCxt->pMetaCache);
977
  if (TSDB_CODE_SUCCESS == code) {
8!
978
    // just to verify whether the database exists
979
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
8✔
980
  }
981
  return code;
8✔
982
}
983

984
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
1,537,283✔
985
  pCxt->pStmt = pStmt;
1,537,283✔
986
  switch (nodeType(pStmt)) {
1,537,283!
987
    case QUERY_NODE_SET_OPERATOR:
78,496✔
988
      return collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
78,496✔
989
    case QUERY_NODE_SELECT_STMT:
1,210,609✔
990
      return collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
1,210,609✔
991
    case QUERY_NODE_ALTER_DATABASE_STMT:
214✔
992
      return collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
214✔
993
    case QUERY_NODE_FLUSH_DATABASE_STMT:
5,043✔
994
      return collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
5,043✔
995
    case QUERY_NODE_CREATE_TABLE_STMT:
17,200✔
996
      return collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
17,200✔
997
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
26,171✔
998
      return collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
26,171✔
999
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
×
1000
      return collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
×
1001
    case QUERY_NODE_DROP_TABLE_STMT:
2,205✔
1002
      return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
2,205✔
1003
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
236✔
1004
      return collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
236✔
1005
    case QUERY_NODE_ALTER_TABLE_STMT:
4,153✔
1006
      return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
4,153✔
1007
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
334✔
1008
      return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
334✔
1009
    case QUERY_NODE_USE_DATABASE_STMT:
5,708✔
1010
      return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
5,708✔
1011
    case QUERY_NODE_CREATE_INDEX_STMT:
59✔
1012
      return collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
59✔
1013
    case QUERY_NODE_CREATE_TOPIC_STMT:
601✔
1014
      return collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
601✔
1015
    case QUERY_NODE_EXPLAIN_STMT:
106,190✔
1016
      return collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
106,190✔
1017
    case QUERY_NODE_DESCRIBE_STMT:
1,200✔
1018
      return collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
1,200✔
1019
    case QUERY_NODE_COMPACT_DATABASE_STMT:
20✔
1020
      return collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
20✔
1021
    case QUERY_NODE_COMPACT_VGROUPS_STMT:
×
1022
      return collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt);
×
1023
    case QUERY_NODE_CREATE_STREAM_STMT:
952✔
1024
      return collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
952✔
1025
    case QUERY_NODE_GRANT_STMT:
147✔
1026
      return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
147✔
1027
    case QUERY_NODE_REVOKE_STMT:
81✔
1028
      return collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
81✔
1029
    case QUERY_NODE_SHOW_DNODES_STMT:
92✔
1030
      return collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
92✔
1031
    case QUERY_NODE_SHOW_MNODES_STMT:
12✔
1032
      return collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
12✔
1033
    case QUERY_NODE_SHOW_MODULES_STMT:
×
1034
      return collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
1035
    case QUERY_NODE_SHOW_QNODES_STMT:
21✔
1036
      return collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
21✔
1037
    case QUERY_NODE_SHOW_SNODES_STMT:
35✔
1038
      return collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
35✔
1039
    case QUERY_NODE_SHOW_ANODES_STMT:
×
1040
      return collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
×
1041
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
1042
      return collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
1043
    case QUERY_NODE_SHOW_BNODES_STMT:
×
1044
      return collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
×
1045
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
1046
      return collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
×
1047
    case QUERY_NODE_SHOW_CLUSTER_STMT:
10✔
1048
      return collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
10✔
1049
    case QUERY_NODE_SHOW_DATABASES_STMT:
246✔
1050
      return collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
246✔
1051
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
18✔
1052
      return collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
18✔
1053
    case QUERY_NODE_SHOW_INDEXES_STMT:
20✔
1054
      return collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
20✔
1055
    case QUERY_NODE_SHOW_STABLES_STMT:
213✔
1056
      return collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
213✔
1057
    case QUERY_NODE_SHOW_STREAMS_STMT:
204✔
1058
      return collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
204✔
1059
    case QUERY_NODE_SHOW_TABLES_STMT:
1,204✔
1060
      return collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
1,204✔
1061
    case QUERY_NODE_SHOW_FILESETS_STMT:
×
1062
      return collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt);
×
1063
    case QUERY_NODE_SHOW_TAGS_STMT:
805✔
1064
      return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
805✔
1065
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
10✔
1066
      return collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
10✔
1067
    case QUERY_NODE_SHOW_USERS_STMT:
15✔
1068
      return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
15✔
1069
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
1070
      return collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
1071
    case QUERY_NODE_SHOW_LICENCES_STMT:
22✔
1072
      return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
22✔
1073
    case QUERY_NODE_SHOW_VGROUPS_STMT:
481✔
1074
      return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
481✔
1075
    case QUERY_NODE_SHOW_TOPICS_STMT:
30✔
1076
      return collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
30✔
1077
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
55✔
1078
      return collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
55✔
1079
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
7✔
1080
      return collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
7✔
1081
    case QUERY_NODE_SHOW_QUERIES_STMT:
7✔
1082
      return collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
7✔
1083
    case QUERY_NODE_SHOW_VARIABLES_STMT:
12✔
1084
      return collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
12✔
1085
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
344✔
1086
      return collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
344✔
1087
    case QUERY_NODE_SHOW_VNODES_STMT:
15✔
1088
      return collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
15✔
1089
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
16✔
1090
      return collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
16✔
1091
    case QUERY_NODE_SHOW_VIEWS_STMT:
18✔
1092
      return collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
18✔
1093
    case QUERY_NODE_SHOW_COMPACTS_STMT:
98✔
1094
      return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
98✔
1095
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
1✔
1096
      return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
1✔
1097
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
7✔
1098
      return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
7✔
1099
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
7✔
1100
      return collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
7✔
1101
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
8✔
1102
      return collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
8✔
1103
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
×
1104
      return collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
×
1105
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
24✔
1106
      return collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
24✔
1107
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
100✔
1108
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
1109
      return collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
100✔
1110
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
12✔
1111
      return collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
12✔
1112
    case QUERY_NODE_SHOW_APPS_STMT:
7✔
1113
      return collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
7✔
1114
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
391✔
1115
      return collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
391✔
1116
    case QUERY_NODE_SHOW_USAGE_STMT:
1✔
1117
      return collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt);
1✔
1118
    case QUERY_NODE_DELETE_STMT:
42,294✔
1119
      return collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
42,294✔
1120
    case QUERY_NODE_INSERT_STMT:
117✔
1121
      return collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
117✔
1122
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
9✔
1123
      return collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
9✔
1124
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
75✔
1125
      return collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
75✔
1126
    case QUERY_NODE_CREATE_VIEW_STMT:
177✔
1127
      return collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
177✔
1128
    case QUERY_NODE_DROP_VIEW_STMT:
118✔
1129
      return collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
118✔
1130
    case QUERY_NODE_CREATE_TSMA_STMT:
354✔
1131
      return collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
354✔
1132
    case QUERY_NODE_DROP_TSMA_STMT:
172✔
1133
      return collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
172✔
1134
      break;
UNCOV
1135
    case QUERY_NODE_SHOW_TSMAS_STMT:
×
UNCOV
1136
      return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
×
1137
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
8✔
1138
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
1139
      return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
8✔
1140
    default:
29,772✔
1141
      break;
29,772✔
1142
  }
1143
  return TSDB_CODE_SUCCESS;
29,772✔
1144
}
1145

1146
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
981,000✔
1147
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
981,000✔
1148
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
981,000✔
1149
}
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