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

taosdata / TDengine / #3535

23 Nov 2024 02:07AM UTC coverage: 60.85% (+0.03%) from 60.825%
#3535

push

travis-ci

web-flow
Merge pull request #28893 from taosdata/doc/internal

refact: rename taos lib name

120252 of 252737 branches covered (47.58%)

Branch coverage included in aggregate %.

201187 of 275508 relevant lines covered (73.02%)

15886166.19 hits per line

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

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

43
  return TSDB_CODE_SUCCESS;
1,228,691✔
44
}
45

46
int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) {
1,260,765✔
47
  SAstCreateContext cxt;
48
  initAstCreateContext(pParseCxt, &cxt);
1,260,765✔
49
  void*   pParser = ParseAlloc((FMalloc)taosMemoryMalloc);
1,260,784✔
50
  if (!pParser) return terrno;
1,260,780!
51
  int32_t i = 0;
1,260,780✔
52
  while (1) {
76,040,233✔
53
    SToken t0 = {0};
77,301,013✔
54
    if (cxt.pQueryCxt->pSql[i] == 0) {
77,301,013✔
55
      Parse(pParser, 0, t0, &cxt);
821,062✔
56
      goto abort_parse;
1,268,531✔
57
    }
58
    t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type);
76,479,951✔
59
    t0.z = (char*)(cxt.pQueryCxt->pSql + i);
76,477,876✔
60
    i += t0.n;
76,477,876✔
61

62
    switch (t0.type) {
76,477,876!
63
      case TK_NK_SPACE:
24,618,006✔
64
      case TK_NK_COMMENT: {
65
        break;
24,618,006✔
66
      }
67
      case TK_NK_SEMI: {
409,417✔
68
        Parse(pParser, 0, t0, &cxt);
409,417✔
69
        goto abort_parse;
409,414✔
70
      }
71
      case TK_NK_ILLEGAL: {
1,871✔
72
        snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z);
1,871✔
73
        cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR;
1,871✔
74
        goto abort_parse;
1,871✔
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:
51,448,582✔
82
        // ParseTrace(stdout, "");
83
        Parse(pParser, t0.type, t0, &cxt);
51,448,582✔
84
        if (TSDB_CODE_SUCCESS != cxt.errCode) {
51,458,418✔
85
          goto abort_parse;
36,191✔
86
        }
87
    }
88
  }
89

90
abort_parse:
1,268,531✔
91
  ParseFree(pParser, (FFree)taosMemoryFree);
1,268,531✔
92
  if (TSDB_CODE_SUCCESS == cxt.errCode) {
1,260,774✔
93
    int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues);
1,228,690✔
94
    if (TSDB_CODE_SUCCESS != code) {
1,228,694!
95
      return code;
×
96
    }
97
  }
98
  taosArrayDestroy(cxt.pPlaceholderValues);
1,260,778✔
99
  return cxt.errCode;
1,260,763✔
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) {
3,271,531✔
118
  switch (fmGetFuncType(pFunc->functionName)) {
3,271,531✔
119
    case FUNCTION_TYPE_LAST_ROW:
56,477✔
120
    case FUNCTION_TYPE_LAST:
121
      pCxt->hasLastRowOrLast = true;
56,477✔
122
      break;
56,477✔
123
    case FUNCTION_TYPE_UDF:
1,596✔
124
      pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache);
1,596✔
125
      break;
1,596✔
126
    default:
3,213,470✔
127
      break;
3,213,470✔
128
  }
129
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
3,271,543!
130
}
131

132
static bool needGetTableIndex(SNode* pStmt) {
1,191,945✔
133
  if (QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && QUERY_NODE_SELECT_STMT == nodeType(pStmt)) {
1,191,945✔
134
    SSelectStmt* pSelect = (SSelectStmt*)pStmt;
13,207✔
135
    return (NULL != pSelect->pWindow && QUERY_NODE_INTERVAL_WINDOW == nodeType(pSelect->pWindow));
13,207!
136
  }
137
  return false;
1,178,738✔
138
}
139

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

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

160
static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable,
1,191,925✔
161
                                               AUTH_TYPE authType) {
162
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
1,191,925✔
163
  if (TSDB_CODE_SUCCESS == code) {
1,191,947!
164
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
1,191,948✔
165
  }
166
  if (TSDB_CODE_SUCCESS == code) {
1,191,949✔
167
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, authType,
1,191,947✔
168
                                  pCxt->pMetaCache);
169
  }
