/src/tdengine/source/libs/parser/src/parAstParser.c
Line | Count | Source |
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 "cmdnodes.h" |
17 | | #include "functionMgt.h" |
18 | | #include "os.h" |
19 | | #include "parAst.h" |
20 | | #include "parInt.h" |
21 | | #include "parToken.h" |
22 | | #include "systable.h" |
23 | | #include "tglobal.h" |
24 | | #include "tmsg.h" |
25 | | |
26 | | typedef void* (*FMalloc)(size_t); |
27 | | typedef void (*FFree)(void*); |
28 | | |
29 | | extern SConfig* tsCfg; |
30 | | |
31 | | extern void* ParseAlloc(FMalloc); |
32 | | extern void Parse(void*, int, SToken, void*); |
33 | | extern void ParseFree(void*, FFree); |
34 | | extern void ParseTrace(FILE*, char*); |
35 | | |
36 | 2.74k | int32_t buildQueryAfterParse(SQuery** pQuery, SNode* pRootNode, int16_t placeholderNo, SArray** pPlaceholderValues) { |
37 | 2.74k | *pQuery = NULL; |
38 | 2.74k | int32_t code = nodesMakeNode(QUERY_NODE_QUERY, (SNode**)pQuery); |
39 | 2.74k | if (NULL == *pQuery) { |
40 | 0 | return code; |
41 | 0 | } |
42 | 2.74k | (*pQuery)->pRoot = pRootNode; |
43 | 2.74k | (*pQuery)->placeholderNum = placeholderNo; |
44 | 2.74k | TSWAP((*pQuery)->pPlaceholderValues, *pPlaceholderValues); |
45 | 2.74k | (*pQuery)->execStage = QUERY_EXEC_STAGE_ANALYSE; |
46 | | |
47 | 2.74k | return TSDB_CODE_SUCCESS; |
48 | 2.74k | } |
49 | | |
50 | 6.22k | int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) { |
51 | 6.22k | SAstCreateContext cxt; |
52 | 6.22k | initAstCreateContext(pParseCxt, &cxt); |
53 | 6.22k | void* pParser = ParseAlloc((FMalloc)taosMemMalloc); |
54 | 6.22k | if (!pParser) return terrno; |
55 | 6.22k | int32_t i = 0; |
56 | 1.27M | while (1) { |
57 | 1.27M | SToken t0 = {0}; |
58 | 1.27M | if (cxt.pQueryCxt->pSql[i] == 0) { |
59 | 4.17k | Parse(pParser, 0, t0, &cxt); |
60 | 4.17k | goto abort_parse; |
61 | 4.17k | } |
62 | 1.27M | if (!pParseCxt->hasDupQuoteChar) { |
63 | 1.25M | char dupQuoteChar = 0; |
64 | 1.25M | t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, &dupQuoteChar); |
65 | 1.25M | if (dupQuoteChar) pParseCxt->hasDupQuoteChar = true; |
66 | 1.25M | } else { |
67 | 17.0k | t0.n = tGetToken((char*)&cxt.pQueryCxt->pSql[i], &t0.type, NULL); |
68 | 17.0k | } |
69 | 1.27M | t0.z = (char*)(cxt.pQueryCxt->pSql + i); |
70 | 1.27M | i += t0.n; |
71 | | |
72 | 1.27M | switch (t0.type) { |
73 | 21.8k | case TK_NK_SPACE: |
74 | 22.8k | case TK_NK_COMMENT: { |
75 | 22.8k | break; |
76 | 21.8k | } |
77 | 11 | case TK_NK_SEMI: { |
78 | 11 | Parse(pParser, 0, t0, &cxt); |
79 | 11 | goto abort_parse; |
80 | 21.8k | } |
81 | 280 | case TK_NK_ILLEGAL: { |
82 | 280 | snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unrecognized token: \"%s\"", t0.z); |
83 | 280 | cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR; |
84 | 280 | goto abort_parse; |
85 | 21.8k | } |
86 | 0 | case TK_NK_OCT: { |
87 | 0 | snprintf(cxt.pQueryCxt->pMsg, cxt.pQueryCxt->msgLen, "unsupported token: \"%s\"", t0.z); |
88 | 0 | cxt.errCode = TSDB_CODE_PAR_SYNTAX_ERROR; |
89 | 0 | goto abort_parse; |
90 | 21.8k | } |
91 | 1.25M | default: |
92 | | // ParseTrace(stdout, ""); |
93 | 1.25M | Parse(pParser, t0.type, t0, &cxt); |
94 | 1.25M | if (TSDB_CODE_SUCCESS != cxt.errCode) { |
95 | 1.75k | goto abort_parse; |
96 | 1.75k | } |
97 | 1.27M | } |
98 | 1.27M | } |
99 | | |
100 | 6.22k | abort_parse: |
101 | 6.22k | ParseFree(pParser, (FFree)taosAutoMemoryFree); |
102 | 6.22k | if (TSDB_CODE_SUCCESS == cxt.errCode) { |
103 | 2.74k | int32_t code = buildQueryAfterParse(pQuery, cxt.pRootNode, cxt.placeholderNo, &cxt.pPlaceholderValues); |
104 | 2.74k | if (TSDB_CODE_SUCCESS != code) { |
105 | 0 | return code; |
106 | 0 | } |
107 | 2.74k | } |
108 | 6.22k | taosArrayDestroy(cxt.pPlaceholderValues); |
109 | 6.22k | return cxt.errCode; |
110 | 6.22k | } |
111 | | |
112 | | typedef struct SCollectMetaKeyCxt { |
113 | | SParseContext* pParseCxt; |
114 | | SParseMetaCache* pMetaCache; |
115 | | SNode* pStmt; |
116 | | bool collectVStbRefDbs; |
117 | | } SCollectMetaKeyCxt; |
118 | | |
119 | | typedef struct SCollectMetaKeyFromExprCxt { |
120 | | SCollectMetaKeyCxt* pComCxt; |
121 | | bool hasLastRowOrLast; |
122 | | bool tbnameCollect; |
123 | | int32_t errCode; |
124 | | } SCollectMetaKeyFromExprCxt; |
125 | | |
126 | | static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt); |
127 | | static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt); |
128 | | static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt); |
129 | | |
130 | 4.54k | static EDealRes collectMetaKeyFromFunction(SCollectMetaKeyFromExprCxt* pCxt, SFunctionNode* pFunc) { |
131 | 4.54k | switch (fmGetFuncType(pFunc->functionName)) { |
132 | 0 | case FUNCTION_TYPE_LAST_ROW: |
133 | 0 | case FUNCTION_TYPE_LAST: |
134 | 0 | pCxt->hasLastRowOrLast = true; |
135 | 0 | break; |
136 | 4.54k | case FUNCTION_TYPE_UDF: |
137 | 4.54k | pCxt->errCode = reserveUdfInCache(pFunc->functionName, pCxt->pComCxt->pMetaCache); |
138 | 4.54k | break; |
139 | 0 | default: |
140 | 0 | break; |
141 | 4.54k | } |
142 | 4.54k | return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR; |
143 | 4.54k | } |
144 | | |
145 | 12.0k | static bool needGetTableIndex(SNode* pStmt) { |
146 | 12.0k | return false; |
147 | 0 | if (QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && QUERY_NODE_SELECT_STMT == nodeType(pStmt)) { |
148 | 0 | SSelectStmt* pSelect = (SSelectStmt*)pStmt; |
149 | 0 | return (NULL != pSelect->pWindow && QUERY_NODE_INTERVAL_WINDOW == nodeType(pSelect->pWindow)); |
150 | 0 | } |
151 | 0 | return false; |
152 | 0 | } |
153 | | |
154 | 1.41k | static int32_t collectMetaKeyFromInsTagsImpl(SCollectMetaKeyCxt* pCxt, SName* pName) { |
155 | 1.41k | if (0 == pName->type) { |
156 | 1.41k | return TSDB_CODE_SUCCESS; |
157 | 1.41k | } |
158 | 0 | if (TSDB_DB_NAME_T == pName->type) { |
159 | 0 | return reserveDbVgInfoInCache(pName->acctId, pName->dbname, pCxt->pMetaCache); |
160 | 0 | } |
161 | 0 | return reserveTableVgroupInCacheExt(pName, pCxt->pMetaCache); |
162 | 0 | } |
163 | | |
164 | 1.41k | static int32_t collectMetaKeyFromInsTags(SCollectMetaKeyCxt* pCxt) { |
165 | 1.41k | SSelectStmt* pSelect = (SSelectStmt*)pCxt->pStmt; |
166 | 1.41k | SName name = {0}; |
167 | 1.41k | int32_t code = getVnodeSysTableTargetName(pCxt->pParseCxt->acctId, pSelect->pWhere, &name); |
168 | 1.41k | if (TSDB_CODE_SUCCESS == code) { |
169 | 1.41k | code = collectMetaKeyFromInsTagsImpl(pCxt, &name); |
170 | 1.41k | } |
171 | 1.41k | return code; |
172 | 1.41k | } |
173 | | |
174 | | static int32_t collectMetaKeyFromRealTableImpl(SCollectMetaKeyCxt* pCxt, const char* pDb, const char* pTable, |
175 | 12.0k | EPrivType privType, EPrivObjType objType) { |
176 | 12.0k | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache); |
177 | 12.0k | if (TSDB_CODE_SUCCESS == code) { |
178 | 12.0k | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, NULL, PRIV_DB_USE, PRIV_OBJ_DB, |
179 | 12.0k | pCxt->pMetaCache); |
180 | 12.0k | } |
181 | 12.0k | if (TSDB_CODE_SUCCESS == code) { |
182 | 12.0k | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache); |
183 | 12.0k | } |
184 | 12.0k | if (TSDB_CODE_SUCCESS == code) { |
185 | 12.0k | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache); |
186 | 12.0k | } |
187 | 12.0k | if (TSDB_CODE_SUCCESS == code) { |
188 | 12.0k | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pDb, pTable, privType, objType, |
189 | 12.0k | pCxt->pMetaCache); |
190 | 12.0k | } |
191 | | #ifdef TD_ENTERPRISE |
192 | | if (TSDB_CODE_SUCCESS == code && NULL != pCxt->pParseCxt->pEffectiveUser) { |
193 | | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pEffectiveUser, pDb, pTable, privType, |
194 | | objType, pCxt->pMetaCache); |
195 | | } |
196 | | #endif |
197 | 12.0k | if (TSDB_CODE_SUCCESS == code) { |
198 | 12.0k | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pDb, pCxt->pMetaCache); |
199 | 12.0k | } |
200 | 12.0k | if (TSDB_CODE_SUCCESS == code && needGetTableIndex(pCxt->pStmt)) { |
201 | 0 | code = reserveTableIndexInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache); |
202 | 0 | } |
203 | 12.0k | if (TSDB_CODE_SUCCESS == code && (0 == strcmp(pTable, TSDB_INS_TABLE_DNODE_VARIABLES))) { |
204 | 194 | code = reserveDnodeRequiredInCache(pCxt->pMetaCache); |
205 | 194 | } |
206 | 12.0k | if (TSDB_CODE_SUCCESS == code && |
207 | 12.0k | (0 == strcmp(pTable, TSDB_INS_TABLE_TAGS) || 0 == strcmp(pTable, TSDB_INS_TABLE_TABLES) || |
208 | 11.6k | 0 == strcmp(pTable, TSDB_INS_TABLE_COLS) || 0 == strcmp(pTable, TSDB_INS_TABLE_VC_COLS) || |
209 | 11.2k | 0 == strcmp(pTable, TSDB_INS_DISK_USAGE) || 0 == strcmp(pTable, TSDB_INS_TABLE_FILESETS) || |
210 | 10.7k | 0 == strcmp(pTable, TSDB_INS_TABLE_VIRTUAL_TABLES_REFERENCING)) && |
211 | 1.41k | QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) { |
212 | 1.41k | code = collectMetaKeyFromInsTags(pCxt); |
213 | 1.41k | } |
214 | 12.0k | if (TSDB_CODE_SUCCESS == code && QUERY_SMA_OPTIMIZE_ENABLE == tsQuerySmaOptimize && |
215 | 0 | QUERY_NODE_SELECT_STMT == nodeType(pCxt->pStmt)) { |
216 | 0 | code = reserveTableTSMAInfoInCache(pCxt->pParseCxt->acctId, pDb, pTable, pCxt->pMetaCache); |
217 | 0 | } |
218 | 12.0k | return code; |
219 | 12.0k | } |
220 | | |
221 | 12.0k | static EDealRes collectMetaKeyFromRealTable(SCollectMetaKeyFromExprCxt* pCxt, SRealTableNode* pRealTable) { |
222 | 12.0k | pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, pRealTable->table.dbName, pRealTable->table.tableName, |
223 | 12.0k | PRIV_TBL_SELECT, PRIV_OBJ_TBL); |
224 | 12.0k | if (TSDB_CODE_SUCCESS == pCxt->errCode && pCxt->pComCxt->collectVStbRefDbs) { |
225 | 1.43k | pCxt->errCode = reserveVStbRefDbsInCache(pCxt->pComCxt->pParseCxt->acctId, pRealTable->table.dbName, |
226 | 1.43k | pRealTable->table.tableName, pCxt->pComCxt->pMetaCache); |
227 | 1.43k | } |
228 | 12.0k | return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR; |
229 | 12.0k | } |
230 | | |
231 | 851 | static EDealRes collectMetaKeyFromTempTable(SCollectMetaKeyFromExprCxt* pCxt, STempTableNode* pTempTable) { |
232 | 851 | pCxt->errCode = collectMetaKeyFromQuery(pCxt->pComCxt, pTempTable->pSubquery); |
233 | 851 | return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR; |
234 | 851 | } |
235 | | |
236 | 736 | static int32_t isTbnameEqCondOperator(SOperatorNode* pOperator, char** ppTableName) { |
237 | 736 | if (pOperator->opType != OP_TYPE_EQUAL) { |
238 | 204 | return TSDB_CODE_SUCCESS; |
239 | 204 | } |
240 | | |
241 | 532 | SValueNode* pValueNode = NULL; |
242 | 532 | if (nodeType(pOperator->pLeft) == QUERY_NODE_FUNCTION && |
243 | 60 | 0 == strcasecmp(((SFunctionNode*)(pOperator->pLeft))->functionName, "tbname") && |
244 | 0 | nodeType(pOperator->pRight) == QUERY_NODE_VALUE) { |
245 | 0 | pValueNode = (SValueNode*)pOperator->pRight; |
246 | 532 | } else if (nodeType(pOperator->pRight) == QUERY_NODE_FUNCTION && |
247 | 266 | 0 == strcasecmp(((SFunctionNode*)(pOperator->pRight))->functionName, "tbname") && |
248 | 0 | nodeType(pOperator->pLeft) == QUERY_NODE_VALUE) { |
249 | 0 | pValueNode = (SValueNode*)pOperator->pLeft; |
250 | 532 | } else { |
251 | 532 | return TSDB_CODE_SUCCESS; |
252 | 532 | } |
253 | | |
254 | 0 | *ppTableName = pValueNode->literal; |
255 | |
|
256 | 0 | return TSDB_CODE_SUCCESS; |
257 | 532 | } |
258 | | |
259 | 843k | static EDealRes collectMetaKeyFromOperator(SCollectMetaKeyFromExprCxt* pCxt, SOperatorNode* pOpNode) { |
260 | 843k | if (!pCxt->tbnameCollect) { |
261 | 842k | return DEAL_RES_CONTINUE; |
262 | 842k | } |
263 | | |
264 | 736 | char* pTableName = NULL; |
265 | 736 | int32_t code = isTbnameEqCondOperator((SOperatorNode*)pOpNode, &pTableName); |
266 | 736 | if (TSDB_CODE_SUCCESS != code) return DEAL_RES_CONTINUE; |
267 | 736 | if (pTableName) { |
268 | 0 | SSelectStmt* pSelect = (SSelectStmt*)pCxt->pComCxt->pStmt; |
269 | 0 | pCxt->errCode = collectMetaKeyFromRealTableImpl(pCxt->pComCxt, ((SRealTableNode*)pSelect->pFromTable)->table.dbName, |
270 | 0 | pTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL); |
271 | 0 | } |
272 | | |
273 | 736 | return TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_CONTINUE : DEAL_RES_ERROR; |
274 | 736 | } |
275 | | |
276 | 1.35M | static EDealRes collectMetaKeyFromExprImpl(SNode* pNode, void* pContext) { |
277 | 1.35M | SCollectMetaKeyFromExprCxt* pCxt = pContext; |
278 | 1.35M | switch (nodeType(pNode)) { |
279 | 4.54k | case QUERY_NODE_FUNCTION: |
280 | 4.54k | return collectMetaKeyFromFunction(pCxt, (SFunctionNode*)pNode); |
281 | 12.0k | case QUERY_NODE_REAL_TABLE: |
282 | 12.0k | return collectMetaKeyFromRealTable(pCxt, (SRealTableNode*)pNode); |
283 | 851 | case QUERY_NODE_TEMP_TABLE: |
284 | 851 | return collectMetaKeyFromTempTable(pCxt, (STempTableNode*)pNode); |
285 | 843k | case QUERY_NODE_OPERATOR: |
286 | 843k | return collectMetaKeyFromOperator(pCxt, (SOperatorNode*)pNode); |
287 | 0 | case QUERY_NODE_SET_OPERATOR: |
288 | 0 | return collectMetaKeyFromSetOperator(pCxt->pComCxt, (SSetOperator*)pNode); |
289 | 5.06k | case QUERY_NODE_SELECT_STMT: |
290 | 5.06k | return collectMetaKeyFromQuery(pCxt->pComCxt, pNode); |
291 | 486k | default: |
292 | 486k | break; |
293 | 1.35M | } |
294 | 486k | return DEAL_RES_CONTINUE; |
295 | 1.35M | } |
296 | | |
297 | 0 | static int32_t collectMetaKeyFromExprs(SCollectMetaKeyCxt* pCxt, SNodeList* pList) { |
298 | 0 | SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .errCode = TSDB_CODE_SUCCESS, .tbnameCollect = false}; |
299 | 0 | nodesWalkExprs(pList, collectMetaKeyFromExprImpl, &cxt); |
300 | 0 | return cxt.errCode; |
301 | 0 | } |
302 | | |
303 | 0 | static int32_t collectMetaKeyFromSetOperator(SCollectMetaKeyCxt* pCxt, SSetOperator* pStmt) { |
304 | 0 | int32_t code = collectMetaKeyFromQuery(pCxt, pStmt->pLeft); |
305 | 0 | if (TSDB_CODE_SUCCESS == code) { |
306 | 0 | code = collectMetaKeyFromQuery(pCxt, pStmt->pRight); |
307 | 0 | } |
308 | 0 | if (TSDB_CODE_SUCCESS == code) { |
309 | 0 | code = collectMetaKeyFromExprs(pCxt, pStmt->pOrderByList); |
310 | 0 | } |
311 | 0 | return code; |
312 | 0 | } |
313 | | |
314 | 0 | static int32_t reserveDbCfgForLastRow(SCollectMetaKeyCxt* pCxt, SNode* pTable) { |
315 | 0 | if (NULL == pTable || QUERY_NODE_REAL_TABLE != nodeType(pTable)) { |
316 | 0 | return TSDB_CODE_SUCCESS; |
317 | 0 | } |
318 | 0 | return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SRealTableNode*)pTable)->table.dbName, pCxt->pMetaCache); |
319 | 0 | } |
320 | | |
321 | 8.34k | static int32_t collectMetaKeyFromSelect(SCollectMetaKeyCxt* pCxt, SSelectStmt* pStmt) { |
322 | 8.34k | SCollectMetaKeyFromExprCxt cxt = {.pComCxt = pCxt, .hasLastRowOrLast = false, .errCode = TSDB_CODE_SUCCESS}; |
323 | 8.34k | if (pStmt->pFromTable && QUERY_NODE_REAL_TABLE == nodeType(pStmt->pFromTable)) { |
324 | 974 | cxt.tbnameCollect = true; |
325 | 974 | cxt.pComCxt->collectVStbRefDbs = true; |
326 | 974 | } |
327 | 8.34k | nodesWalkSelectStmt(pStmt, SQL_CLAUSE_FROM, collectMetaKeyFromExprImpl, &cxt); |
328 | 8.34k | if (TSDB_CODE_SUCCESS == cxt.errCode && cxt.hasLastRowOrLast) { |
329 | 0 | cxt.errCode = reserveDbCfgForLastRow(pCxt, pStmt->pFromTable); |
330 | 0 | } |
331 | 8.34k | return cxt.errCode; |
332 | 8.34k | } |
333 | | |
334 | 0 | static int32_t collectMetaKeyFromCreateDatabase(SCollectMetaKeyCxt* pCxt, SCreateDatabaseStmt* pStmt) { |
335 | 0 | int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_DB_CREATE, 0, |
336 | 0 | pCxt->pMetaCache); |
337 | 0 | if (TSDB_CODE_SUCCESS == code) { |
338 | | // pre-fetch PRIV_SECURITY_POLICY_ALTER for CREATE DATABASE ... SECURITY_LEVEL X (MAC mode) |
339 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
340 | 0 | PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache); |
341 | 0 | } |
342 | 0 | return code; |
343 | 0 | } |
344 | | |
345 | 0 | static int32_t collectMetaKeyFromAlterDatabase(SCollectMetaKeyCxt* pCxt, SAlterDatabaseStmt* pStmt) { |
346 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
347 | 0 | if (TSDB_CODE_SUCCESS == code) { |
348 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_CM_ALTER, |
349 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
350 | 0 | } |
351 | 0 | if (TSDB_CODE_SUCCESS == code) { |
352 | | // ALTER DATABASE ... SECURITY_LEVEL uses PRIV_SECURITY_POLICY_ALTER as primary check: pre-fetch unconditionally. |
353 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
354 | 0 | PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache); |
355 | 0 | } |
356 | 0 | return code; |
357 | 0 | } |
358 | | |
359 | 0 | static int32_t collectMetaKeyFromDropDatabase(SCollectMetaKeyCxt* pCxt, SDropDatabaseStmt* pStmt) { |
360 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
361 | 0 | if (TSDB_CODE_SUCCESS == code) { |
362 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_CM_DROP, |
363 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
364 | 0 | } |
365 | 0 | return code; |
366 | 0 | } |
367 | | |
368 | 0 | static int32_t collectMetaKeyFromFlushDatabase(SCollectMetaKeyCxt* pCxt, SFlushDatabaseStmt* pStmt) { |
369 | 0 | int32_t code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
370 | 0 | if (TSDB_CODE_SUCCESS == code) { |
371 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_FLUSH, |
372 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
373 | 0 | } |
374 | 0 | return code; |
375 | 0 | } |
376 | | |
377 | 0 | static int32_t collectMetaKeyFromCreateTable(SCollectMetaKeyCxt* pCxt, SCreateTableStmt* pStmt) { |
378 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
379 | 0 | if (TSDB_CODE_SUCCESS == code && NULL == pStmt->pTags) { |
380 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
381 | 0 | } |
382 | 0 | if (TSDB_CODE_SUCCESS == code) { |
383 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
384 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
385 | 0 | } |
386 | 0 | if (TSDB_CODE_SUCCESS == code) { |
387 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE, |
388 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
389 | 0 | } |
390 | 0 | return code; |
391 | 0 | } |
392 | | |
393 | 0 | static int32_t collectMetaKeyFromCreateVTable(SCollectMetaKeyCxt* pCxt, SCreateVTableStmt* pStmt) { |
394 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
395 | 0 | if (TSDB_CODE_SUCCESS == code) { |
396 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
397 | 0 | } |
398 | 0 | if (TSDB_CODE_SUCCESS == code) { |
399 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
400 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
401 | 0 | } |
402 | 0 | if (TSDB_CODE_SUCCESS == code) { |
403 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE, |
404 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
405 | 0 | } |
406 | 0 | if (TSDB_CODE_SUCCESS == code) { |
407 | 0 | SNode* pNode = NULL; |
408 | 0 | FOREACH(pNode, pStmt->pCols) { |
409 | 0 | SColumnDefNode* pCol = (SColumnDefNode*)pNode; |
410 | 0 | if (NULL == pCol) { |
411 | 0 | code = TSDB_CODE_PAR_INVALID_COLUMN; |
412 | 0 | break; |
413 | 0 | } |
414 | 0 | SColumnOptions* pOptions = (SColumnOptions*)pCol->pOptions; |
415 | 0 | if (pOptions && pOptions->hasRef) { |
416 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache); |
417 | 0 | if (TSDB_CODE_SUCCESS == code) { |
418 | 0 | code = |
419 | 0 | reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pOptions->refDb, pOptions->refTable, pCxt->pMetaCache); |
420 | 0 | } |
421 | 0 | if (TSDB_CODE_SUCCESS == code) { |
422 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pOptions->refDb, |
423 | 0 | pOptions->refTable, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache); |
424 | 0 | } |
425 | 0 | if (TSDB_CODE_SUCCESS != code) { |
426 | 0 | break; |
427 | 0 | } |
428 | 0 | } |
429 | 0 | } |
430 | 0 | } |
431 | 0 | return code; |
432 | 0 | } |
433 | | |
434 | 0 | static int32_t collectMetaKeyFromCreateVSubTable(SCollectMetaKeyCxt* pCxt, SCreateVSubTableStmt* pStmt) { |
435 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
436 | 0 | PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache)); |
437 | | // super table's meta |
438 | 0 | PAR_ERR_RET( |
439 | 0 | reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->useDbName, pStmt->useTableName, pCxt->pMetaCache)); |
440 | | // child table's meta |
441 | 0 | PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache)); |
442 | | // check db's write auth |
443 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
444 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache)); |
445 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
446 | 0 | PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache)); |
447 | | // check org table's read auth for column references |
448 | 0 | SNode* pNode = NULL; |
449 | 0 | SNodeList* pTmpNodeList = pStmt->pSpecificColRefs ? pStmt->pSpecificColRefs : pStmt->pColRefs; |
450 | 0 | if (pTmpNodeList) { |
451 | 0 | FOREACH(pNode, pTmpNodeList) { |
452 | 0 | SColumnRefNode* pColRef = (SColumnRefNode*)pNode; |
453 | 0 | if (NULL == pColRef) { |
454 | 0 | code = TSDB_CODE_PAR_INVALID_COLUMN; |
455 | 0 | break; |
456 | 0 | } |
457 | 0 | PAR_ERR_RET( |
458 | 0 | reserveTableMetaInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName, pCxt->pMetaCache)); |
459 | 0 | PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pColRef->refDbName, pColRef->refTableName, |
460 | 0 | pCxt->pMetaCache)); |
461 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pColRef->refDbName, |
462 | 0 | pColRef->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache)); |
463 | 0 | } |
464 | 0 | } |
465 | | |
466 | | // collect metadata for tag reference tables (SColumnRefNode nodes in pValsOfTags) |
467 | | // Handles all tag ref syntax forms: legacy (FROM db.table.tag), specific (tag_name FROM db.table.tag), |
468 | | // and positional (db.table.tag) - all produce SColumnRefNode in pValsOfTags. |
469 | 0 | if (pStmt->pValsOfTags) { |
470 | 0 | FOREACH(pNode, pStmt->pValsOfTags) { |
471 | 0 | if (nodeType(pNode) == QUERY_NODE_COLUMN_REF) { |
472 | 0 | SColumnRefNode* pTagRef = (SColumnRefNode*)pNode; |
473 | 0 | PAR_ERR_RET( |
474 | 0 | reserveTableMetaInCache(pCxt->pParseCxt->acctId, pTagRef->refDbName, pTagRef->refTableName, pCxt->pMetaCache)); |
475 | 0 | PAR_ERR_RET(reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pTagRef->refDbName, pTagRef->refTableName, |
476 | 0 | pCxt->pMetaCache)); |
477 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pTagRef->refDbName, |
478 | 0 | pTagRef->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache)); |
479 | 0 | } |
480 | 0 | } |
481 | 0 | } |
482 | | |
483 | 0 | return code; |
484 | 0 | } |
485 | | |
486 | 0 | static int32_t collectMetaKeyFromCreateMultiTable(SCollectMetaKeyCxt* pCxt, SCreateMultiTablesStmt* pStmt) { |
487 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
488 | 0 | SNode* pNode = NULL; |
489 | 0 | FOREACH(pNode, pStmt->pSubTables) { |
490 | 0 | if (pNode->type == QUERY_NODE_CREATE_SUBTABLE_CLAUSE) { |
491 | 0 | SCreateSubTableClause* pClause = (SCreateSubTableClause*)pNode; |
492 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache); |
493 | 0 | if (TSDB_CODE_SUCCESS == code) { |
494 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, |
495 | 0 | pCxt->pMetaCache); |
496 | 0 | } |
497 | 0 | if (TSDB_CODE_SUCCESS == code) { |
498 | 0 | code = |
499 | 0 | reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache); |
500 | 0 | } |
501 | 0 | if (TSDB_CODE_SUCCESS == code) { |
502 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, |
503 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
504 | 0 | } |
505 | 0 | if (TSDB_CODE_SUCCESS == code) { |
506 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, |
507 | 0 | PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
508 | 0 | } |
509 | 0 | } else { |
510 | 0 | SCreateSubTableFromFileClause* pClause = (SCreateSubTableFromFileClause*)pNode; |
511 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache); |
512 | 0 | if (TSDB_CODE_SUCCESS == code) { |
513 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, |
514 | 0 | pCxt->pMetaCache); |
515 | 0 | } |
516 | 0 | if (TSDB_CODE_SUCCESS == code) { |
517 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL, |
518 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
519 | 0 | } |
520 | 0 | if (TSDB_CODE_SUCCESS == code) { |
521 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL, |
522 | 0 | PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
523 | 0 | } |
524 | 0 | } |
525 | |
|
526 | 0 | if (TSDB_CODE_SUCCESS != code) { |
527 | 0 | break; |
528 | 0 | } |
529 | 0 | } |
530 | 0 | return code; |
531 | 0 | } |
532 | | |
533 | | static int32_t collectMetaKeyFromCreateSubTableFromFile(SCollectMetaKeyCxt* pCxt, |
534 | 0 | SCreateSubTableFromFileClause* pClause) { |
535 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
536 | 0 | SNode* pNode = NULL; |
537 | |
|
538 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pCxt->pMetaCache); |
539 | 0 | if (TSDB_CODE_SUCCESS == code) { |
540 | 0 | code = |
541 | 0 | reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->useDbName, pClause->useTableName, pCxt->pMetaCache); |
542 | 0 | } |
543 | 0 | if (TSDB_CODE_SUCCESS == code) { |
544 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL, |
545 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
546 | 0 | } |
547 | 0 | if (TSDB_CODE_SUCCESS == code) { |
548 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->useDbName, NULL, |
549 | 0 | PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
550 | 0 | } |
551 | |
|
552 | 0 | return code; |
553 | 0 | } |
554 | | |
555 | 0 | static int32_t collectMetaKeyFromDropTable(SCollectMetaKeyCxt* pCxt, SDropTableStmt* pStmt) { |
556 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
557 | 0 | SNode* pNode = NULL; |
558 | 0 | FOREACH(pNode, pStmt->pTables) { |
559 | 0 | SDropTableClause* pClause = (SDropTableClause*)pNode; |
560 | 0 | if (pStmt->withOpt) { |
561 | 0 | code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache); |
562 | 0 | if (TSDB_CODE_SUCCESS == code) { |
563 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache); |
564 | 0 | } |
565 | 0 | } else { |
566 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache); |
567 | 0 | if (TSDB_CODE_SUCCESS == code) { |
568 | 0 | code = |
569 | 0 | reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache); |
570 | 0 | } |
571 | 0 | if (TSDB_CODE_SUCCESS == code) { |
572 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, |
573 | 0 | pClause->tableName, PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache); |
574 | 0 | } |
575 | 0 | } |
576 | 0 | if (TSDB_CODE_SUCCESS == code) { |
577 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache); |
578 | 0 | } |
579 | 0 | if (TSDB_CODE_SUCCESS == code) { |
580 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE, |
581 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
582 | 0 | } |
583 | |
|
584 | 0 | if (TSDB_CODE_SUCCESS != code) { |
585 | 0 | break; |
586 | 0 | } |
587 | 0 | } |
588 | 0 | return code; |
589 | 0 | } |
590 | | |
591 | 0 | static int32_t collectMetaKeyFromDropStable(SCollectMetaKeyCxt* pCxt, SDropSuperTableStmt* pStmt) { |
592 | 0 | int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
593 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
594 | 0 | if (TSDB_CODE_SUCCESS == code) { |
595 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
596 | 0 | } |
597 | 0 | if (TSDB_CODE_SUCCESS == code) { |
598 | 0 | if (pStmt->withOpt) { |
599 | 0 | code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
600 | 0 | } else { |
601 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
602 | 0 | PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache); |
603 | 0 | } |
604 | 0 | } |
605 | 0 | return code; |
606 | 0 | } |
607 | | |
608 | 0 | static int32_t collectMetaKeyFromDropVtable(SCollectMetaKeyCxt* pCxt, SDropVirtualTableStmt* pStmt) { |
609 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
610 | 0 | if (pStmt->withOpt) { |
611 | 0 | code = reserveTableUidInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
612 | 0 | if (TSDB_CODE_SUCCESS == code) { |
613 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
614 | 0 | } |
615 | 0 | if (TSDB_CODE_SUCCESS == code) { |
616 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
617 | 0 | } |
618 | 0 | } else { |
619 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
620 | 0 | if (TSDB_CODE_SUCCESS == code) { |
621 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
622 | 0 | } |
623 | 0 | if (TSDB_CODE_SUCCESS == code) { |
624 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
625 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
626 | 0 | } |
627 | 0 | if (TSDB_CODE_SUCCESS == code) { |
628 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
629 | 0 | PRIV_CM_DROP, PRIV_OBJ_TBL, pCxt->pMetaCache); |
630 | 0 | } |
631 | 0 | } |
632 | 0 | return code; |
633 | 0 | } |
634 | | |
635 | | |
636 | | |
637 | 0 | static int32_t collectMetaKeyFromAlterTable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) { |
638 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
639 | |
|
640 | 0 | if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_MULTI_TABLE_TAG_VAL) { |
641 | 0 | SNode* pNode = NULL; |
642 | 0 | FOREACH(pNode, pStmt->pList) { |
643 | 0 | SAlterTableUpdateTagValClause* pClause = (SAlterTableUpdateTagValClause*)pNode; |
644 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache); |
645 | 0 | if (code != TSDB_CODE_SUCCESS) { |
646 | 0 | break; |
647 | 0 | } |
648 | | |
649 | 0 | SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId}; |
650 | 0 | tstrncpy(name.dbname, pClause->dbName, TSDB_DB_NAME_LEN); |
651 | 0 | tstrncpy(name.tname, pClause->tableName, TSDB_TABLE_NAME_LEN); |
652 | 0 | code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name); |
653 | 0 | if (code != TSDB_CODE_SUCCESS) { |
654 | 0 | break; |
655 | 0 | } |
656 | | |
657 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache); |
658 | 0 | if (code != TSDB_CODE_SUCCESS) { |
659 | 0 | break; |
660 | 0 | } |
661 | | |
662 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache); |
663 | 0 | if (code != TSDB_CODE_SUCCESS) { |
664 | 0 | break; |
665 | 0 | } |
666 | | |
667 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
668 | 0 | if (code != TSDB_CODE_SUCCESS) { |
669 | 0 | break; |
670 | 0 | } |
671 | | |
672 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, pClause->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache); |
673 | 0 | if (code != TSDB_CODE_SUCCESS) { |
674 | 0 | break; |
675 | 0 | } |
676 | 0 | } |
677 | |
|
678 | 0 | return code; |
679 | 0 | } |
680 | | |
681 | 0 | if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_CHILD_TABLE_TAG_VAL) { |
682 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
683 | 0 | if (TSDB_CODE_SUCCESS != code) { |
684 | 0 | return code; |
685 | 0 | } |
686 | | |
687 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
688 | 0 | if (TSDB_CODE_SUCCESS != code) { |
689 | 0 | return code; |
690 | 0 | } |
691 | | |
692 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
693 | 0 | if (TSDB_CODE_SUCCESS != code) { |
694 | 0 | return code; |
695 | 0 | } |
696 | | |
697 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
698 | 0 | if (TSDB_CODE_SUCCESS != code) { |
699 | 0 | return code; |
700 | 0 | } |
701 | | |
702 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache); |
703 | 0 | return code; |
704 | 0 | } |
705 | | |
706 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
707 | 0 | if (code != TSDB_CODE_SUCCESS) { |
708 | 0 | return code; |
709 | 0 | } |
710 | | |
711 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
712 | 0 | if (code != TSDB_CODE_SUCCESS) { |
713 | 0 | return code; |
714 | 0 | } |
715 | | |
716 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
717 | 0 | if (code != TSDB_CODE_SUCCESS) { |
718 | 0 | return code; |
719 | 0 | } |
720 | | |
721 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
722 | 0 | if (code != TSDB_CODE_SUCCESS) { |
723 | 0 | return code; |
724 | 0 | } |
725 | | |
726 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache); |
727 | 0 | if (TSDB_CODE_SUCCESS == code) { |
728 | | // ALTER TABLE ... SECURITY_LEVEL uses PRIV_SECURITY_POLICY_ALTER as primary check: pre-fetch unconditionally. |
729 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
730 | 0 | PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache); |
731 | 0 | } |
732 | 0 | return code; |
733 | 0 | } |
734 | | |
735 | | |
736 | | |
737 | 0 | static int32_t collectMetaKeyFromAlterStable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) { |
738 | 0 | if (pStmt->alterType == TSDB_ALTER_TABLE_UPDATE_MULTI_TABLE_TAG_VAL) { |
739 | | // TODO: should return TSDB_CODE_PAR_INVALID_ALTER_TABLE directly |
740 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
741 | 0 | SNode* pNode = NULL; |
742 | 0 | FOREACH(pNode, pStmt->pList) { |
743 | 0 | SAlterTableUpdateTagValClause* pClause = (SAlterTableUpdateTagValClause*)pNode; |
744 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pClause->dbName, pCxt->pMetaCache); |
745 | 0 | if (code != TSDB_CODE_SUCCESS) break; |
746 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pClause->dbName, pClause->tableName, pCxt->pMetaCache); |
747 | 0 | if (code != TSDB_CODE_SUCCESS) break; |
748 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
749 | 0 | if (code != TSDB_CODE_SUCCESS) break; |
750 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pClause->dbName, pClause->tableName, PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache); |
751 | 0 | if (code != TSDB_CODE_SUCCESS) break; |
752 | 0 | } |
753 | 0 | return code; |
754 | 0 | } |
755 | | |
756 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
757 | 0 | if (TSDB_CODE_SUCCESS == code) { |
758 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
759 | 0 | } |
760 | 0 | if (TSDB_CODE_SUCCESS == code) { |
761 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
762 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
763 | 0 | } |
764 | 0 | if (TSDB_CODE_SUCCESS == code) { |
765 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
766 | 0 | PRIV_CM_ALTER, PRIV_OBJ_TBL, pCxt->pMetaCache); |
767 | 0 | } |
768 | 0 | if (TSDB_CODE_SUCCESS == code) { |
769 | | // ALTER TABLE ... SECURITY_LEVEL uses PRIV_SECURITY_POLICY_ALTER as primary check: pre-fetch unconditionally. |
770 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
771 | 0 | PRIV_SECURITY_POLICY_ALTER, 0, pCxt->pMetaCache); |
772 | 0 | } |
773 | 0 | return code; |
774 | 0 | } |
775 | | |
776 | | |
777 | | |
778 | 0 | static int32_t collectMetaKeyFromAlterVtable(SCollectMetaKeyCxt* pCxt, SAlterTableStmt* pStmt) { |
779 | 0 | PAR_ERR_RET(collectMetaKeyFromAlterTable(pCxt, pStmt)); |
780 | | |
781 | 0 | if (pStmt->alterType == TSDB_ALTER_TABLE_ALTER_COLUMN_REF || |
782 | 0 | pStmt->alterType == TSDB_ALTER_TABLE_ADD_COLUMN_WITH_COLUMN_REF) { |
783 | 0 | PAR_ERR_RET( |
784 | 0 | reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->refDbName, pStmt->refTableName, pCxt->pMetaCache)); |
785 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName, NULL, |
786 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache)); |
787 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->refDbName, |
788 | 0 | pStmt->refTableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache)); |
789 | 0 | } |
790 | | |
791 | 0 | return TSDB_CODE_SUCCESS; |
792 | 0 | } |
793 | | |
794 | | |
795 | | |
796 | 28 | static int32_t collectMetaKeyFromUseDatabase(SCollectMetaKeyCxt* pCxt, SUseDatabaseStmt* pStmt) { |
797 | 28 | int32_t code = reserveDbVgVersionInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
798 | 28 | if (TSDB_CODE_SUCCESS == code) { |
799 | 28 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
800 | 28 | } |
801 | 28 | if (TSDB_CODE_SUCCESS == code) { |
802 | 28 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
803 | 28 | PRIV_OBJ_DB, pCxt->pMetaCache); |
804 | 28 | } |
805 | 28 | return code; |
806 | 28 | } |
807 | | |
808 | 0 | static int32_t collectMetaKeyFromCreateIndex(SCollectMetaKeyCxt* pCxt, SCreateIndexStmt* pStmt) { |
809 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
810 | 0 | if (INDEX_TYPE_SMA == pStmt->indexType || INDEX_TYPE_NORMAL == pStmt->indexType) { |
811 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
812 | 0 | if (TSDB_CODE_SUCCESS == code) { |
813 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
814 | 0 | } |
815 | 0 | if (TSDB_CODE_SUCCESS == code) { |
816 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
817 | 0 | } |
818 | 0 | if (TSDB_CODE_SUCCESS == code) { |
819 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
820 | 0 | } |
821 | 0 | if (TSDB_CODE_SUCCESS == code) { |
822 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
823 | 0 | PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache); |
824 | 0 | } |
825 | 0 | if (TSDB_CODE_SUCCESS == code) { |
826 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
827 | 0 | PRIV_IDX_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache); |
828 | 0 | } |
829 | 0 | if (TSDB_CODE_SUCCESS == code) { |
830 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
831 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
832 | 0 | } |
833 | 0 | } |
834 | 0 | return code; |
835 | 0 | } |
836 | | |
837 | 0 | static int32_t collectMetaKeyFromDropIndex(SCollectMetaKeyCxt* pCxt, SDropIndexStmt* pStmt) { |
838 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->indexDbName, pCxt->pMetaCache); |
839 | 0 | if (TSDB_CODE_SUCCESS == code) { |
840 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->indexDbName, NULL, |
841 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
842 | 0 | } |
843 | 0 | if (TSDB_CODE_SUCCESS == code) { |
844 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->indexDbName, pStmt->indexName, |
845 | 0 | PRIV_CM_DROP, PRIV_OBJ_IDX, pCxt->pMetaCache); |
846 | 0 | } |
847 | 0 | return code; |
848 | 0 | } |
849 | | |
850 | 0 | static int32_t collectMetaKeyFromCreateTopic(SCollectMetaKeyCxt* pCxt, SCreateTopicStmt* pStmt) { |
851 | 0 | int32_t code = 0; |
852 | 0 | if (NULL != pStmt->pQuery) { |
853 | 0 | code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery); |
854 | 0 | } |
855 | 0 | if (NULL != pStmt->pWhere) { |
856 | 0 | code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->subDbName, pStmt->subSTbName, PRIV_TBL_SELECT, PRIV_OBJ_TBL); |
857 | 0 | } |
858 | 0 | if (pStmt->subDbName[0] != '\0') { |
859 | 0 | if (TSDB_CODE_SUCCESS == code) { |
860 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->subDbName, pCxt->pMetaCache); |
861 | 0 | } |
862 | 0 | if (TSDB_CODE_SUCCESS == code) { |
863 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->subDbName, NULL, |
864 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
865 | 0 | } |
866 | 0 | if (TSDB_CODE_SUCCESS == code) { |
867 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->subDbName, NULL, |
868 | 0 | PRIV_TOPIC_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
869 | 0 | } |
870 | 0 | } |
871 | 0 | return code; |
872 | 0 | } |
873 | | |
874 | 0 | static int32_t collectMetaKeyFromExplain(SCollectMetaKeyCxt* pCxt, SExplainStmt* pStmt) { |
875 | 0 | return collectMetaKeyFromQuery(pCxt, pStmt->pQuery); |
876 | 0 | } |
877 | | |
878 | 100 | static int32_t collectMetaKeyFromDescribe(SCollectMetaKeyCxt* pCxt, SDescribeStmt* pStmt) { |
879 | 100 | SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId}; |
880 | 100 | tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN); |
881 | 100 | tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN); |
882 | 100 | int32_t code = catalogRemoveTableRelatedMeta(pCxt->pParseCxt->pCatalog, &name); |
883 | | #ifdef TD_ENTERPRISE |
884 | | if (TSDB_CODE_SUCCESS == code) { |
885 | | char dbFName[TSDB_DB_FNAME_LEN]; |
886 | | (void)tNameGetFullDbName(&name, dbFName); |
887 | | code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->tableName, 0); |
888 | | } |
889 | | #endif |
890 | 100 | if (TSDB_CODE_SUCCESS == code) { |
891 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
892 | 0 | } |
893 | 100 | if (TSDB_CODE_SUCCESS == code) { |
894 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
895 | 0 | } |
896 | 100 | return code; |
897 | 100 | } |
898 | | |
899 | 0 | static int32_t collectMetaKeyFromCreateStream(SCollectMetaKeyCxt* pCxt, SCreateStreamStmt* pStmt) { |
900 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
901 | |
|
902 | 0 | if (strcmp(pStmt->targetTabName, "") != 0) { |
903 | 0 | PAR_ERR_RET( |
904 | 0 | reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, pCxt->pMetaCache)); |
905 | 0 | (void)reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pStmt->targetTabName, |
906 | 0 | pCxt->pMetaCache); |
907 | 0 | PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->targetDbName, pCxt->pMetaCache)); |
908 | 0 | } |
909 | 0 | PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache)); |
910 | 0 | SRealTableNode* pTriggerTable = (SRealTableNode*)((SStreamTriggerNode*)pStmt->pTrigger)->pTrigerTable; |
911 | 0 | if (pTriggerTable) { |
912 | 0 | SCollectMetaKeyFromExprCxt cxt = { |
913 | 0 | .pComCxt = pCxt, .hasLastRowOrLast = false, .tbnameCollect = true, .errCode = TSDB_CODE_SUCCESS}; |
914 | 0 | cxt.pComCxt->collectVStbRefDbs = true; |
915 | 0 | EDealRes res = collectMetaKeyFromRealTable(&cxt, pTriggerTable); |
916 | 0 | PAR_ERR_RET(cxt.errCode); |
917 | 0 | PAR_ERR_RET(reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache)); |
918 | 0 | PAR_ERR_RET(reserveDbCfgInCache(pCxt->pParseCxt->acctId, pTriggerTable->table.dbName, pCxt->pMetaCache)); |
919 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pTriggerTable->table.dbName, |
920 | 0 | pTriggerTable->table.tableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL, |
921 | 0 | pCxt->pMetaCache)); |
922 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pTriggerTable->table.dbName, |
923 | 0 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache)); |
924 | 0 | } |
925 | 0 | if (pStmt->pQuery) { |
926 | 0 | PAR_ERR_RET(collectMetaKeyFromQuery(pCxt, pStmt->pQuery)); |
927 | 0 | } |
928 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->streamDbName, NULL, |
929 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache)); |
930 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->streamDbName, NULL, |
931 | 0 | PRIV_STREAM_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache)); |
932 | 0 | if (pStmt->targetDbName[0] != '\0') { |
933 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->targetDbName, NULL, |
934 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache)); |
935 | 0 | PAR_ERR_RET(reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->targetDbName, NULL, |
936 | 0 | PRIV_TBL_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache)); |
937 | 0 | } |
938 | | |
939 | 0 | return code; |
940 | 0 | } |
941 | | |
942 | 0 | static int32_t collectMetaKeyFromRecalculateStream(SCollectMetaKeyCxt* pCxt, SRecalcStreamStmt* pStmt) { |
943 | 0 | return reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->streamDbName, pCxt->pMetaCache); |
944 | 0 | } |
945 | | |
946 | 1 | static int32_t collectMetaKeyFromShowDnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
947 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DNODES, |
948 | 1 | pCxt->pMetaCache); |
949 | 1 | if (TSDB_CODE_SUCCESS == code) { |
950 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
951 | 1 | pCxt->pMetaCache); |
952 | 1 | } |
953 | 1 | return code; |
954 | 1 | } |
955 | | |
956 | 1 | static int32_t collectMetaKeyFromShowMnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
957 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MNODES, |
958 | 1 | pCxt->pMetaCache); |
959 | 1 | if (TSDB_CODE_SUCCESS == code) { |
960 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
961 | 1 | pCxt->pMetaCache); |
962 | 1 | } |
963 | 1 | return code; |
964 | 1 | } |
965 | | |
966 | 0 | static int32_t collectMetaKeyFromShowModules(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
967 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MODULES, |
968 | 0 | pCxt->pMetaCache); |
969 | 0 | return code; |
970 | 0 | } |
971 | | |
972 | 1 | static int32_t collectMetaKeyFromShowQnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
973 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_QNODES, |
974 | 1 | pCxt->pMetaCache); |
975 | 1 | if (TSDB_CODE_SUCCESS == code) { |
976 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
977 | 1 | pCxt->pMetaCache); |
978 | 1 | } |
979 | 1 | return code; |
980 | 1 | } |
981 | | |
982 | 1 | static int32_t collectMetaKeyFromShowSnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
983 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SNODES, |
984 | 1 | pCxt->pMetaCache); |
985 | 1 | if (TSDB_CODE_SUCCESS == code) { |
986 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
987 | 1 | pCxt->pMetaCache); |
988 | 1 | } |
989 | 1 | return code; |
990 | 1 | } |
991 | | |
992 | 1 | static int32_t collectMetaKeyFromShowAnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
993 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ANODES, |
994 | 1 | pCxt->pMetaCache); |
995 | 1 | if (TSDB_CODE_SUCCESS == code) { |
996 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
997 | 1 | pCxt->pMetaCache); |
998 | 1 | } |
999 | 1 | return code; |
1000 | 1 | } |
1001 | | |
1002 | 0 | static int32_t collectMetaKeyFromShowAnodesFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1003 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1004 | 0 | TSDB_INS_TABLE_ANODES_FULL, pCxt->pMetaCache); |
1005 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1006 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
1007 | 0 | pCxt->pMetaCache); |
1008 | 0 | } |
1009 | 0 | return code; |
1010 | 0 | } |
1011 | | |
1012 | 1 | static int32_t collectMetaKeyFromShowBnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1013 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_BNODES, |
1014 | 1 | pCxt->pMetaCache); |
1015 | 1 | if (TSDB_CODE_SUCCESS == code) { |
1016 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
1017 | 1 | pCxt->pMetaCache); |
1018 | 1 | } |
1019 | 1 | return code; |
1020 | 1 | } |
1021 | | |
1022 | 0 | static int32_t collectMetaKeyFromShowBackupNodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1023 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1024 | 0 | TSDB_INS_TABLE_BACKUP_NODES, pCxt->pMetaCache); |
1025 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1026 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
1027 | 0 | pCxt->pMetaCache); |
1028 | 0 | } |
1029 | 0 | return code; |
1030 | 0 | } |
1031 | | |
1032 | 1 | static int32_t collectMetaKeyFromShowXnodes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1033 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODES, |
1034 | 1 | pCxt->pMetaCache); |
1035 | 1 | if (TSDB_CODE_SUCCESS == code) { |
1036 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
1037 | 1 | pCxt->pMetaCache); |
1038 | 1 | } |
1039 | 1 | return code; |
1040 | 1 | } |
1041 | | |
1042 | 2 | static int32_t collectMetaKeyFromShowXnodeTasks(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1043 | 2 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1044 | 2 | TSDB_INS_TABLE_XNODE_TASKS, pCxt->pMetaCache); |
1045 | 2 | if (TSDB_CODE_SUCCESS == code) { |
1046 | 2 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CM_SHOW, 0, |
1047 | 2 | pCxt->pMetaCache); |
1048 | 2 | } |
1049 | 2 | return code; |
1050 | 2 | } |
1051 | 2 | static int32_t collectMetaKeyFromShowXnodeAgents(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1052 | 2 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1053 | 2 | TSDB_INS_TABLE_XNODE_AGENTS, pCxt->pMetaCache); |
1054 | 2 | if (TSDB_CODE_SUCCESS == code) { |
1055 | 2 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
1056 | 2 | pCxt->pMetaCache); |
1057 | 2 | } |
1058 | 2 | return code; |
1059 | 2 | } |
1060 | 1 | static int32_t collectMetaKeyFromShowXnodeJobs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1061 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_XNODE_JOBS, |
1062 | 1 | pCxt->pMetaCache); |
1063 | 1 | if (TSDB_CODE_SUCCESS == code) { |
1064 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CM_SHOW, 0, |
1065 | 1 | pCxt->pMetaCache); |
1066 | 1 | } |
1067 | 1 | return code; |
1068 | 1 | } |
1069 | | |
1070 | 0 | static int32_t collectMetaKeyFromShowVirtualTablesReferencing(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1071 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1072 | 0 | TSDB_INS_TABLE_VIRTUAL_TABLES_REFERENCING, pCxt->pMetaCache); |
1073 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1074 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_NODES_SHOW, 0, |
1075 | 0 | pCxt->pMetaCache); |
1076 | 0 | } |
1077 | 0 | return code; |
1078 | 0 | } |
1079 | | |
1080 | 0 | static int32_t collectMetaKeyFromShowArbGroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1081 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ARBGROUPS, |
1082 | 0 | pCxt->pMetaCache); |
1083 | 0 | return code; |
1084 | 0 | } |
1085 | | |
1086 | 0 | static int32_t collectMetaKeyFromShowCluster(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1087 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CLUSTER, |
1088 | 0 | pCxt->pMetaCache); |
1089 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1090 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CLUSTER_SHOW, 0, |
1091 | 0 | pCxt->pMetaCache); |
1092 | 0 | } |
1093 | 0 | return code; |
1094 | 0 | } |
1095 | | |
1096 | 0 | static int32_t collectMetaKeyFromShowSecurityPolicies(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1097 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SECURITY_POLICIES, |
1098 | 0 | pCxt->pMetaCache); |
1099 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1100 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SECURITY_POLICIES_SHOW, 0, |
1101 | 0 | pCxt->pMetaCache); |
1102 | 0 | } |
1103 | 0 | return code; |
1104 | 0 | } |
1105 | | |
1106 | 0 | static int32_t collectMetaKeyFromShowDatabases(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1107 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_DATABASES, |
1108 | 0 | pCxt->pMetaCache); |
1109 | 0 | } |
1110 | | |
1111 | 0 | static int32_t collectMetaKeyFromShowFunctions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1112 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FUNCTIONS, |
1113 | 0 | pCxt->pMetaCache); |
1114 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1115 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_FUNC_SHOW, 0, |
1116 | 0 | pCxt->pMetaCache); |
1117 | 0 | } |
1118 | 0 | return code; |
1119 | 0 | } |
1120 | | |
1121 | 0 | static int32_t collectMetaKeyFromShowIndexes(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1122 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_INDEXES, |
1123 | 0 | pCxt->pMetaCache); |
1124 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1125 | 0 | code = |
1126 | 0 | reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal, |
1127 | 0 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1128 | 0 | } |
1129 | 0 | return code; |
1130 | 0 | } |
1131 | | |
1132 | 31 | static int32_t collectMetaKeyFromShowStables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1133 | 31 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STABLES, |
1134 | 31 | pCxt->pMetaCache); |
1135 | 31 | if (TSDB_CODE_SUCCESS == code) { |
1136 | 31 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1137 | 31 | } |
1138 | 31 | if (TSDB_CODE_SUCCESS == code) { |
1139 | 31 | code = |
1140 | 31 | reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal, |
1141 | 31 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1142 | 31 | } |
1143 | 31 | return code; |
1144 | 31 | } |
1145 | | |
1146 | 0 | static int32_t collectMetaKeyFromShowStreams(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1147 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_STREAMS, |
1148 | 0 | pCxt->pMetaCache); |
1149 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1150 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1151 | 0 | } |
1152 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1153 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1154 | 0 | } |
1155 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1156 | 0 | code = |
1157 | 0 | reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal, |
1158 | 0 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1159 | 0 | } |
1160 | 0 | return code; |
1161 | 0 | } |
1162 | | |
1163 | 64 | static int32_t collectMetaKeyFromShowTables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1164 | 64 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TABLES, |
1165 | 64 | pCxt->pMetaCache); |
1166 | 64 | if (TSDB_CODE_SUCCESS == code) { |
1167 | 64 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1168 | 64 | } |
1169 | | |
1170 | 64 | if (TSDB_CODE_SUCCESS == code) { |
1171 | 64 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1172 | 64 | } |
1173 | 64 | if (TSDB_CODE_SUCCESS == code) { |
1174 | 64 | code = |
1175 | 64 | reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal, |
1176 | 64 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1177 | 64 | } |
1178 | 64 | return code; |
1179 | 64 | } |
1180 | | |
1181 | 0 | static int32_t collectMetaKeyFromShowFilesets(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1182 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_FILESETS, |
1183 | 0 | pCxt->pMetaCache); |
1184 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1185 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1186 | 0 | } |
1187 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1188 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1189 | 0 | } |
1190 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1191 | 0 | code = |
1192 | 0 | reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal, |
1193 | 0 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1194 | 0 | } |
1195 | 0 | return code; |
1196 | 0 | } |
1197 | | |
1198 | 0 | static int32_t collectMetaKeyFromShowTags(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1199 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TAGS, |
1200 | 0 | pCxt->pMetaCache); |
1201 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1202 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, |
1203 | 0 | ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache); |
1204 | 0 | } |
1205 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1206 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1207 | 0 | } |
1208 | 0 | if (TSDB_CODE_SUCCESS == code && NULL != pStmt->pTbName) { |
1209 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, |
1210 | 0 | ((SValueNode*)pStmt->pTbName)->literal, pCxt->pMetaCache); |
1211 | 0 | } |
1212 | 0 | return code; |
1213 | 0 | } |
1214 | | |
1215 | 0 | static int32_t collectMetaKeyFromShowStableTags(SCollectMetaKeyCxt* pCxt, SShowTableTagsStmt* pStmt) { |
1216 | 0 | return collectMetaKeyFromRealTableImpl(pCxt, ((SValueNode*)pStmt->pDbName)->literal, |
1217 | 0 | ((SValueNode*)pStmt->pTbName)->literal, PRIV_TBL_SELECT, PRIV_OBJ_TBL); |
1218 | 0 | } |
1219 | | |
1220 | 0 | static int32_t collectMetaKeyFromShowUsers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1221 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS, |
1222 | 0 | pCxt->pMetaCache); |
1223 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1224 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_USER_SHOW, 0, |
1225 | 0 | pCxt->pMetaCache); |
1226 | 0 | } |
1227 | 0 | return code; |
1228 | 0 | } |
1229 | | |
1230 | 0 | static int32_t collectMetaKeyFromShowUsersFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1231 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_USERS_FULL, |
1232 | 0 | pCxt->pMetaCache); |
1233 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1234 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_USER_SHOW, 0, |
1235 | 0 | pCxt->pMetaCache); |
1236 | 0 | } |
1237 | 0 | return code; |
1238 | 0 | } |
1239 | | |
1240 | 1 | static int32_t collectMetaKeyFromShowRoles(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1241 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ROLES, |
1242 | 1 | pCxt->pMetaCache); |
1243 | 1 | if (TSDB_CODE_SUCCESS == code) { |
1244 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_ROLE_SHOW, 0, |
1245 | 1 | pCxt->pMetaCache); |
1246 | 1 | } |
1247 | 1 | return code; |
1248 | 1 | } |
1249 | | |
1250 | 1 | static int32_t collectMetaKeyFromShowLicence(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1251 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_LICENCES, |
1252 | 1 | pCxt->pMetaCache); |
1253 | 1 | if (TSDB_CODE_SUCCESS == code) { |
1254 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0, |
1255 | 1 | pCxt->pMetaCache); |
1256 | 1 | } |
1257 | 1 | return code; |
1258 | 1 | } |
1259 | | |
1260 | 0 | static int32_t collectMetaKeyFromShowVgroups(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1261 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS, |
1262 | 0 | pCxt->pMetaCache); |
1263 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1264 | | // just to verify whether the database exists |
1265 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1266 | 0 | } |
1267 | 0 | return code; |
1268 | 0 | } |
1269 | | |
1270 | 0 | static int32_t collectMetaKeyFromShowTopics(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1271 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOPICS, |
1272 | 0 | pCxt->pMetaCache); |
1273 | 0 | } |
1274 | | |
1275 | 0 | static int32_t collectMetaKeyFromShowConsumers(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1276 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, |
1277 | 0 | TSDB_PERFS_TABLE_CONSUMERS, pCxt->pMetaCache); |
1278 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1279 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CONSUMER_SHOW, 0, |
1280 | 0 | pCxt->pMetaCache); |
1281 | 0 | } |
1282 | 0 | return code; |
1283 | 0 | } |
1284 | | |
1285 | 0 | static int32_t collectMetaKeyFromShowConnections(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1286 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, |
1287 | 0 | TSDB_PERFS_TABLE_CONNECTIONS, pCxt->pMetaCache); |
1288 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1289 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_CONN_SHOW, 0, |
1290 | 0 | pCxt->pMetaCache); |
1291 | 0 | } |
1292 | 0 | return code; |
1293 | 0 | } |
1294 | | |
1295 | 1 | static int32_t collectMetaKeyFromShowQueries(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1296 | 1 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_QUERIES, |
1297 | 1 | pCxt->pMetaCache); |
1298 | 1 | if (TSDB_CODE_SUCCESS == code) { |
1299 | 1 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_QUERY_SHOW, 0, |
1300 | 1 | pCxt->pMetaCache); |
1301 | 1 | } |
1302 | 1 | return code; |
1303 | 1 | } |
1304 | | |
1305 | 0 | static int32_t collectMetaKeyFromShowVariables(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1306 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_CONFIGS, |
1307 | 0 | pCxt->pMetaCache); |
1308 | 0 | } |
1309 | | |
1310 | 0 | static int32_t collectMetaKeyFromShowDnodeVariables(SCollectMetaKeyCxt* pCxt, SShowDnodeVariablesStmt* pStmt) { |
1311 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1312 | 0 | TSDB_INS_TABLE_DNODE_VARIABLES, pCxt->pMetaCache); |
1313 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1314 | 0 | code = reserveDnodeRequiredInCache(pCxt->pMetaCache); |
1315 | 0 | } |
1316 | 0 | return code; |
1317 | 0 | } |
1318 | | |
1319 | 1 | static int32_t collectMetaKeyFromShowVnodes(SCollectMetaKeyCxt* pCxt, SShowVnodesStmt* pStmt) { |
1320 | 1 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VNODES, |
1321 | 1 | pCxt->pMetaCache); |
1322 | 1 | } |
1323 | | |
1324 | 0 | static int32_t collectMetaKeyFromShowUserPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1325 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1326 | 0 | TSDB_INS_TABLE_USER_PRIVILEGES, pCxt->pMetaCache); |
1327 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1328 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0, |
1329 | 0 | pCxt->pMetaCache); |
1330 | 0 | } |
1331 | 0 | return code; |
1332 | 0 | } |
1333 | | |
1334 | 0 | static int32_t collectMetaKeyFromShowRolePrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1335 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1336 | 0 | TSDB_INS_TABLE_ROLE_PRIVILEGES, pCxt->pMetaCache); |
1337 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1338 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0, |
1339 | 0 | pCxt->pMetaCache); |
1340 | 0 | } |
1341 | 0 | return code; |
1342 | 0 | } |
1343 | | |
1344 | 0 | static int32_t collectMetaKeyFromShowRoleColPrivileges(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1345 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1346 | 0 | TSDB_INS_TABLE_ROLE_COL_PRIVILEGES, pCxt->pMetaCache); |
1347 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1348 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_SHOW_PRIVILEGES, 0, |
1349 | 0 | pCxt->pMetaCache); |
1350 | 0 | } |
1351 | 0 | return code; |
1352 | 0 | } |
1353 | | |
1354 | 0 | static int32_t collectMetaKeyFromShowViews(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1355 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VIEWS, |
1356 | 0 | pCxt->pMetaCache); |
1357 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1358 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1359 | 0 | } |
1360 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1361 | 0 | code = |
1362 | 0 | reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal, |
1363 | 0 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1364 | 0 | } |
1365 | 0 | return code; |
1366 | 0 | } |
1367 | | |
1368 | 0 | static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1369 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACTS, |
1370 | 0 | pCxt->pMetaCache); |
1371 | 0 | return code; |
1372 | 0 | } |
1373 | | |
1374 | 0 | static int32_t collectMetaKeyFromShowScans(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1375 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SCANS, |
1376 | 0 | pCxt->pMetaCache); |
1377 | 0 | return code; |
1378 | 0 | } |
1379 | | |
1380 | 0 | static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1381 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1382 | 0 | TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache); |
1383 | 0 | return code; |
1384 | 0 | } |
1385 | | |
1386 | 0 | static int32_t collectMetaKeyFromShowScanDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1387 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1388 | 0 | TSDB_INS_TABLE_SCAN_DETAILS, pCxt->pMetaCache); |
1389 | 0 | return code; |
1390 | 0 | } |
1391 | | |
1392 | 0 | static int32_t collectMetaKeyFromShowSsMigrates(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1393 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SSMIGRATES, |
1394 | 0 | pCxt->pMetaCache); |
1395 | 0 | return code; |
1396 | 0 | } |
1397 | | |
1398 | 0 | static int32_t collectMetaKeyFromShowTokens(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1399 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TOKENS, |
1400 | 0 | pCxt->pMetaCache); |
1401 | 0 | return code; |
1402 | 0 | } |
1403 | | |
1404 | 0 | static int32_t collectMetaKeyFromShowTransactionDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1405 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1406 | 0 | TSDB_INS_TABLE_TRANSACTION_DETAILS, pCxt->pMetaCache); |
1407 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1408 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_TRANS_SHOW, 0, |
1409 | 0 | pCxt->pMetaCache); |
1410 | 0 | } |
1411 | 0 | return code; |
1412 | 0 | } |
1413 | | |
1414 | 0 | static int32_t collectMetaKeyFromShowGrantsFull(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1415 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1416 | 0 | TSDB_INS_TABLE_GRANTS_FULL, pCxt->pMetaCache); |
1417 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1418 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0, |
1419 | 0 | pCxt->pMetaCache); |
1420 | 0 | } |
1421 | 0 | return code; |
1422 | 0 | } |
1423 | | |
1424 | 0 | static int32_t collectMetaKeyFromShowGrantsLogs(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1425 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1426 | 0 | TSDB_INS_TABLE_GRANTS_LOGS, pCxt->pMetaCache); |
1427 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1428 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0, |
1429 | 0 | pCxt->pMetaCache); |
1430 | 0 | } |
1431 | 0 | return code; |
1432 | 0 | } |
1433 | | |
1434 | 0 | static int32_t collectMetaKeyFromShowClusterMachines(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1435 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MACHINES, |
1436 | 0 | pCxt->pMetaCache); |
1437 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1438 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_GRANTS_SHOW, 0, |
1439 | 0 | pCxt->pMetaCache); |
1440 | 0 | } |
1441 | 0 | return code; |
1442 | 0 | } |
1443 | | |
1444 | 0 | static int32_t collectMetaKeyFromShowEncryptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1445 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_ENCRYPTIONS, |
1446 | 0 | pCxt->pMetaCache); |
1447 | 0 | } |
1448 | | |
1449 | 0 | static int32_t collectMetaKeyFromShowEncryptAlgorithms(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1450 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1451 | 0 | TSDB_INS_TABLE_ENCRYPT_ALGORITHMS, pCxt->pMetaCache); |
1452 | 0 | return code; |
1453 | 0 | } |
1454 | | |
1455 | 0 | static int32_t collectMetaKeyFromShowEncryptStatus(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1456 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1457 | 0 | TSDB_INS_TABLE_ENCRYPT_STATUS, pCxt->pMetaCache); |
1458 | 0 | return code; |
1459 | 0 | } |
1460 | | |
1461 | 0 | static int32_t collectMetaKeyFromShowMounts(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1462 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_MOUNTS, |
1463 | 0 | pCxt->pMetaCache); |
1464 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1465 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_MOUNT_SHOW, 0, |
1466 | 0 | pCxt->pMetaCache); |
1467 | 0 | } |
1468 | 0 | return code; |
1469 | 0 | } |
1470 | | |
1471 | 0 | static int32_t collectMetaKeyFromShowCreateDatabase(SCollectMetaKeyCxt* pCxt, SShowCreateDatabaseStmt* pStmt) { |
1472 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1473 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1474 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
1475 | 0 | PRIV_CM_SHOW_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1476 | 0 | } |
1477 | 0 | return code; |
1478 | 0 | } |
1479 | | |
1480 | 0 | static int32_t collectMetaKeyFromShowCreateTable(SCollectMetaKeyCxt* pCxt, SShowCreateTableStmt* pStmt) { |
1481 | 0 | SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId}; |
1482 | 0 | tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN); |
1483 | 0 | tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN); |
1484 | 0 | int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name); |
1485 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1486 | 0 | code = reserveTableCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
1487 | 0 | } |
1488 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1489 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1490 | 0 | } |
1491 | | // if (TSDB_CODE_SUCCESS == code) { |
1492 | | // code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
1493 | | // AUTH_TYPE_READ, pCxt->pMetaCache); |
1494 | | // } |
1495 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1496 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1497 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1498 | 0 | } |
1499 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1500 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
1501 | 0 | PRIV_CM_SHOW_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache); |
1502 | 0 | } |
1503 | 0 | return code; |
1504 | 0 | } |
1505 | | |
1506 | 0 | static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowCreateViewStmt* pStmt) { |
1507 | 0 | SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId}; |
1508 | 0 | tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN); |
1509 | 0 | tstrncpy(name.tname, pStmt->viewName, TSDB_TABLE_NAME_LEN); |
1510 | 0 | char dbFName[TSDB_DB_FNAME_LEN]; |
1511 | 0 | (void)tNameGetFullDbName(&name, dbFName); |
1512 | 0 | int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0); |
1513 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1514 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1515 | 0 | } |
1516 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1517 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1518 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1519 | 0 | } |
1520 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1521 | 0 | code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, |
1522 | 0 | PRIV_CM_SHOW_CREATE, PRIV_OBJ_VIEW, pCxt->pMetaCache); |
1523 | 0 | } |
1524 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1525 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); |
1526 | 0 | } |
1527 | 0 | pCxt->pMetaCache->forceFetchViewMeta = true; |
1528 | 0 | return code; |
1529 | 0 | } |
1530 | | |
1531 | 0 | static int32_t collectMetaKeyFromShowCreateRsma(SCollectMetaKeyCxt* pCxt, SShowCreateRsmaStmt* pStmt) { |
1532 | 0 | int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
1533 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1534 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1535 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1536 | 0 | } |
1537 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1538 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName, |
1539 | 0 | PRIV_CM_SHOW_CREATE, PRIV_OBJ_RSMA, pCxt->pMetaCache); |
1540 | 0 | } |
1541 | 0 | return code; |
1542 | 0 | } |
1543 | | |
1544 | 0 | static int32_t collectMetaKeyFromShowCreateStream(SCollectMetaKeyCxt* pCxt, SShowCreateStreamStmt* pStmt) { |
1545 | 0 | int32_t code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
1546 | 0 | PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1547 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1548 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->streamName, |
1549 | 0 | PRIV_CM_SHOW_CREATE, PRIV_OBJ_STREAM, pCxt->pMetaCache); |
1550 | 0 | } |
1551 | 0 | return code; |
1552 | 0 | } |
1553 | | |
1554 | 0 | static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1555 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS, |
1556 | 0 | pCxt->pMetaCache); |
1557 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1558 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_APPS_SHOW, 0, |
1559 | 0 | pCxt->pMetaCache); |
1560 | 0 | } |
1561 | 0 | return code; |
1562 | 0 | } |
1563 | | |
1564 | 0 | static int32_t collectMetaKeyFromShowInstances(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1565 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_INSTANCES, |
1566 | 0 | pCxt->pMetaCache); |
1567 | 0 | } |
1568 | | |
1569 | 0 | static int32_t collectMetaKeyFromShowTransactions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1570 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_TRANS, |
1571 | 0 | pCxt->pMetaCache); |
1572 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1573 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, PRIV_TRANS_SHOW, 0, |
1574 | 0 | pCxt->pMetaCache); |
1575 | 0 | } |
1576 | 0 | return code; |
1577 | 0 | } |
1578 | | |
1579 | 0 | static int32_t collectMetaKeyFromDelete(SCollectMetaKeyCxt* pCxt, SDeleteStmt* pStmt) { |
1580 | 0 | STableNode* pTable = (STableNode*)pStmt->pFromTable; |
1581 | 0 | return collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, PRIV_TBL_DELETE, PRIV_OBJ_TBL); |
1582 | 0 | } |
1583 | | |
1584 | 0 | static int32_t collectMetaKeyFromInsert(SCollectMetaKeyCxt* pCxt, SInsertStmt* pStmt) { |
1585 | 0 | STableNode* pTable = (STableNode*)pStmt->pTable; |
1586 | 0 | int32_t code = |
1587 | 0 | collectMetaKeyFromRealTableImpl(pCxt, pTable->dbName, pTable->tableName, PRIV_TBL_INSERT, PRIV_OBJ_TBL); |
1588 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1589 | 0 | code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery); |
1590 | 0 | } |
1591 | 0 | return code; |
1592 | 0 | } |
1593 | | |
1594 | 0 | static int32_t collectMetaKeyFromShowBlockDist(SCollectMetaKeyCxt* pCxt, SShowTableDistributedStmt* pStmt) { |
1595 | 0 | SName name = {.type = TSDB_TABLE_NAME_T, .acctId = pCxt->pParseCxt->acctId}; |
1596 | 0 | tstrncpy(name.dbname, pStmt->dbName, TSDB_DB_NAME_LEN); |
1597 | 0 | tstrncpy(name.tname, pStmt->tableName, TSDB_TABLE_NAME_LEN); |
1598 | 0 | int32_t code = catalogRemoveTableMeta(pCxt->pParseCxt->pCatalog, &name); |
1599 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1600 | 0 | code = collectMetaKeyFromRealTableImpl(pCxt, pStmt->dbName, pStmt->tableName, PRIV_TBL_SELECT, PRIV_OBJ_TBL); |
1601 | 0 | } |
1602 | 0 | return code; |
1603 | 0 | } |
1604 | 0 | static int32_t collectMetaKeyFromShowValidateVtable(SCollectMetaKeyCxt* pCxt, SShowValidateVirtualTable* pStmt) { |
1605 | | // Collect database information |
1606 | 0 | int32_t code = 0; |
1607 | |
|
1608 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, |
1609 | 0 | TSDB_INS_TABLE_VIRTUAL_TABLES_REFERENCING, pCxt->pMetaCache); |
1610 | 0 | if (TSDB_CODE_SUCCESS == code && pStmt->tableName[0] != 0) { |
1611 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
1612 | 0 | } |
1613 | |
|
1614 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1615 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1616 | 0 | } |
1617 | 0 | if (TSDB_CODE_SUCCESS == code && pStmt->tableName[0] != 0) { |
1618 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
1619 | 0 | } |
1620 | 0 | return code; |
1621 | 0 | } |
1622 | | |
1623 | 0 | static int32_t collectMetaKeyFromShowSubscriptions(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1624 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_SUBSCRIPTIONS, |
1625 | 0 | pCxt->pMetaCache); |
1626 | 0 | } |
1627 | | |
1628 | 0 | static int32_t collectMetaKeyFromCompactDatabase(SCollectMetaKeyCxt* pCxt, SCompactDatabaseStmt* pStmt) { |
1629 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1630 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1631 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_COMPACT, |
1632 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1633 | 0 | } |
1634 | 0 | return code; |
1635 | 0 | } |
1636 | | |
1637 | 0 | static int32_t collectMetaKeyFromRollupDatabase(SCollectMetaKeyCxt* pCxt, SRollupDatabaseStmt* pStmt) { |
1638 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1639 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1640 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_ROLLUP, |
1641 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1642 | 0 | } |
1643 | 0 | return code; |
1644 | 0 | } |
1645 | | |
1646 | 0 | static int32_t collectMetaKeyFromScanDatabase(SCollectMetaKeyCxt* pCxt, SScanDatabaseStmt* pStmt) { |
1647 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1648 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1649 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_SCAN, |
1650 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1651 | 0 | } |
1652 | 0 | return code; |
1653 | 0 | } |
1654 | | |
1655 | 0 | static int32_t collectMetaKeyFromSsmigrateDatabase(SCollectMetaKeyCxt* pCxt, SSsMigrateDatabaseStmt* pStmt) { |
1656 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1657 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1658 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
1659 | 0 | PRIV_DB_SSMIGRATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1660 | 0 | } |
1661 | 0 | return code; |
1662 | 0 | } |
1663 | | |
1664 | 0 | static int32_t collectMetaKeyFromTrimDatabase(SCollectMetaKeyCxt* pCxt, STrimDatabaseStmt* pStmt) { |
1665 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1666 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1667 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_TRIM, |
1668 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1669 | 0 | } |
1670 | 0 | return code; |
1671 | 0 | } |
1672 | | |
1673 | 0 | static int32_t collectMetaKeyFromCompactVgroups(SCollectMetaKeyCxt* pCxt, SCompactVgroupsStmt* pStmt) { |
1674 | 0 | return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1675 | 0 | } |
1676 | | |
1677 | 0 | static int32_t collectMetaKeyFromRollupVgroups(SCollectMetaKeyCxt* pCxt, SRollupVgroupsStmt* pStmt) { |
1678 | 0 | return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1679 | 0 | } |
1680 | | |
1681 | 0 | static int32_t collectMetaKeyFromScanVgroups(SCollectMetaKeyCxt* pCxt, SScanVgroupsStmt* pStmt) { |
1682 | 0 | return reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1683 | 0 | } |
1684 | | |
1685 | 0 | static int32_t collectMetaKeyFromGrantImpl(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt, bool grant) { |
1686 | 0 | int32_t code = TSDB_CODE_SUCCESS; |
1687 | |
|
1688 | 0 | if (pStmt->optrType == TSDB_ALTER_ROLE_ROLE) { |
1689 | 0 | if (pStmt->roleName[0] == 'S' && pStmt->roleName[1] == 'Y' && pStmt->roleName[2] == 'S') { |
1690 | 0 | if (strcmp(pStmt->roleName, TSDB_ROLE_SYSDBA) == 0) { |
1691 | 0 | return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
1692 | 0 | grant ? PRIV_GRANT_SYSDBA : PRIV_REVOKE_SYSDBA, 0, pCxt->pMetaCache); |
1693 | 0 | } |
1694 | 0 | if (strcmp(pStmt->roleName, TSDB_ROLE_SYSSEC) == 0) { |
1695 | 0 | return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
1696 | 0 | grant ? PRIV_GRANT_SYSSEC : PRIV_REVOKE_SYSSEC, 0, pCxt->pMetaCache); |
1697 | 0 | } |
1698 | 0 | if (strcmp(pStmt->roleName, TSDB_ROLE_SYSAUDIT) == 0) { |
1699 | 0 | return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
1700 | 0 | grant ? PRIV_GRANT_SYSAUDIT : PRIV_REVOKE_SYSAUDIT, 0, pCxt->pMetaCache); |
1701 | 0 | } |
1702 | 0 | } |
1703 | 0 | } else if (TSDB_ALTER_ROLE_PRIVILEGES == pStmt->optrType) { |
1704 | 0 | bool isRealObj = IS_SPECIFIC_OBJ(pStmt->objName); |
1705 | 0 | if (isRealObj) { |
1706 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->objName, pCxt->pMetaCache); |
1707 | 0 | } |
1708 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1709 | 0 | if (isRealObj && IS_SPECIFIC_OBJ(pStmt->tabName)) { |
1710 | 0 | if (PRIV_OBJ_TBL == pStmt->privileges.objType) { |
1711 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache); |
1712 | 0 | } else if (PRIV_OBJ_VIEW == pStmt->privileges.objType || PRIV_OBJ_NONE == pStmt->privileges.objType) { |
1713 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache); |
1714 | 0 | pCxt->pMetaCache->forceFetchViewMeta = true; |
1715 | 0 | } else { |
1716 | | // TODO: other object types |
1717 | 0 | } |
1718 | 0 | } |
1719 | 0 | } |
1720 | 0 | } |
1721 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1722 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, |
1723 | 0 | grant ? PRIV_GRANT_PRIVILEGE : PRIV_REVOKE_PRIVILEGE, 0, pCxt->pMetaCache); |
1724 | 0 | } |
1725 | |
|
1726 | 0 | return code; |
1727 | 0 | } |
1728 | | |
1729 | 0 | static int32_t collectMetaKeyFromGrant(SCollectMetaKeyCxt* pCxt, SGrantStmt* pStmt) { |
1730 | 0 | return collectMetaKeyFromGrantImpl(pCxt, pStmt, true); |
1731 | 0 | } |
1732 | | |
1733 | 0 | static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* pStmt) { |
1734 | 0 | return collectMetaKeyFromGrantImpl(pCxt, (SGrantStmt*)pStmt, false); |
1735 | 0 | } |
1736 | | |
1737 | 0 | static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) { |
1738 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); |
1739 | |
|
1740 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1741 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1742 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1743 | 0 | } |
1744 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1745 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1746 | 0 | } |
1747 | |
|
1748 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1749 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
1750 | 0 | PRIV_VIEW_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1751 | 0 | } |
1752 | 0 | if (TSDB_CODE_SUCCESS == code && pStmt->orReplace) { |
1753 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, |
1754 | 0 | PRIV_CM_ALTER, PRIV_OBJ_VIEW, pCxt->pMetaCache); |
1755 | 0 | } |
1756 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1757 | 0 | if (!pStmt->pQuery || |
1758 | 0 | (QUERY_NODE_SELECT_STMT != nodeType(pStmt->pQuery) && QUERY_NODE_SET_OPERATOR != nodeType(pStmt->pQuery))) { |
1759 | 0 | code = TSDB_CODE_PAR_INVALID_VIEW_QUERY; |
1760 | 0 | } else { |
1761 | 0 | code = collectMetaKeyFromQuery(pCxt, pStmt->pQuery); |
1762 | 0 | } |
1763 | 0 | } |
1764 | |
|
1765 | 0 | return code; |
1766 | 0 | } |
1767 | | |
1768 | 0 | static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) { |
1769 | 0 | int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, |
1770 | 0 | pStmt->viewName, PRIV_CM_DROP, PRIV_OBJ_VIEW, pCxt->pMetaCache); |
1771 | 0 | pCxt->pMetaCache->forceFetchViewMeta = true; |
1772 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1773 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1774 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1775 | 0 | } |
1776 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1777 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1778 | 0 | } |
1779 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1780 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); |
1781 | 0 | } |
1782 | 0 | return code; |
1783 | 0 | } |
1784 | | |
1785 | 0 | static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreateTSMAStmt* pStmt) { |
1786 | 0 | int32_t code; |
1787 | 0 | if (pStmt->pOptions->recursiveTsma) { |
1788 | | // if creating recursive tsma, the tablename is tsmaName |
1789 | 0 | code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
1790 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1791 | 0 | char dstTbName[TSDB_TABLE_NAME_LEN] = {0}; |
1792 | 0 | snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName); |
1793 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache); |
1794 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1795 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache); |
1796 | 0 | } |
1797 | 0 | } |
1798 | 0 | } else { |
1799 | 0 | code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
1800 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1801 | 0 | code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
1802 | 0 | } |
1803 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1804 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
1805 | 0 | PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache); |
1806 | 0 | } |
1807 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1808 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, |
1809 | 0 | PRIV_STREAM_CREATE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1810 | 0 | } |
1811 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1812 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
1813 | 0 | PRIV_TSMA_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache); |
1814 | 0 | } |
1815 | 0 | } |
1816 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1817 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1818 | 0 | } |
1819 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1820 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1821 | 0 | } |
1822 | |
|
1823 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1824 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1825 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1826 | 0 | } |
1827 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1828 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_TBL_CREATE, |
1829 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1830 | 0 | } |
1831 | |
|
1832 | 0 | return code; |
1833 | 0 | } |
1834 | | |
1835 | 0 | static int32_t collectMetaKeyFromDropTSMAStmt(SCollectMetaKeyCxt* pCxt, SDropTSMAStmt* pStmt) { |
1836 | 0 | int32_t code; |
1837 | 0 | code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tsmaName, pCxt->pMetaCache); |
1838 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1839 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1840 | 0 | } |
1841 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1842 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1843 | 0 | } |
1844 | |
|
1845 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1846 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1847 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1848 | 0 | } |
1849 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1850 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tsmaName, |
1851 | 0 | PRIV_CM_DROP, PRIV_OBJ_TSMA, pCxt->pMetaCache); |
1852 | 0 | } |
1853 | 0 | return code; |
1854 | 0 | } |
1855 | | |
1856 | 0 | static int32_t collectMetaKeyFromShowUsage(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1857 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_DISK_USAGE, |
1858 | 0 | pCxt->pMetaCache); |
1859 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1860 | 0 | code = reserveDbVgInfoInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1861 | 0 | } |
1862 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1863 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, ((SValueNode*)pStmt->pDbName)->literal, pCxt->pMetaCache); |
1864 | 0 | } |
1865 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1866 | 0 | code = |
1867 | 0 | reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, ((SValueNode*)pStmt->pDbName)->literal, |
1868 | 0 | NULL, PRIV_DB_USE, PRIV_OBJ_DB, pCxt->pMetaCache); |
1869 | 0 | } |
1870 | 0 | return code; |
1871 | 0 | } |
1872 | | |
1873 | 0 | static int32_t collectMetaKeyFromShowTSMASStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1874 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_TSMAS, |
1875 | 0 | pCxt->pMetaCache); |
1876 | 0 | } |
1877 | | |
1878 | 0 | static int32_t collectMetaKeyFromCreateRsmaStmt(SCollectMetaKeyCxt* pCxt, SCreateRsmaStmt* pStmt) { |
1879 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); |
1880 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1881 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1882 | 0 | } |
1883 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1884 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1885 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1886 | 0 | } |
1887 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1888 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
1889 | 0 | PRIV_TBL_SELECT, PRIV_OBJ_TBL, pCxt->pMetaCache); |
1890 | 0 | } |
1891 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1892 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
1893 | 0 | PRIV_TBL_INSERT, PRIV_OBJ_TBL, pCxt->pMetaCache); |
1894 | 0 | } |
1895 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1896 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->tableName, |
1897 | 0 | PRIV_RSMA_CREATE, PRIV_OBJ_TBL, pCxt->pMetaCache); |
1898 | 0 | } |
1899 | 0 | return code; |
1900 | 0 | } |
1901 | | |
1902 | 0 | static int32_t collectMetaKeyFromDropRsmaStmt(SCollectMetaKeyCxt* pCxt, SDropRsmaStmt* pStmt) { |
1903 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1904 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1905 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, PRIV_DB_USE, |
1906 | 0 | PRIV_OBJ_DB, pCxt->pMetaCache); |
1907 | 0 | } |
1908 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1909 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName, |
1910 | 0 | PRIV_CM_DROP, PRIV_OBJ_RSMA, pCxt->pMetaCache); |
1911 | 0 | } |
1912 | 0 | return code; |
1913 | 0 | } |
1914 | | |
1915 | 0 | static int32_t collectMetaKeyFromAlterRsmaStmt(SCollectMetaKeyCxt* pCxt, SAlterRsmaStmt* pStmt) { |
1916 | 0 | int32_t code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1917 | 0 | if (TSDB_CODE_SUCCESS == code) { |
1918 | 0 | code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->rsmaName, |
1919 | 0 | PRIV_CM_ALTER, PRIV_OBJ_RSMA, pCxt->pMetaCache); |
1920 | 0 | } |
1921 | 0 | return code; |
1922 | 0 | } |
1923 | | |
1924 | 0 | static int32_t collectMetaKeyFromShowRsmasStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1925 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RSMAS, |
1926 | 0 | pCxt->pMetaCache); |
1927 | 0 | } |
1928 | | |
1929 | 0 | static int32_t collectMetaKeyFromShowRetentionsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1930 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTIONS, |
1931 | 0 | pCxt->pMetaCache); |
1932 | 0 | } |
1933 | | |
1934 | 0 | static int32_t collectMetaKeyFromShowRetentionDetailsStmt(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { |
1935 | 0 | return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_RETENTION_DETAILS, |
1936 | 0 | pCxt->pMetaCache); |
1937 | 0 | } |
1938 | | |
1939 | 0 | static int32_t collectMetaKeyFromShowAlive(SCollectMetaKeyCxt* pCxt, SShowAliveStmt* pStmt) { |
1940 | 0 | int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_VGROUPS, |
1941 | 0 | pCxt->pMetaCache); |
1942 | 0 | if (TSDB_CODE_SUCCESS == code && pStmt->dbName[0]) { |
1943 | | // just to verify whether the database exists |
1944 | 0 | code = reserveDbCfgInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pCxt->pMetaCache); |
1945 | 0 | } |
1946 | 0 | return code; |
1947 | 0 | } |
1948 | | |
1949 | 0 | static int32_t collectMetaKeyFromAlterLocalStmt(SCollectMetaKeyCxt* pCxt, SAlterLocalStmt* pStmt) { |
1950 | 0 | if ('\0' == pStmt->value[0]) { |
1951 | 0 | char* p = strchr(pStmt->config, ' '); |
1952 | 0 | if (NULL != p) { |
1953 | 0 | *p = 0; |
1954 | 0 | tstrncpy(pStmt->value, p + 1, sizeof(pStmt->value)); |
1955 | 0 | } |
1956 | 0 | } |
1957 | 0 | int32_t privType = cfgGetPrivType(tsCfg, pStmt->config, 0); |
1958 | 0 | return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, privType, 0, |
1959 | 0 | pCxt->pMetaCache); |
1960 | 0 | return TSDB_CODE_SUCCESS; |
1961 | 0 | } |
1962 | | |
1963 | 0 | EPrivType getAlterUserPrivType(const char* pCurrentUser, const SAlterUserStmt* pStmt) { |
1964 | 0 | EPrivType privType = PRIV_USER_ALTER; |
1965 | 0 | SUserOptions* pOptions = pStmt->pUserOptions; |
1966 | 0 | if ((pOptions->hasPassword) && |
1967 | 0 | !(pOptions->hasTotpseed || pOptions->hasEnable || pOptions->hasSysinfo || pOptions->hasIsImport || |
1968 | 0 | pOptions->hasChangepass || pOptions->hasCreatedb || pOptions->hasSessionPerUser || pOptions->hasConnectTime || |
1969 | 0 | pOptions->hasConnectIdleTime || pOptions->hasCallPerSession || pOptions->hasVnodePerCall || |
1970 | 0 | pOptions->hasFailedLoginAttempts || pOptions->hasPasswordLifeTime || pOptions->hasPasswordReuseTime || |
1971 | 0 | pOptions->hasPasswordReuseMax || pOptions->hasPasswordLockTime || pOptions->hasPasswordGraceTime || |
1972 | 0 | pOptions->hasInactiveAccountTime || pOptions->hasAllowTokenNum || pOptions->pSecurityLevels)) { |
1973 | 0 | if (pCurrentUser && strncmp(pCurrentUser, pStmt->userName, TSDB_USER_LEN) == 0) { |
1974 | 0 | privType = PRIV_PASS_ALTER_SELF; |
1975 | 0 | } else { |
1976 | 0 | privType = PRIV_PASS_ALTER; |
1977 | 0 | } |
1978 | 0 | } |
1979 | 0 | return privType; |
1980 | 0 | } |
1981 | | |
1982 | 0 | static int32_t collectMetaKeyFromAlterUserStmt(SCollectMetaKeyCxt* pCxt, SAlterUserStmt* pStmt) { |
1983 | 0 | EPrivType privType = getAlterUserPrivType(pCxt->pParseCxt->pUser, pStmt); |
1984 | 0 | return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, privType, 0, |
1985 | 0 | pCxt->pMetaCache); |
1986 | 0 | } |
1987 | | |
1988 | 71 | static int32_t collectMetaKeyFromSysPrivStmt(SCollectMetaKeyCxt* pCxt, EPrivType privType) { |
1989 | 71 | return reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, NULL, NULL, privType, 0, |
1990 | 71 | pCxt->pMetaCache); |
1991 | 71 | } |
1992 | | |
1993 | 8.65k | static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) { |
1994 | 8.65k | int32_t code = 0; |
1995 | 8.65k | SNode* pOrigStmt = pCxt->pStmt; |
1996 | 8.65k | pCxt->pStmt = pStmt; |
1997 | | |
1998 | 8.65k | switch (nodeType(pStmt)) { |
1999 | 0 | case QUERY_NODE_SET_OPERATOR: |
2000 | 0 | code = collectMetaKeyFromSetOperator(pCxt, (SSetOperator*)pStmt); |
2001 | 0 | break; |
2002 | 8.34k | case QUERY_NODE_SELECT_STMT: |
2003 | 8.34k | code = collectMetaKeyFromSelect(pCxt, (SSelectStmt*)pStmt); |
2004 | 8.34k | break; |
2005 | 0 | case QUERY_NODE_ALTER_DATABASE_STMT: |
2006 | 0 | code = collectMetaKeyFromAlterDatabase(pCxt, (SAlterDatabaseStmt*)pStmt); |
2007 | 0 | break; |
2008 | 0 | case QUERY_NODE_FLUSH_DATABASE_STMT: |
2009 | 0 | code = collectMetaKeyFromFlushDatabase(pCxt, (SFlushDatabaseStmt*)pStmt); |
2010 | 0 | break; |
2011 | 0 | case QUERY_NODE_CREATE_TABLE_STMT: |
2012 | 0 | code = collectMetaKeyFromCreateTable(pCxt, (SCreateTableStmt*)pStmt); |
2013 | 0 | break; |
2014 | 0 | case QUERY_NODE_CREATE_VIRTUAL_TABLE_STMT: |
2015 | 0 | code = collectMetaKeyFromCreateVTable(pCxt, (SCreateVTableStmt*)pStmt); |
2016 | 0 | break; |
2017 | 0 | case QUERY_NODE_CREATE_VIRTUAL_SUBTABLE_STMT: |
2018 | 0 | code = collectMetaKeyFromCreateVSubTable(pCxt, (SCreateVSubTableStmt*)pStmt); |
2019 | 0 | break; |
2020 | 0 | case QUERY_NODE_CREATE_MULTI_TABLES_STMT: |
2021 | 0 | code = collectMetaKeyFromCreateMultiTable(pCxt, (SCreateMultiTablesStmt*)pStmt); |
2022 | 0 | break; |
2023 | 0 | case QUERY_NODE_CREATE_SUBTABLE_FROM_FILE_CLAUSE: |
2024 | 0 | code = collectMetaKeyFromCreateSubTableFromFile(pCxt, (SCreateSubTableFromFileClause*)pStmt); |
2025 | 0 | break; |
2026 | 0 | case QUERY_NODE_DROP_TABLE_STMT: |
2027 | 0 | code = collectMetaKeyFromDropTable(pCxt, (SDropTableStmt*)pStmt); |
2028 | 0 | break; |
2029 | 0 | case QUERY_NODE_DROP_SUPER_TABLE_STMT: |
2030 | 0 | code = collectMetaKeyFromDropStable(pCxt, (SDropSuperTableStmt*)pStmt); |
2031 | 0 | break; |
2032 | 0 | case QUERY_NODE_DROP_VIRTUAL_TABLE_STMT: |
2033 | 0 | code = collectMetaKeyFromDropVtable(pCxt, (SDropVirtualTableStmt*)pStmt); |
2034 | 0 | break; |
2035 | 0 | case QUERY_NODE_ALTER_TABLE_STMT: |
2036 | 0 | code = collectMetaKeyFromAlterTable(pCxt, (SAlterTableStmt*)pStmt); |
2037 | 0 | break; |
2038 | 0 | case QUERY_NODE_ALTER_SUPER_TABLE_STMT: |
2039 | 0 | code = collectMetaKeyFromAlterStable(pCxt, (SAlterTableStmt*)pStmt); |
2040 | 0 | break; |
2041 | 0 | case QUERY_NODE_ALTER_VIRTUAL_TABLE_STMT: |
2042 | 0 | code = collectMetaKeyFromAlterVtable(pCxt, (SAlterTableStmt*)pStmt); |
2043 | 0 | break; |
2044 | 28 | case QUERY_NODE_USE_DATABASE_STMT: |
2045 | 28 | code = collectMetaKeyFromUseDatabase(pCxt, (SUseDatabaseStmt*)pStmt); |
2046 | 28 | break; |
2047 | 0 | case QUERY_NODE_CREATE_INDEX_STMT: |
2048 | 0 | code = collectMetaKeyFromCreateIndex(pCxt, (SCreateIndexStmt*)pStmt); |
2049 | 0 | break; |
2050 | 0 | case QUERY_NODE_DROP_INDEX_STMT: |
2051 | 0 | code = collectMetaKeyFromDropIndex(pCxt, (SDropIndexStmt*)pStmt); |
2052 | 0 | break; |
2053 | 0 | case QUERY_NODE_CREATE_TOPIC_STMT: |
2054 | 0 | code = collectMetaKeyFromCreateTopic(pCxt, (SCreateTopicStmt*)pStmt); |
2055 | 0 | break; |
2056 | 0 | case QUERY_NODE_EXPLAIN_STMT: |
2057 | 0 | code = collectMetaKeyFromExplain(pCxt, (SExplainStmt*)pStmt); |
2058 | 0 | break; |
2059 | 100 | case QUERY_NODE_DESCRIBE_STMT: |
2060 | 100 | code = collectMetaKeyFromDescribe(pCxt, (SDescribeStmt*)pStmt); |
2061 | 100 | break; |
2062 | 0 | case QUERY_NODE_COMPACT_DATABASE_STMT: |
2063 | 0 | code = collectMetaKeyFromCompactDatabase(pCxt, (SCompactDatabaseStmt*)pStmt); |
2064 | 0 | break; |
2065 | 0 | case QUERY_NODE_ROLLUP_DATABASE_STMT: |
2066 | 0 | code = collectMetaKeyFromRollupDatabase(pCxt, (SRollupDatabaseStmt*)pStmt); |
2067 | 0 | break; |
2068 | 0 | case QUERY_NODE_SCAN_DATABASE_STMT: |
2069 | 0 | code = collectMetaKeyFromScanDatabase(pCxt, (SScanDatabaseStmt*)pStmt); |
2070 | 0 | break; |
2071 | 0 | case QUERY_NODE_SSMIGRATE_DATABASE_STMT: |
2072 | 0 | code = collectMetaKeyFromSsmigrateDatabase(pCxt, (SSsMigrateDatabaseStmt*)pStmt); |
2073 | 0 | break; |
2074 | 0 | case QUERY_NODE_TRIM_DATABASE_STMT: |
2075 | 0 | code = collectMetaKeyFromTrimDatabase(pCxt, (STrimDatabaseStmt*)pStmt); |
2076 | 0 | break; |
2077 | 0 | case QUERY_NODE_COMPACT_VGROUPS_STMT: |
2078 | 0 | code = collectMetaKeyFromCompactVgroups(pCxt, (SCompactVgroupsStmt*)pStmt); |
2079 | 0 | break; |
2080 | 0 | case QUERY_NODE_ROLLUP_VGROUPS_STMT: |
2081 | 0 | code = collectMetaKeyFromRollupVgroups(pCxt, (SRollupVgroupsStmt*)pStmt); |
2082 | 0 | break; |
2083 | 0 | case QUERY_NODE_SCAN_VGROUPS_STMT: |
2084 | 0 | code = collectMetaKeyFromScanVgroups(pCxt, (SScanVgroupsStmt*)pStmt); |
2085 | 0 | break; |
2086 | 0 | case QUERY_NODE_CREATE_STREAM_STMT: |
2087 | 0 | code = collectMetaKeyFromCreateStream(pCxt, (SCreateStreamStmt*)pStmt); |
2088 | 0 | break; |
2089 | 0 | case QUERY_NODE_RECALCULATE_STREAM_STMT: |
2090 | 0 | code = collectMetaKeyFromRecalculateStream(pCxt, (SRecalcStreamStmt*)pStmt); |
2091 | 0 | break; |
2092 | 0 | case QUERY_NODE_GRANT_STMT: |
2093 | 0 | code = collectMetaKeyFromGrant(pCxt, (SGrantStmt*)pStmt); |
2094 | 0 | break; |
2095 | 0 | case QUERY_NODE_REVOKE_STMT: |
2096 | 0 | code = collectMetaKeyFromRevoke(pCxt, (SRevokeStmt*)pStmt); |
2097 | 0 | break; |
2098 | 1 | case QUERY_NODE_SHOW_DNODES_STMT: |
2099 | 1 | code = collectMetaKeyFromShowDnodes(pCxt, (SShowStmt*)pStmt); |
2100 | 1 | break; |
2101 | 1 | case QUERY_NODE_SHOW_MNODES_STMT: |
2102 | 1 | code = collectMetaKeyFromShowMnodes(pCxt, (SShowStmt*)pStmt); |
2103 | 1 | break; |
2104 | 0 | case QUERY_NODE_SHOW_MODULES_STMT: |
2105 | 0 | code = collectMetaKeyFromShowModules(pCxt, (SShowStmt*)pStmt); |
2106 | 0 | break; |
2107 | 1 | case QUERY_NODE_SHOW_QNODES_STMT: |
2108 | 1 | code = collectMetaKeyFromShowQnodes(pCxt, (SShowStmt*)pStmt); |
2109 | 1 | break; |
2110 | 1 | case QUERY_NODE_SHOW_SNODES_STMT: |
2111 | 1 | code = collectMetaKeyFromShowSnodes(pCxt, (SShowStmt*)pStmt); |
2112 | 1 | break; |
2113 | 1 | case QUERY_NODE_SHOW_ANODES_STMT: |
2114 | 1 | code = collectMetaKeyFromShowAnodes(pCxt, (SShowStmt*)pStmt); |
2115 | 1 | break; |
2116 | 0 | case QUERY_NODE_SHOW_ANODES_FULL_STMT: |
2117 | 0 | code = collectMetaKeyFromShowAnodesFull(pCxt, (SShowStmt*)pStmt); |
2118 | 0 | break; |
2119 | 1 | case QUERY_NODE_SHOW_BNODES_STMT: |
2120 | 1 | code = collectMetaKeyFromShowBnodes(pCxt, (SShowStmt*)pStmt); |
2121 | 1 | break; |
2122 | 0 | case QUERY_NODE_SHOW_BACKUP_NODES_STMT: |
2123 | 0 | code = collectMetaKeyFromShowBackupNodes(pCxt, (SShowStmt*)pStmt); |
2124 | 0 | break; |
2125 | 1 | case QUERY_NODE_SHOW_XNODES_STMT: |
2126 | 1 | code = collectMetaKeyFromShowXnodes(pCxt, (SShowStmt*)pStmt); |
2127 | 1 | break; |
2128 | 2 | case QUERY_NODE_SHOW_XNODE_TASKS_STMT: |
2129 | 2 | code = collectMetaKeyFromShowXnodeTasks(pCxt, (SShowStmt*)pStmt); |
2130 | 2 | break; |
2131 | 2 | case QUERY_NODE_SHOW_XNODE_AGENTS_STMT: |
2132 | 2 | code = collectMetaKeyFromShowXnodeAgents(pCxt, (SShowStmt*)pStmt); |
2133 | 2 | break; |
2134 | 1 | case QUERY_NODE_SHOW_XNODE_JOBS_STMT: |
2135 | 1 | code = collectMetaKeyFromShowXnodeJobs(pCxt, (SShowStmt*)pStmt); |
2136 | 1 | break; |
2137 | 0 | case QUERY_NODE_SHOW_ARBGROUPS_STMT: |
2138 | 0 | code = collectMetaKeyFromShowArbGroups(pCxt, (SShowStmt*)pStmt); |
2139 | 0 | break; |
2140 | 0 | case QUERY_NODE_SHOW_CLUSTER_STMT: |
2141 | 0 | code = collectMetaKeyFromShowCluster(pCxt, (SShowStmt*)pStmt); |
2142 | 0 | break; |
2143 | 0 | case QUERY_NODE_SHOW_SECURITY_POLICIES_STMT: |
2144 | 0 | code = collectMetaKeyFromShowSecurityPolicies(pCxt, (SShowStmt*)pStmt); |
2145 | 0 | break; |
2146 | 0 | case QUERY_NODE_SHOW_DATABASES_STMT: |
2147 | 0 | code = collectMetaKeyFromShowDatabases(pCxt, (SShowStmt*)pStmt); |
2148 | 0 | break; |
2149 | 0 | case QUERY_NODE_SHOW_FUNCTIONS_STMT: |
2150 | 0 | code = collectMetaKeyFromShowFunctions(pCxt, (SShowStmt*)pStmt); |
2151 | 0 | break; |
2152 | 0 | case QUERY_NODE_SHOW_INDEXES_STMT: |
2153 | 0 | code = collectMetaKeyFromShowIndexes(pCxt, (SShowStmt*)pStmt); |
2154 | 0 | break; |
2155 | 31 | case QUERY_NODE_SHOW_STABLES_STMT: |
2156 | 31 | code = collectMetaKeyFromShowStables(pCxt, (SShowStmt*)pStmt); |
2157 | 31 | break; |
2158 | 0 | case QUERY_NODE_SHOW_STREAMS_STMT: |
2159 | 0 | code = collectMetaKeyFromShowStreams(pCxt, (SShowStmt*)pStmt); |
2160 | 0 | break; |
2161 | 37 | case QUERY_NODE_SHOW_TABLES_STMT: |
2162 | 64 | case QUERY_NODE_SHOW_VTABLES_STMT: |
2163 | 64 | code = collectMetaKeyFromShowTables(pCxt, (SShowStmt*)pStmt); |
2164 | 64 | break; |
2165 | 0 | case QUERY_NODE_SHOW_FILESETS_STMT: |
2166 | 0 | code = collectMetaKeyFromShowFilesets(pCxt, (SShowStmt*)pStmt); |
2167 | 0 | break; |
2168 | 0 | case QUERY_NODE_SHOW_TAGS_STMT: |
2169 | 0 | code = collectMetaKeyFromShowTags(pCxt, (SShowStmt*)pStmt); |
2170 | 0 | break; |
2171 | 0 | case QUERY_NODE_SHOW_TABLE_TAGS_STMT: |
2172 | 0 | code = collectMetaKeyFromShowStableTags(pCxt, (SShowTableTagsStmt*)pStmt); |
2173 | 0 | break; |
2174 | 0 | case QUERY_NODE_SHOW_USERS_STMT: |
2175 | 0 | code = collectMetaKeyFromShowUsers(pCxt, (SShowStmt*)pStmt); |
2176 | 0 | break; |
2177 | 0 | case QUERY_NODE_SHOW_USERS_FULL_STMT: |
2178 | 0 | code = collectMetaKeyFromShowUsersFull(pCxt, (SShowStmt*)pStmt); |
2179 | 0 | break; |
2180 | 1 | case QUERY_NODE_SHOW_ROLES_STMT: |
2181 | 1 | code = collectMetaKeyFromShowRoles(pCxt, (SShowStmt*)pStmt); |
2182 | 1 | break; |
2183 | 1 | case QUERY_NODE_SHOW_LICENCES_STMT: |
2184 | 1 | code = collectMetaKeyFromShowLicence(pCxt, (SShowStmt*)pStmt); |
2185 | 1 | break; |
2186 | 0 | case QUERY_NODE_SHOW_VGROUPS_STMT: |
2187 | 0 | code = collectMetaKeyFromShowVgroups(pCxt, (SShowStmt*)pStmt); |
2188 | 0 | break; |
2189 | 0 | case QUERY_NODE_SHOW_TOPICS_STMT: |
2190 | 0 | code = collectMetaKeyFromShowTopics(pCxt, (SShowStmt*)pStmt); |
2191 | 0 | break; |
2192 | 0 | case QUERY_NODE_SHOW_CONSUMERS_STMT: |
2193 | 0 | code = collectMetaKeyFromShowConsumers(pCxt, (SShowStmt*)pStmt); |
2194 | 0 | break; |
2195 | 0 | case QUERY_NODE_SHOW_CONNECTIONS_STMT: |
2196 | 0 | code = collectMetaKeyFromShowConnections(pCxt, (SShowStmt*)pStmt); |
2197 | 0 | break; |
2198 | 1 | case QUERY_NODE_SHOW_QUERIES_STMT: |
2199 | 1 | code = collectMetaKeyFromShowQueries(pCxt, (SShowStmt*)pStmt); |
2200 | 1 | break; |
2201 | 0 | case QUERY_NODE_SHOW_VARIABLES_STMT: |
2202 | 0 | code = collectMetaKeyFromShowVariables(pCxt, (SShowStmt*)pStmt); |
2203 | 0 | break; |
2204 | 0 | case QUERY_NODE_SHOW_DNODE_VARIABLES_STMT: |
2205 | 0 | code = collectMetaKeyFromShowDnodeVariables(pCxt, (SShowDnodeVariablesStmt*)pStmt); |
2206 | 0 | break; |
2207 | 1 | case QUERY_NODE_SHOW_VNODES_STMT: |
2208 | 1 | code = collectMetaKeyFromShowVnodes(pCxt, (SShowVnodesStmt*)pStmt); |
2209 | 1 | break; |
2210 | 0 | case QUERY_NODE_SHOW_USER_PRIVILEGES_STMT: |
2211 | 0 | code = collectMetaKeyFromShowUserPrivileges(pCxt, (SShowStmt*)pStmt); |
2212 | 0 | break; |
2213 | 0 | case QUERY_NODE_SHOW_ROLE_PRIVILEGES_STMT: |
2214 | 0 | code = collectMetaKeyFromShowRolePrivileges(pCxt, (SShowStmt*)pStmt); |
2215 | 0 | break; |
2216 | 0 | case QUERY_NODE_SHOW_ROLE_COL_PRIVILEGES_STMT: |
2217 | 0 | code = collectMetaKeyFromShowRoleColPrivileges(pCxt, (SShowStmt*)pStmt); |
2218 | 0 | break; |
2219 | 0 | case QUERY_NODE_SHOW_VIEWS_STMT: |
2220 | 0 | code = collectMetaKeyFromShowViews(pCxt, (SShowStmt*)pStmt); |
2221 | 0 | break; |
2222 | 0 | case QUERY_NODE_SHOW_COMPACTS_STMT: |
2223 | 0 | code = collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt); |
2224 | 0 | break; |
2225 | 0 | case QUERY_NODE_SHOW_SCANS_STMT: |
2226 | 0 | code = collectMetaKeyFromShowScans(pCxt, (SShowStmt*)pStmt); |
2227 | 0 | break; |
2228 | 0 | case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT: |
2229 | 0 | code = collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt); |
2230 | 0 | break; |
2231 | 0 | case QUERY_NODE_SHOW_SCAN_DETAILS_STMT: |
2232 | 0 | code = collectMetaKeyFromShowScanDetails(pCxt, (SShowStmt*)pStmt); |
2233 | 0 | break; |
2234 | 0 | case QUERY_NODE_SHOW_SSMIGRATES_STMT: |
2235 | 0 | code = collectMetaKeyFromShowSsMigrates(pCxt, (SShowStmt*)pStmt); |
2236 | 0 | break; |
2237 | 0 | case QUERY_NODE_SHOW_TOKENS_STMT: |
2238 | 0 | code = collectMetaKeyFromShowTokens(pCxt, (SShowStmt*)pStmt); |
2239 | 0 | break; |
2240 | 0 | case QUERY_NODE_SHOW_TRANSACTION_DETAILS_STMT: |
2241 | 0 | code = collectMetaKeyFromShowTransactionDetails(pCxt, (SShowStmt*)pStmt); |
2242 | 0 | break; |
2243 | 0 | case QUERY_NODE_SHOW_GRANTS_FULL_STMT: |
2244 | 0 | code = collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt); |
2245 | 0 | break; |
2246 | 0 | case QUERY_NODE_SHOW_GRANTS_LOGS_STMT: |
2247 | 0 | code = collectMetaKeyFromShowGrantsLogs(pCxt, (SShowStmt*)pStmt); |
2248 | 0 | break; |
2249 | 0 | case QUERY_NODE_SHOW_CLUSTER_MACHINES_STMT: |
2250 | 0 | code = collectMetaKeyFromShowClusterMachines(pCxt, (SShowStmt*)pStmt); |
2251 | 0 | break; |
2252 | 0 | case QUERY_NODE_SHOW_ENCRYPTIONS_STMT: |
2253 | 0 | code = collectMetaKeyFromShowEncryptions(pCxt, (SShowStmt*)pStmt); |
2254 | 0 | break; |
2255 | 0 | case QUERY_NODE_SHOW_ENCRYPT_ALGORITHMS_STMT: |
2256 | 0 | code = collectMetaKeyFromShowEncryptAlgorithms(pCxt, (SShowStmt*)pStmt); |
2257 | 0 | break; |
2258 | 0 | case QUERY_NODE_SHOW_ENCRYPT_STATUS_STMT: |
2259 | 0 | code = collectMetaKeyFromShowEncryptStatus(pCxt, (SShowStmt*)pStmt); |
2260 | 0 | break; |
2261 | 0 | case QUERY_NODE_SHOW_MOUNTS_STMT: |
2262 | 0 | code = collectMetaKeyFromShowMounts(pCxt, (SShowStmt*)pStmt); |
2263 | 0 | break; |
2264 | 0 | case QUERY_NODE_SHOW_CREATE_DATABASE_STMT: |
2265 | 0 | code = collectMetaKeyFromShowCreateDatabase(pCxt, (SShowCreateDatabaseStmt*)pStmt); |
2266 | 0 | break; |
2267 | 0 | case QUERY_NODE_SHOW_CREATE_TABLE_STMT: |
2268 | 0 | case QUERY_NODE_SHOW_CREATE_VTABLE_STMT: |
2269 | 0 | case QUERY_NODE_SHOW_CREATE_STABLE_STMT: |
2270 | 0 | code = collectMetaKeyFromShowCreateTable(pCxt, (SShowCreateTableStmt*)pStmt); |
2271 | 0 | break; |
2272 | 0 | case QUERY_NODE_SHOW_CREATE_VIEW_STMT: |
2273 | 0 | code = collectMetaKeyFromShowCreateView(pCxt, (SShowCreateViewStmt*)pStmt); |
2274 | 0 | break; |
2275 | 0 | case QUERY_NODE_SHOW_CREATE_RSMA_STMT: |
2276 | 0 | code = collectMetaKeyFromShowCreateRsma(pCxt, (SShowCreateRsmaStmt*)pStmt); |
2277 | 0 | break; |
2278 | 0 | case QUERY_NODE_SHOW_CREATE_STREAM_STMT: |
2279 | 0 | code = collectMetaKeyFromShowCreateStream(pCxt, (SShowCreateStreamStmt*)pStmt); |
2280 | 0 | break; |
2281 | 0 | case QUERY_NODE_SHOW_APPS_STMT: |
2282 | 0 | code = collectMetaKeyFromShowApps(pCxt, (SShowStmt*)pStmt); |
2283 | 0 | break; |
2284 | 0 | case QUERY_NODE_SHOW_INSTANCES_STMT: |
2285 | 0 | code = collectMetaKeyFromShowInstances(pCxt, (SShowStmt*)pStmt); |
2286 | 0 | break; |
2287 | 0 | case QUERY_NODE_SHOW_TRANSACTIONS_STMT: |
2288 | 0 | code = collectMetaKeyFromShowTransactions(pCxt, (SShowStmt*)pStmt); |
2289 | 0 | break; |
2290 | 0 | case QUERY_NODE_SHOW_USAGE_STMT: |
2291 | 0 | code = collectMetaKeyFromShowUsage(pCxt, (SShowStmt*)pStmt); |
2292 | 0 | break; |
2293 | 0 | case QUERY_NODE_DELETE_STMT: |
2294 | 0 | code = collectMetaKeyFromDelete(pCxt, (SDeleteStmt*)pStmt); |
2295 | 0 | break; |
2296 | 0 | case QUERY_NODE_INSERT_STMT: |
2297 | 0 | code = collectMetaKeyFromInsert(pCxt, (SInsertStmt*)pStmt); |
2298 | 0 | break; |
2299 | 0 | case QUERY_NODE_SHOW_TABLE_DISTRIBUTED_STMT: |
2300 | 0 | code = collectMetaKeyFromShowBlockDist(pCxt, (SShowTableDistributedStmt*)pStmt); |
2301 | 0 | break; |
2302 | 0 | case QUERY_NODE_SHOW_VALIDATE_VTABLE_STMT: |
2303 | 0 | code = collectMetaKeyFromShowValidateVtable(pCxt, (SShowValidateVirtualTable*)pStmt); |
2304 | 0 | break; |
2305 | 0 | case QUERY_NODE_SHOW_SUBSCRIPTIONS_STMT: |
2306 | 0 | code = collectMetaKeyFromShowSubscriptions(pCxt, (SShowStmt*)pStmt); |
2307 | 0 | break; |
2308 | 0 | case QUERY_NODE_CREATE_VIEW_STMT: |
2309 | 0 | code = collectMetaKeyFromCreateViewStmt(pCxt, (SCreateViewStmt*)pStmt); |
2310 | 0 | break; |
2311 | 0 | case QUERY_NODE_DROP_VIEW_STMT: |
2312 | 0 | code = collectMetaKeyFromDropViewStmt(pCxt, (SDropViewStmt*)pStmt); |
2313 | 0 | break; |
2314 | 0 | case QUERY_NODE_CREATE_TSMA_STMT: |
2315 | 0 | code = collectMetaKeyFromCreateTSMAStmt(pCxt, (SCreateTSMAStmt*)pStmt); |
2316 | 0 | break; |
2317 | 0 | case QUERY_NODE_DROP_TSMA_STMT: |
2318 | 0 | code = collectMetaKeyFromDropTSMAStmt(pCxt, (SDropTSMAStmt*)pStmt); |
2319 | 0 | break; |
2320 | 0 | case QUERY_NODE_SHOW_TSMAS_STMT: |
2321 | 0 | code = collectMetaKeyFromShowTSMASStmt(pCxt, (SShowStmt*)pStmt); |
2322 | 0 | break; |
2323 | 0 | case QUERY_NODE_CREATE_RSMA_STMT: |
2324 | 0 | code = collectMetaKeyFromCreateRsmaStmt(pCxt, (SCreateRsmaStmt*)pStmt); |
2325 | 0 | break; |
2326 | 0 | case QUERY_NODE_DROP_RSMA_STMT: |
2327 | 0 | code = collectMetaKeyFromDropRsmaStmt(pCxt, (SDropRsmaStmt*)pStmt); |
2328 | 0 | break; |
2329 | 0 | case QUERY_NODE_ALTER_RSMA_STMT: |
2330 | 0 | code = collectMetaKeyFromAlterRsmaStmt(pCxt, (SAlterRsmaStmt*)pStmt); |
2331 | 0 | break; |
2332 | 0 | case QUERY_NODE_SHOW_RSMAS_STMT: |
2333 | 0 | code = collectMetaKeyFromShowRsmasStmt(pCxt, (SShowStmt*)pStmt); |
2334 | 0 | break; |
2335 | 0 | case QUERY_NODE_SHOW_RETENTIONS_STMT: |
2336 | 0 | code = collectMetaKeyFromShowRetentionsStmt(pCxt, (SShowStmt*)pStmt); |
2337 | 0 | break; |
2338 | 0 | case QUERY_NODE_SHOW_RETENTION_DETAILS_STMT: |
2339 | 0 | code = collectMetaKeyFromShowRetentionDetailsStmt(pCxt, (SShowStmt*)pStmt); |
2340 | 0 | break; |
2341 | 0 | case QUERY_NODE_SHOW_DB_ALIVE_STMT: |
2342 | 0 | case QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT: |
2343 | 0 | code = collectMetaKeyFromShowAlive(pCxt, (SShowAliveStmt*)pStmt); |
2344 | 0 | break; |
2345 | 0 | case QUERY_NODE_CREATE_DATABASE_STMT: |
2346 | 0 | code = collectMetaKeyFromCreateDatabase(pCxt, (SCreateDatabaseStmt*)pStmt); |
2347 | 0 | break; |
2348 | 0 | case QUERY_NODE_DROP_DATABASE_STMT: |
2349 | 0 | code = collectMetaKeyFromDropDatabase(pCxt, (SDropDatabaseStmt*)pStmt); |
2350 | 0 | break; |
2351 | 0 | case QUERY_NODE_BALANCE_VGROUP_STMT: |
2352 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE); |
2353 | 0 | break; |
2354 | 0 | case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: |
2355 | 0 | case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: |
2356 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_BALANCE_LEADER); |
2357 | 0 | break; |
2358 | 0 | case QUERY_NODE_MERGE_VGROUP_STMT: |
2359 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_MERGE); |
2360 | 0 | break; |
2361 | 0 | case QUERY_NODE_SPLIT_VGROUP_STMT: |
2362 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_SPLIT); |
2363 | 0 | break; |
2364 | 0 | case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: |
2365 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_VG_REDISTRIBUTE); |
2366 | 0 | break; |
2367 | 0 | case QUERY_NODE_CREATE_FUNCTION_STMT: |
2368 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_CREATE); |
2369 | 0 | break; |
2370 | 0 | case QUERY_NODE_DROP_FUNCTION_STMT: |
2371 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_FUNC_DROP); |
2372 | 0 | break; |
2373 | 0 | case QUERY_NODE_CREATE_MOUNT_STMT: |
2374 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_CREATE); |
2375 | 0 | break; |
2376 | 0 | case QUERY_NODE_DROP_MOUNT_STMT: |
2377 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_MOUNT_DROP); |
2378 | 0 | break; |
2379 | 71 | case QUERY_NODE_CREATE_ROLE_STMT: |
2380 | 71 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_CREATE); |
2381 | 71 | break; |
2382 | 0 | case QUERY_NODE_DROP_ROLE_STMT: |
2383 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_ROLE_DROP); |
2384 | 0 | break; |
2385 | 0 | case QUERY_NODE_CREATE_USER_STMT: |
2386 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_CREATE); |
2387 | 0 | break; |
2388 | 0 | case QUERY_NODE_ALTER_USER_STMT: |
2389 | 0 | code = collectMetaKeyFromAlterUserStmt(pCxt, (SAlterUserStmt*)pStmt); |
2390 | 0 | break; |
2391 | 0 | case QUERY_NODE_DROP_USER_STMT: |
2392 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_USER_DROP); |
2393 | 0 | break; |
2394 | 0 | case QUERY_NODE_ALTER_LOCAL_STMT: |
2395 | 0 | return collectMetaKeyFromAlterLocalStmt(pCxt, (SAlterLocalStmt*)pStmt); |
2396 | 0 | case QUERY_NODE_CREATE_DNODE_STMT: |
2397 | 0 | case QUERY_NODE_CREATE_MNODE_STMT: |
2398 | 0 | case QUERY_NODE_CREATE_QNODE_STMT: |
2399 | 0 | case QUERY_NODE_CREATE_SNODE_STMT: |
2400 | 0 | case QUERY_NODE_CREATE_BNODE_STMT: |
2401 | 0 | case QUERY_NODE_CREATE_ANODE_STMT: |
2402 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_CREATE); |
2403 | 0 | break; |
2404 | 0 | case QUERY_NODE_DROP_DNODE_STMT: |
2405 | 0 | case QUERY_NODE_DROP_MNODE_STMT: |
2406 | 0 | case QUERY_NODE_DROP_QNODE_STMT: |
2407 | 0 | case QUERY_NODE_DROP_SNODE_STMT: |
2408 | 0 | case QUERY_NODE_DROP_BNODE_STMT: |
2409 | 0 | case QUERY_NODE_DROP_ANODE_STMT: |
2410 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_NODE_DROP); |
2411 | 0 | break; |
2412 | 0 | case QUERY_NODE_KILL_TRANSACTION_STMT: |
2413 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_TRANS_KILL); |
2414 | 0 | break; |
2415 | 0 | case QUERY_NODE_KILL_QUERY_STMT: |
2416 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_QUERY_KILL); |
2417 | 0 | break; |
2418 | 0 | case QUERY_NODE_KILL_CONNECTION_STMT: |
2419 | 0 | code = collectMetaKeyFromSysPrivStmt(pCxt, PRIV_CONN_KILL); |
2420 | 0 | break; |
2421 | 0 | default: |
2422 | 0 | break; |
2423 | 8.65k | } |
2424 | | |
2425 | 8.65k | pCxt->pStmt = pOrigStmt; |
2426 | | |
2427 | 8.65k | return code; |
2428 | 8.65k | } |
2429 | | |
2430 | 2.74k | int32_t collectMetaKey(SParseContext* pParseCxt, SQuery* pQuery, SParseMetaCache* pMetaCache) { |
2431 | 2.74k | SCollectMetaKeyCxt cxt = {.pParseCxt = pParseCxt, .pMetaCache = pMetaCache, .pStmt = pQuery->pRoot}; |
2432 | 2.74k | return collectMetaKeyFromQuery(&cxt, pQuery->pRoot); |
2433 | 2.74k | } |