170
#ifdef TD_ENTERPRISE
171
  if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) {
1,191,952✔
172
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, authType,
463✔
173
                                  pCxt->pMetaCache);
174
  }
175
#endif
176
  if (TSDB_CODE_SUCCESS == code) {
1,191,952✔
177
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache);
1,191,951✔
178
  }
179
  if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) {
1,191,952!
180
    code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
7,338✔
181
  }
182
  if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) {
1,191,938!
183
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
18✔
184
  }
185
  if (TSDB_CODE_SUCCESS == code &&
1,191,938!
186
      (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) ||
1,191,943✔
187
       0 == strcmp(pTable, TSDB_INS_TABLE_COLS)) &&
1,190,143✔
188
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
8,640✔
189
    code = collectMetaKeyFromInsTags(pCxt);
8,612✔
190
  }
191
  if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize &&
1,191,938!
192
      QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) {
13,208✔
193
    code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache);
13,207✔
194
  }
195
  return code;
1,191,950✔
196
}
197

198
static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) {
1,127,763✔
199
  pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName,
1,127,763✔
200
                                                  AUTH_TYPE_READ);
201
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
1,127,783!
202
}
203

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

209
static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) {
1,232,060✔
210
  if (pOperator->opType != OP_TYPE_EQUAL) {
1,232,060✔
211
    return TSDB_CODE_SUCCESS;
1,150,452✔
212
  }
213
  
214
  SValueNode*    pValueNode = NULL;
81,608✔
215
  if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION &&
81,608✔
216
      0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") &&
22,280✔
217
      nodeType(pOperator->pRight) == QUERY_NODE_VALUE) {
7,438✔
218
    pValueNode = (SValueNode*)pOperator->pRight;
7,433✔
219
  } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION &&
74,175✔
220
     0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") &&
328✔
221
     nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) {
5!
222
    pValueNode = (SValueNode*)pOperator->pLeft;
×
223
  } else {
224
    return TSDB_CODE_SUCCESS;
74,175✔
225
  }
226

227
  *ppTableName = pValueNode->literal;
7,433✔
228

229
  return TSDB_CODE_SUCCESS;
7,433✔
230
}
231

232
static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) {
1,901,538✔
233
  if (!pCxt->tbnameCollect) {
1,901,538✔
234
    return DEAL_RES_CONTINUE;
669,474✔
235
  }
236
  
237
  char*   pTableName = NULL;
1,232,064✔
238
  int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName);
1,232,064✔
239
  if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE;
1,232,072!
240
  if (pTableName) {
1,232,072✔
241
    SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt;
7,433✔
242
    pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName, pTableName, AUTH_TYPE_READ);
7,433✔
243
  }
244

245
  return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR;
1,232,072!
246
}
247

248
static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) {
18,783,671✔
249
  SCollectMetaKeyFromExprCxt* pCxt = pContext;
18,783,671✔
250
  switch (nodeType(pNode)) {
18,783,671✔
251
    case QUERY_NODE_FUNCTION:
3,271,547✔
252
      return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode);
3,271,547✔
253
    case QUERY_NODE_REAL_TABLE:
1,127,773✔
254
      return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode);
1,127,773✔
255
    case QUERY_NODE_TEMP_TABLE:
307,292✔
256
      return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode);
307,292✔
257
    case QUERY_NODE_OPERATOR:
1,901,554✔
258
      return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode);
1,901,554✔
259
    default:
12,175,505✔
260
      break;
12,175,505✔
261
  }
262
  return DEAL_RES_CONTINUE;
12,175,505✔
263
}
264

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

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

282
static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) {
43,705✔
283
  if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) {
43,705✔
284
    return TSDB_CODE_SUCCESS;
6,716✔
285
  }
286
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache);
36,989✔
287
}
288

289
static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) {
1,391,684✔
290
  SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS};
1,391,684✔
291
  if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) {
1,391,684✔
292
    cxt.tbnameCollect = true;
887,350✔
293
  }
294
  nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt);
1,391,684✔
295
  if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) {
1,391,703!
296
    cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable);
43,451✔
297
  }
298
  return cxt.errCode;
1,391,706✔
299
}
300

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

305
static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) {
9,942✔
306
  return reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,942✔
307
}
308

309
static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) {
19,994✔
310
  int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
19,994✔
311
  if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) {
19,994!
312
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
13,631✔
313
  }
314
  if (TSDB_CODE_SUCCESS == code) {
19,994!
315
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
19,994✔
316
                                  pCxt->pMetaCache);
317
  }
318
  return code;
19,994✔
319
}
320

321
static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) {
48,778✔
322
  int32_t code = TSDB_CODE_SUCCESS;
48,778✔
323
  SNode*  pNode = NULL;
48,778✔
324
  FOREACH(pNode, pStmt->pSubTables) {
130,598!
325
    if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) {
81,815!
326
      SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode;
81,815✔
327
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
81,815✔
328
      if (TSDB_CODE_SUCCESS == code) {
81,815!
329
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
81,815✔
330
                                       pCxt->pMetaCache);
331
      }
332
      if (TSDB_CODE_SUCCESS == code) {
81,819!
333
        code =
334
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
81,819✔
335
      }
336
      if (TSDB_CODE_SUCCESS == code) {
81,835!
337
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL,
81,835✔
338
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
339
      }
340
    } else {
341
      SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode;
×
342
      code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache);
×
343
      if (TSDB_CODE_SUCCESS == code) {
×
344
        code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName,
×
345
                                       pCxt->pMetaCache);
346
      }
347
      if (TSDB_CODE_SUCCESS == code) {
×
348
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL,
×
349
                                      AUTH_TYPE_WRITE, pCxt->pMetaCache);
350
      }
351
    }
352

353
    if (TSDB_CODE_SUCCESS != code) {
81,820!
354
      break;
×
355
    }
356
  }
357
  return code;
48,783✔
358
}
359

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

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

375
  return code;
×
376
}
377

378
static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) {
17,482✔
379
  int32_t code = TSDB_CODE_SUCCESS;
17,482✔
380
  SNode*  pNode = NULL;
17,482✔
381
  FOREACH(pNode, pStmt->pTables) {
35,872!
382
    SDropTableClause* pClause = (SDropTableClause*)pNode;
18,390✔
383
    if (pStmt->withOpt) {
18,390✔
384
      code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
1,026✔
385
      if (TSDB_CODE_SUCCESS == code) {
1,026!
386
        code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
1,026✔
387
      }
388
      if (TSDB_CODE_SUCCESS == code) {
1,026!
389
        code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache);
1,026✔
390
      }
391
    } else {
392
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
17,364✔
393
      if (TSDB_CODE_SUCCESS == code) {
17,364!
394
        code =
395
            reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache);
17,364✔
396
      }
397
      if (TSDB_CODE_SUCCESS == code) {
17,364!
398
        code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName,
17,364✔
399
                                      pClause->tableName, AUTH_TYPE_WRITE, pCxt->pMetaCache);
17,364✔
400
      }
401
    }
402
    if (TSDB_CODE_SUCCESS != code) {
18,390!
403
      break;
×
404
    }
405
  }
406
  return code;
17,482✔
407
}
408

409
static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) {
335✔
410
  if (pStmt->withOpt) {
335✔
411
    return reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
293✔
412
  }
413
  return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
42✔
414
                                AUTH_TYPE_WRITE, pCxt->pMetaCache);
415
}
416

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

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

444
static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) {
9,408✔
445
  return reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
9,408✔
446
}
447

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

465
static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) {
621✔
466
  if (NULL != pStmt->pQuery) {
621✔
467
    return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
510✔
468
  }
469
  if (NULL != pStmt->pWhere) {
111✔
470
    int32_t code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, AUTH_TYPE_READ);
17✔
471
    return code;
17✔
472
  }
473
  return TSDB_CODE_SUCCESS;
94✔
474
}
475

476
static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) {
133,158✔
477
  return collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
133,158✔
478
}
479

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

643
static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
827✔
644
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS,
827✔
645
                                         pCxt->pMetaCache);
646
  if (TSDB_CODE_SUCCESS == code) {
827!
647
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
827✔
648
                                   ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
827✔
649
  }
650
  if (TSDB_CODE_SUCCESS == code) {
827!
651
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
827✔
652
  }
653
  if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) {
827!
654
    code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal,
827✔
655
                                     ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache);
827✔
656
  }
657
  return code;
827✔
658
}
659

660
static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) {
30✔
661
  return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal,
60✔
662
                                         ((SValueNode*)pStmt->pTbName)->literal, AUTH_TYPE_READ);
30✔
663
}
664

665
static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
23✔
666
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS,
23✔
667
                                 pCxt->pMetaCache);
668
}
669

670
static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
×
671
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL,
×
672
                                 pCxt->pMetaCache);
673
}
674

675
static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
25✔
676
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES,
25✔
677
                                 pCxt->pMetaCache);
678
}
679

680
static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
837✔
681
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
837✔
682
                                         pCxt->pMetaCache);
683
  if (TSDB_CODE_SUCCESS == code) {
837!
684
    // just to verify whether the database exists
685
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache);
837✔
686
  }
687
  return code;
837✔
688
}
689

690
static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
31✔
691
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS,
31✔
692
                                 pCxt->pMetaCache);
693
}
694

695
static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
56✔
696
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONSUMERS,
56✔
697
                                 pCxt->pMetaCache);
698
}
699

700
static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8✔
701
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_CONNECTIONS,
8✔
702
                                 pCxt->pMetaCache);
703
}
704

705
static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8✔
706
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES,
8✔
707
                                 pCxt->pMetaCache);
708
}
709

710
static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
11✔
711
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS,
11✔
712
                                 pCxt->pMetaCache);
713
}
714

715
static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) {
74✔
716
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
74✔
717
                                         TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache);
718
  if (TSDB_CODE_SUCCESS == code) {
74!
719
    code = reserveDnodeRequiredInCache(pCxt->pMetaCache);
74✔
720
  }
721
  return code;
74✔
722
}
723

724
static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) {
18✔
725
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES,
18✔
726
                                 pCxt->pMetaCache);
727
}
728

729
static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
17✔
730
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USER_PRIVILEGES,
17✔
731
                                 pCxt->pMetaCache);
732
}
733

734
static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
32✔
735
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS,
32✔
736
                                         pCxt->pMetaCache);
737
  if (TSDB_CODE_SUCCESS == code) {
32!
738
    code =
739
        reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal,
32✔
740
                               NULL, AUTH_TYPE_READ_OR_WRITE, pCxt->pMetaCache);
741
  }
742
  return code;
32✔
743
}
744

745
static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
56✔
746
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS,
56✔
747
                                         pCxt->pMetaCache);
748
  return code;
56✔
749
}
750

751
static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1✔
752
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB,
1✔
753
                                         TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache);
754
  return code;
1✔
755
}
756

757
static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
758
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_FULL,
7✔
759
                                 pCxt->pMetaCache);
760
}
761

762
static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
7✔
763
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_GRANTS_LOGS,
7✔
764
                                 pCxt->pMetaCache);
765
}
766

767
static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8✔
768
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES,
8✔
769
                                 pCxt->pMetaCache);
770
}
771

772
static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2✔
773
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS,
2✔
774
                                 pCxt->pMetaCache);
775
}
776

777
static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) {
25✔
778
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
25✔
779
}
780

781
static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) {
143✔
782
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
143✔
783
  strcpy(name.dbname, pStmt->dbName);
143✔
784
  strcpy(name.tname, pStmt->tableName);
143✔
785
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
143✔
786
  if (TSDB_CODE_SUCCESS == code) {
143!
787
    code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
143✔
788
  }
789
  if (TSDB_CODE_SUCCESS == code) {
143!
790
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
143✔
791
  }
792
  if (TSDB_CODE_SUCCESS == code) {
143!
793
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName,
143✔
794
                                  AUTH_TYPE_READ, pCxt->pMetaCache);
795
  }
796
  return code;
143✔
797
}
798

799
static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) {
14✔
800
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
14✔
801
  strcpy(name.dbname, pStmt->dbName);
14✔
802
  strcpy(name.tname, pStmt->viewName);
14✔
803
  char dbFName[TSDB_DB_FNAME_LEN];
804
  (void)tNameGetFullDbName(&name, dbFName);
14✔
805
  int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0);
14✔
806
  if (TSDB_CODE_SUCCESS == code) {
14!
807
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
14✔
808
                                      AUTH_TYPE_READ, pCxt->pMetaCache);
809
  }
810
  if (TSDB_CODE_SUCCESS == code) {
14!
811
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
14✔
812
  }
813
  pCxt->pMetaCache->forceFetchViewMeta = true;
14✔
814
  return code;
14✔
815
}
816

817
static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
8✔
818
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS,
8✔
819
                                 pCxt->pMetaCache);
820
}
821

822
static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
1,075✔
823
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS,
1,075✔
824
                                 pCxt->pMetaCache);
825
}
826

827
static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) {
56,495✔
828
  STableNode* pTable = (STableNode*)pStmt->pFromTable;
56,495✔
829
  return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
56,495✔
830
}
831

832
static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) {
177✔
833
  STableNode* pTable = (STableNode*)pStmt->pTable;
177✔
834
  int32_t     code = collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, AUTH_TYPE_WRITE);
177✔
835
  if (TSDB_CODE_SUCCESS == code) {
177!
836
    code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery);
177✔
837
  }
838
  return code;
177✔
839
}
840

841
static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) {
9✔
842
  SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId};
9✔
843
  strcpy(name.dbname, pStmt->dbName);
9✔
844
  strcpy(name.tname, pStmt->tableName);
9✔
845
  int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name);
9✔
846
  if (TSDB_CODE_SUCCESS == code) {
9!
847
    code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, AUTH_TYPE_READ);
9✔
848
  }
849
  return code;
9✔
850
}
851

852
static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
75✔
853
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS,
75✔
854
                                 pCxt->pMetaCache);
855
}
856

857
static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) {
11✔
858
  return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
11✔
859
}
860

861
static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) {
1,012✔
862
  if ('\0' == pStmt->tabName[0]) {
1,012✔
863
    return TSDB_CODE_SUCCESS;
133✔
864
  }
865
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
879✔
866
}
867

868
static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) {
121✔
869
  if ('\0' == pStmt->tabName[0]) {
121✔
870
    return TSDB_CODE_SUCCESS;
91✔
871
  }
872
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache);
30✔
873
}
874

875
static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) {
226✔
876
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache);
226✔
877
  if (TSDB_CODE_SUCCESS == code) {
226!
878
    code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE,
226✔
879
                                  pCxt->pMetaCache);
880
  }
881
  if (TSDB_CODE_SUCCESS == code) {
226!
882
    code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName,
226✔
883
                                      AUTH_TYPE_ALTER, pCxt->pMetaCache);
884
  }
885
  return code;
226✔
886
}
887

888
static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) {
143✔
889
  int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName,
143✔
890
                                            pStmt->viewName, AUTH_TYPE_ALTER, pCxt->pMetaCache);
143✔
891
  pCxt->pMetaCache->forceFetchViewMeta = true;
143✔
892
  return code;
143✔
893
}
894

895
static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) {
360✔
896
  int32_t code;
897
  if (pStmt->pOptions->recursiveTsma) {
360✔
898
    // if creating recursive tsma, the tablename is tsmaName
899
    code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
126✔
900
    if (TSDB_CODE_SUCCESS == code) {
126!
901
      char dstTbName[TSDB_TABLE_NAME_LEN] = {0};
126✔
902
      snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName);
126✔
903
      code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
126✔
904
      if (TSDB_CODE_SUCCESS == code) {
126!
905
        code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache);
126✔
906
      }
907
    }
908
  } else {
909
    code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
234✔
910
    if (TSDB_CODE_SUCCESS == code) {
234!
911
      code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache);
234✔
912
    }
913
  }
914
  if (TSDB_CODE_SUCCESS == code) {
360!
915
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
360✔
916
  }
917
  if (TSDB_CODE_SUCCESS == code) {
360!
918
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
360✔
919
  }
920
  return code;
360✔
921
}
922

923
static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) {
176✔
924
  int32_t code;
925
  code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache);
176✔
926
  if (TSDB_CODE_SUCCESS == code) {
176!
927
    code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
176✔
928
  }
929
  if (TSDB_CODE_SUCCESS == code) {
176!
930
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
176✔
931
  }
932
  return code;
176✔
933
}
934

935
static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) {
2✔
936
  return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS,
2✔
937
                                 pCxt->pMetaCache);
938
}
939

940
static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) {
31✔
941
  int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS,
31✔
942
                                         pCxt->pMetaCache);
943
  if (TSDB_CODE_SUCCESS == code) {
31!
944
    // just to verify whether the database exists
945
    code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache);
31✔
946
  }
947
  return code;
31✔
948
}
949

950
static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) {
1,833,524✔
951
  pCxt->pStmt = pStmt;
1,833,524✔
952
  switch (nodeType(pStmt)) {
1,833,524!
953
    case QUERY_NODE_SET_OPERATOR:
81,415✔
954
      return collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt);
81,415✔
955
    case QUERY_NODE_SELECT_STMT:
1,391,693✔
956
      return collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt);
1,391,693✔
957
    case QUERY_NODE_ALTER_DATABASE_STMT:
219✔
958
      return collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt);
219✔
959
    case QUERY_NODE_FLUSH_DATABASE_STMT:
9,942✔
960
      return collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt);
9,942✔
961
    case QUERY_NODE_CREATE_TABLE_STMT:
19,994✔
962
      return collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt);
19,994✔
963
    case QUERY_NODE_CREATE_MULTI_TABLES_STMT:
48,778✔
964
      return collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt);
48,778✔
965
    case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE:
×
966
      return collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt);
×
967
    case QUERY_NODE_DROP_TABLE_STMT:
17,482✔
968
      return collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt);
17,482✔
969
    case QUERY_NODE_DROP_SUPER_TABLE_STMT:
335✔
970
      return collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt);
335✔
971
    case QUERY_NODE_ALTER_TABLE_STMT:
13,435✔
972
      return collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt);
13,435✔
973
    case QUERY_NODE_ALTER_SUPER_TABLE_STMT:
1,020✔
974
      return collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt);
1,020✔
975
    case QUERY_NODE_USE_DATABASE_STMT:
9,409✔
976
      return collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt);
9,409✔
977
    case QUERY_NODE_CREATE_INDEX_STMT:
86✔
978
      return collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt);
86✔
979
    case QUERY_NODE_CREATE_TOPIC_STMT:
621✔
980
      return collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt);
621✔
981
    case QUERY_NODE_EXPLAIN_STMT:
133,158✔
982
      return collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt);
133,158✔
983
    case QUERY_NODE_DESCRIBE_STMT:
3,433✔
984
      return collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt);
3,433✔
985
    case QUERY_NODE_COMPACT_DATABASE_STMT:
11✔
986
      return collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt);
11✔
987
    case QUERY_NODE_CREATE_STREAM_STMT:
912✔
988
      return collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt);
912✔
989
    case QUERY_NODE_GRANT_STMT:
1,012✔
990
      return collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt);
1,012✔
991
    case QUERY_NODE_REVOKE_STMT:
121✔
992
      return collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt);
121✔
993
    case QUERY_NODE_SHOW_DNODES_STMT:
86✔
994
      return collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt);
86✔
995
    case QUERY_NODE_SHOW_MNODES_STMT:
13✔
996
      return collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt);
13✔
997
    case QUERY_NODE_SHOW_MODULES_STMT:
×
998
      return collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt);
×
999
    case QUERY_NODE_SHOW_QNODES_STMT:
16✔
1000
      return collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt);
16✔
1001
    case QUERY_NODE_SHOW_SNODES_STMT:
31✔
1002
      return collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt);
31✔
1003
    case QUERY_NODE_SHOW_ANODES_STMT:
×
1004
      return collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt);
×
1005
    case QUERY_NODE_SHOW_ANODES_FULL_STMT:
×
1006
      return collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt);
×
1007
    case QUERY_NODE_SHOW_BNODES_STMT:
×
1008
      return collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt);
×
1009
    case QUERY_NODE_SHOW_ARBGROUPS_STMT:
×
1010
      return collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt);
×
1011
    case QUERY_NODE_SHOW_CLUSTER_STMT:
10✔
1012
      return collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt);
10✔
1013
    case QUERY_NODE_SHOW_DATABASES_STMT:
246✔
1014
      return collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt);
246✔
1015
    case QUERY_NODE_SHOW_FUNCTIONS_STMT:
83✔
1016
      return collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt);
83✔
1017
    case QUERY_NODE_SHOW_INDEXES_STMT:
31✔
1018
      return collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt);
31✔
1019
    case QUERY_NODE_SHOW_STABLES_STMT:
691✔
1020
      return collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt);
691✔
1021
    case QUERY_NODE_SHOW_STREAMS_STMT:
199✔
1022
      return collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt);
199✔
1023
    case QUERY_NODE_SHOW_TABLES_STMT:
1,247✔
1024
      return collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt);
1,247✔
1025
    case QUERY_NODE_SHOW_TAGS_STMT:
827✔
1026
      return collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt);
827✔
1027
    case QUERY_NODE_SHOW_TABLE_TAGS_STMT:
30✔
1028
      return collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt);
30✔
1029
    case QUERY_NODE_SHOW_USERS_STMT:
23✔
1030
      return collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt);
23✔
1031
    case QUERY_NODE_SHOW_USERS_FULL_STMT:
×
1032
      return collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt);
×
1033
    case QUERY_NODE_SHOW_LICENCES_STMT:
25✔
1034
      return collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt);
25✔
1035
    case QUERY_NODE_SHOW_VGROUPS_STMT:
837✔
1036
      return collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt);
837✔
1037
    case QUERY_NODE_SHOW_TOPICS_STMT:
31✔
1038
      return collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt);
31✔
1039
    case QUERY_NODE_SHOW_CONSUMERS_STMT:
56✔
1040
      return collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt);
56✔
1041
    case QUERY_NODE_SHOW_CONNECTIONS_STMT:
8✔
1042
      return collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt);
8✔
1043
    case QUERY_NODE_SHOW_QUERIES_STMT:
8✔
1044
      return collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt);
8✔
1045
    case QUERY_NODE_SHOW_VARIABLES_STMT:
11✔
1046
      return collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt);
11✔
1047
    case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT:
74✔
1048
      return collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt);
74✔
1049
    case QUERY_NODE_SHOW_VNODES_STMT:
18✔
1050
      return collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt);
18✔
1051
    case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT:
17✔
1052
      return collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt);
17✔
1053
    case QUERY_NODE_SHOW_VIEWS_STMT:
32✔
1054
      return collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt);
32✔
1055
    case QUERY_NODE_SHOW_COMPACTS_STMT:
56✔
1056
      return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt);
56✔
1057
    case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT:
1✔
1058
      return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt);
1✔
1059
    case QUERY_NODE_SHOW_GRANTS_FULL_STMT:
7✔
1060
      return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt);
7✔
1061
    case QUERY_NODE_SHOW_GRANTS_LOGS_STMT:
7✔
1062
      return collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt);
7✔
1063
    case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT:
8✔
1064
      return collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt);
8✔
1065
    case QUERY_NODE_SHOW_ENCRYPTIONS_STMT:
2✔
1066
      return collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt);
2✔
1067
    case QUERY_NODE_SHOW_CREATE_DATABASE_STMT:
25✔
1068
      return collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt);
25✔
1069
    case QUERY_NODE_SHOW_CREATE_TABLE_STMT:
143✔
1070
    case QUERY_NODE_SHOW_CREATE_STABLE_STMT:
1071
      return collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt);
143✔
1072
    case QUERY_NODE_SHOW_CREATE_VIEW_STMT:
14✔
1073
      return collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt);
14✔
1074
    case QUERY_NODE_SHOW_APPS_STMT:
8✔
1075
      return collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt);
8✔
1076
    case QUERY_NODE_SHOW_TRANSACTIONS_STMT:
1,075✔
1077
      return collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt);
1,075✔
1078
    case QUERY_NODE_DELETE_STMT:
56,496✔
1079
      return collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt);
56,496✔
1080
    case QUERY_NODE_INSERT_STMT:
177✔
1081
      return collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt);
177✔
1082
    case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT:
9✔
1083
      return collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt);
9✔
1084
    case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT:
75✔
1085
      return collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt);
75✔
1086
    case QUERY_NODE_CREATE_VIEW_STMT:
226✔
1087
      return collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt);
226✔
1088
    case QUERY_NODE_DROP_VIEW_STMT:
143✔
1089
      return collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt);
143✔
1090
    case QUERY_NODE_CREATE_TSMA_STMT:
360✔
1091
      return collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt);
360✔
1092
    case QUERY_NODE_DROP_TSMA_STMT:
176✔
1093
      return collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt);
176✔
1094
      break;
1095
    case QUERY_NODE_SHOW_TSMAS_STMT:
2✔
1096
      return collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt);
2✔
1097
    case QUERY_NODE_SHOW_DB_ALIVE_STMT:
31✔
1098
    case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT:
1099
      return collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt);
31✔
1100
    default:
36,757✔
1101
      break;
36,757✔
1102
  }
1103
  return TSDB_CODE_SUCCESS;
36,757✔
1104
}
1105

1106
int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) {
1,228,644✔
1107
  SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot};
1,228,644✔
1108
  return collectMetaKeyFromQuery(&cxt, pQuery->pRoot);
1,228,644✔
1109
}
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