/src/tdengine/include/util/tpriv.h
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 | | #ifndef _TD_UTIL_PRIV_H_ |
17 | | #define _TD_UTIL_PRIV_H_ |
18 | | |
19 | | #include "os.h" |
20 | | #include "taosdef.h" |
21 | | #include "tarray.h" |
22 | | #include "thash.h" |
23 | | |
24 | | #ifdef __cplusplus |
25 | | extern "C" { |
26 | | #endif |
27 | | |
28 | | /* * Separation of Duties (SoD) Mandatory Activation Phases |
29 | | */ |
30 | | |
31 | | /* Phase 0: Stable. Fully satisfied, no transition is in progress. */ |
32 | | #define TSDB_SOD_PHASE_STABLE 0 |
33 | | |
34 | | /* Phase 1: Initial: Bootstrapped by CLI 'taosd --SoD=mandatory', but SoD requirements are not yet met. |
35 | | * Awaiting initial role assignment. |
36 | | * Operations restricted to whitelist: CREATE/DROP/ALTER USER, GRANT/REVOKE ROLE, SHOW USERS, SHOW SECURITY_POLICIES. |
37 | | */ |
38 | | #define TSDB_SOD_PHASE_INITIAL 1 |
39 | | |
40 | | /* Phase 2: Enforcing. Triggered by SQL command: ALTER CLUSTER 'SoD' 'MANDATORY' or ALTER CLUSTER 'Separation_Of_Duties' 'MANDATORY'. |
41 | | * Awaiting transition completion. |
42 | | * Destructive operations are blocked: DISABLE USER, DROP USER, REVOKE ROLE. |
43 | | */ |
44 | | #define TSDB_SOD_PHASE_ENFORCE 2 |
45 | | |
46 | 0 | #define T_ROLE_SYSDBA 0x01 |
47 | 0 | #define T_ROLE_SYSSEC 0x02 |
48 | 0 | #define T_ROLE_SYSAUDIT 0x04 |
49 | 0 | #define T_ROLE_SYSAUDIT_LOG 0x08 |
50 | 0 | #define T_ROLE_SYSINFO_0 0x10 |
51 | 0 | #define T_ROLE_SYSINFO_1 0x20 |
52 | | |
53 | 0 | #define TSDB_ROLE_SYSDBA "SYSDBA" |
54 | 0 | #define TSDB_ROLE_SYSSEC "SYSSEC" |
55 | 0 | #define TSDB_ROLE_SYSAUDIT "SYSAUDIT" |
56 | 0 | #define TSDB_ROLE_SYSAUDIT_LOG "SYSAUDIT_LOG" |
57 | 0 | #define TSDB_ROLE_SYSINFO_0 "SYSINFO_0" |
58 | 0 | #define TSDB_ROLE_SYSINFO_1 "SYSINFO_1" |
59 | | #ifdef GRANTS_CFG // cloud edition |
60 | | #define TSDB_ROLE_DEFAULT TSDB_ROLE_SYSINFO_0 |
61 | | #else |
62 | | #define TSDB_ROLE_DEFAULT TSDB_ROLE_SYSINFO_1 |
63 | | #endif |
64 | | |
65 | 0 | #define TSDB_WORD_AUDIT "audit" |
66 | 0 | #define TSDB_WORD_BASIC "basic" |
67 | 0 | #define TSDB_WORD_DEBUG "debug" |
68 | 0 | #define TSDB_WORD_PASS "pass" |
69 | 0 | #define TSDB_WORD_POLICY "policy" |
70 | 0 | #define TSDB_WORD_POLICIES "policies" |
71 | 0 | #define TSDB_WORD_PRIVILEGED "privileged" |
72 | 0 | #define TSDB_WORD_SECURITY "security" |
73 | 0 | #define TSDB_WORD_SELF "self" |
74 | 0 | #define TSDB_WORD_SYSTEM "system" |
75 | 0 | #define TSDB_WORD_VARIABLE "variable" |
76 | 0 | #define TSDB_WORD_VARIABLES "variables" |
77 | 0 | #define TSDB_WORD_INFORMATION "information" |
78 | | |
79 | | #define PRIV_INFO_TABLE_VERSION 6 // N.B. increase this version for any update of privInfoTable |
80 | | |
81 | 0 | #define IS_WILDCARD_OBJ(objName) ((objName)[0] == '*' && (objName)[1] == '\0') |
82 | 0 | #define IS_SPECIFIC_OBJ(objName) ((objName)[0] != '\0' && !IS_WILDCARD_OBJ(objName)) |
83 | | |
84 | | typedef enum { |
85 | | PRIV_TYPE_UNKNOWN = -1, |
86 | | // ==================== Common Privilege ==================== |
87 | | PRIV_CM_ALL = 0, // ALL PRIVILEGES |
88 | | PRIV_CM_ALTER = 1, // ALTER PRIVILEGE |
89 | | PRIV_CM_DROP = 2, // DROP PRIVILEGE |
90 | | PRIV_CM_SHOW = 3, // SHOW PRIVILEGE |
91 | | PRIV_CM_SHOW_CREATE = 4, // SHOW CREATE PRIVILEGE |
92 | | PRIV_CM_START = 5, // START PRIVILEGE |
93 | | PRIV_CM_STOP = 6, // STOP PRIVILEGE |
94 | | PRIV_CM_RECALC = 7, // RECALC PRIVILEGE |
95 | | PRIV_CM_KILL = 8, // KILL PRIVILEGE |
96 | | PRIV_CM_SUBSCRIBE = 9, // SUBSCRIBE PRIVILEGE |
97 | | PRIV_CM_READ = 10, // Legacy READ PRIVILEGE (converted to specific privileges) |
98 | | PRIV_CM_WRITE = 11, // Legacy WRITE PRIVILEGE (converted to specific privileges) |
99 | | PRIV_CM_CREATE = 12, // CREATE PRIVILEGE |
100 | | PRIV_CM_MAX = 29, // MAX COMMON PRIVILEGE |
101 | | // ==================== DB Privileges(5~49) ==================== |
102 | | PRIV_DB_CREATE = 30, // CREATE DATABASE |
103 | | PRIV_DB_USE, // USE DATABASE |
104 | | PRIV_DB_FLUSH, // FLUSH DATABASE |
105 | | PRIV_DB_COMPACT, // COMPACT DATABASE |
106 | | PRIV_DB_TRIM, // TRIM DATABASE |
107 | | PRIV_DB_ROLLUP, // ROLLUP DATABASE |
108 | | PRIV_DB_SCAN, // SCAN DATABASE |
109 | | PRIV_DB_SSMIGRATE, // SSMIGRATE DATABASE |
110 | | |
111 | | // VGroup Operations |
112 | | PRIV_VG_BALANCE = 50, // BALANCE VGROUP |
113 | | PRIV_VG_BALANCE_LEADER, // BALANCE VGROUP LEADER |
114 | | PRIV_VG_MERGE, // MERGE VGROUP |
115 | | PRIV_VG_REDISTRIBUTE, // REDISTRIBUTE VGROUP |
116 | | PRIV_VG_SPLIT, // SPLIT VGROUP |
117 | | |
118 | | // DB Show Operations |
119 | | PRIV_SHOW_VNODES = 60, // SHOW VNODES |
120 | | PRIV_SHOW_VGROUPS, // SHOW VGROUPS |
121 | | PRIV_SHOW_COMPACTS, // SHOW COMPACTS |
122 | | PRIV_SHOW_RETENTIONS, // SHOW RETENTIONS |
123 | | PRIV_SHOW_SCANS, // SHOW SCANS |
124 | | PRIV_SHOW_SSMIGRATES, // SHOW SSMIGRATES |
125 | | |
126 | | // ==================== Table Privileges(50-69) ================ |
127 | | PRIV_TBL_CREATE = 70, // CREATE TABLE |
128 | | PRIV_TBL_SELECT = 71, // SELECT TABLE |
129 | | PRIV_TBL_INSERT = 72, // INSERT TABLE |
130 | | PRIV_TBL_UPDATE = 73, // UPDATE TABLE(reserved) |
131 | | PRIV_TBL_DELETE = 74, // DELETE TABLE |
132 | | |
133 | | // ==================== Other Privileges ================ |
134 | | // function management |
135 | | PRIV_FUNC_CREATE = 80, // CREATE FUNCTION |
136 | | PRIV_FUNC_DROP, // DROP FUNCTION |
137 | | PRIV_FUNC_SHOW, // SHOW FUNCTIONS |
138 | | |
139 | | // index management |
140 | | PRIV_IDX_CREATE = 84, // CREATE INDEX |
141 | | |
142 | | // view management |
143 | | PRIV_VIEW_CREATE = 88, // CREATE VIEW |
144 | | PRIV_VIEW_SELECT, // SELECT VIEW |
145 | | |
146 | | // SMA management |
147 | | PRIV_RSMA_CREATE = 95, // CREATE RSMA |
148 | | PRIV_TSMA_CREATE, // CREATE TSMA |
149 | | |
150 | | // mount management |
151 | | PRIV_MOUNT_CREATE = 100, // CREATE MOUNT |
152 | | PRIV_MOUNT_DROP, // DROP MOUNT |
153 | | PRIV_MOUNT_SHOW, // SHOW MOUNTS |
154 | | |
155 | | // password management |
156 | | PRIV_PASS_ALTER = 105, // ALTER PASS |
157 | | PRIV_PASS_ALTER_SELF, // ALTER SELF PASS |
158 | | |
159 | | // role management |
160 | | PRIV_ROLE_CREATE = 110, // CREATE ROLE |
161 | | PRIV_ROLE_DROP, // DROP ROLE |
162 | | PRIV_ROLE_SHOW, // SHOW ROLES |
163 | | PRIV_ROLE_LOCK, // LOCK ROLE |
164 | | PRIV_ROLE_UNLOCK, // UNLOCK ROLE |
165 | | |
166 | | // user management |
167 | | PRIV_USER_CREATE = 130, // CREATE USER |
168 | | PRIV_USER_DROP, // DROP USER |
169 | | PRIV_USER_SET_SECURITY, // SET USER SECURITY INFO |
170 | | PRIV_USER_SET_AUDIT, // SET USER AUDIT INFO |
171 | | PRIV_USER_SET_BASIC, // SET USER BASIC INFO |
172 | | PRIV_USER_UNLOCK, // UNLOCK USER |
173 | | PRIV_USER_LOCK, // LOCK USER |
174 | | PRIV_USER_SHOW, // SHOW USERS |
175 | | PRIV_USER_ALTER, // ALTER USER |
176 | | PRIV_USER_SHOW_SECURITY, // SHOW USERS SECURITY INFO |
177 | | |
178 | | // audit management |
179 | | PRIV_AUDIT_DB_DROP = 140, // DROP AUDIT DATABASE |
180 | | PRIV_AUDIT_DB_ALTER, // ALTER AUDIT DATABASE |
181 | | PRIV_AUDIT_DB_USE, // USE AUDIT DATABASE(reserved for future use) |
182 | | PRIV_AUDIT_TBL_CREATE, // CREATE AUDIT TABLE |
183 | | PRIV_AUDIT_TBL_SELECT, // SELECT AUDIT TABLE |
184 | | PRIV_AUDIT_TBL_INSERT, // INSERT AUDIT TABLE |
185 | | |
186 | | // token management |
187 | | PRIV_TOKEN_CREATE = 150, // CREATE TOKEN |
188 | | PRIV_TOKEN_DROP, // DROP TOKEN |
189 | | PRIV_TOKEN_ALTER, // ALTER TOKEN |
190 | | PRIV_TOKEN_SHOW, // SHOW TOKENS |
191 | | |
192 | | // key management |
193 | | PRIV_KEY_UPDATE = 160, // UPDATE KEY |
194 | | PRIV_TOTP_CREATE, // CREATE TOTP |
195 | | PRIV_TOTP_DROP, // DROP TOTP |
196 | | |
197 | | // grant/revoke privileges |
198 | | PRIV_GRANT_PRIVILEGE = 170, // GRANT PRIVILEGE |
199 | | PRIV_REVOKE_PRIVILEGE, // REVOKE PRIVILEGE |
200 | | PRIV_SHOW_PRIVILEGES, // SHOW PRIVILEGES |
201 | | PRIV_GRANT_SYSDBA, // GRANT SYSDBA PRIVILEGE |
202 | | PRIV_REVOKE_SYSDBA, // REVOKE SYSDBA PRIVILEGE |
203 | | PRIV_GRANT_SYSSEC, // GRANT SYSSEC PRIVILEGE |
204 | | PRIV_REVOKE_SYSSEC, // REVOKE SYSSEC PRIVILEGE |
205 | | PRIV_GRANT_SYSAUDIT, // GRANT SYSAUDIT PRIVILEGE |
206 | | PRIV_REVOKE_SYSAUDIT, // REVOKE SYSAUDIT PRIVILEGE |
207 | | |
208 | | // node management |
209 | | PRIV_NODE_CREATE = 190, // CREATE NODE |
210 | | PRIV_NODE_DROP, // DROP NODE |
211 | | PRIV_NODES_SHOW, // SHOW NODES |
212 | | PRIV_NODE_ALTER, // ALTER NODE |
213 | | |
214 | | // system variables |
215 | | PRIV_VAR_SECURITY_ALTER = 200, // ALTER SECURITY VARIABLE |
216 | | PRIV_VAR_AUDIT_ALTER, // ALTER AUDIT VARIABLE |
217 | | PRIV_VAR_SYSTEM_ALTER, // ALTER SYSTEM VARIABLE |
218 | | PRIV_VAR_DEBUG_ALTER, // ALTER DEBUG VARIABLE |
219 | | PRIV_VAR_SECURITY_SHOW, // SHOW SECURITY VARIABLES |
220 | | PRIV_VAR_AUDIT_SHOW, // SHOW AUDIT VARIABLES |
221 | | PRIV_VAR_SYSTEM_SHOW, // SHOW SYSTEM VARIABLES |
222 | | PRIV_VAR_DEBUG_SHOW, // SHOW DEBUG VARIABLES |
223 | | |
224 | | // topic management |
225 | | PRIV_TOPIC_CREATE = 210, // CREATE TOPIC |
226 | | PRIV_CONSUMER_SHOW, // SHOW CONSUMERS |
227 | | PRIV_SUBSCRIPTION_SHOW, // SHOW SUBSCRIPTIONS |
228 | | |
229 | | // stream management |
230 | | PRIV_STREAM_CREATE = 220, // CREATE STREAM |
231 | | |
232 | | // system operation management |
233 | | PRIV_TRANS_SHOW = 230, // SHOW TRANS |
234 | | PRIV_TRANS_KILL, // KILL TRANS |
235 | | PRIV_CONN_SHOW, // SHOW CONNECTIONS |
236 | | PRIV_CONN_KILL, // KILL CONNECTION |
237 | | PRIV_QUERY_SHOW, // SHOW QUERIES |
238 | | PRIV_QUERY_KILL, // KILL QUERY |
239 | | |
240 | | // system info |
241 | | PRIV_INFO_SCHEMA_READ_BASIC = 240, // READ INFORMATION_SCHEMA BASIC |
242 | | PRIV_INFO_SCHEMA_READ_SEC, // READ INFORMATION_SCHEMA SECURITY |
243 | | PRIV_INFO_SCHEMA_READ_AUDIT, // READ INFORMATION_SCHEMA AUDIT |
244 | | PRIV_INFO_SCHEMA_READ_PRIVILEGED, // READ INFORMATION_SCHEMA PRIVILEGED |
245 | | PRIV_PERF_SCHEMA_READ_BASIC, // READ PERFORMANCE_SCHEMA BASIC |
246 | | PRIV_PERF_SCHEMA_READ_PRIVILEGED, // READ PERFORMANCE_SCHEMA PRIVILEGED |
247 | | PRIV_GRANTS_SHOW, // SHOW GRANTS |
248 | | PRIV_CLUSTER_SHOW, // SHOW CLUSTER |
249 | | PRIV_APPS_SHOW, // SHOW APPS |
250 | | |
251 | | // xnode task |
252 | | PRIV_XNODE_TASK_CREATE = 250, // CREATE XNODE TASK |
253 | | |
254 | | // security policy management |
255 | | PRIV_SECURITY_POLICY_ALTER = 252, // ALTER SECURITY POLICY(SoD/MAC/Object Security Levels) |
256 | | PRIV_SECURITY_POLICIES_SHOW = 253, // SHOW SECURITY POLICIES |
257 | | |
258 | | // extended privileges can be defined here (255 bits reserved in total) |
259 | | // ==================== Maximum Privilege Bit ==================== |
260 | | MAX_PRIV_TYPE = 255 |
261 | | } EPrivType; |
262 | | |
263 | 0 | #define PRIV_GROUP_CNT ((MAX_PRIV_TYPE + 63) / 64) |
264 | | typedef struct { |
265 | | uint64_t set[PRIV_GROUP_CNT]; |
266 | | } SPrivSet; |
267 | | |
268 | 0 | #define PRIV_GROUP(type) ((type) / 64) |
269 | 0 | #define PRIV_OFFSET(type) ((type) & 63) |
270 | | #define PRIV_TYPE(type) ((SPrivSet){.set[PRIV_GROUP(type)] = 1ULL << PRIV_OFFSET(type)}) |
271 | | |
272 | 0 | #define PRIV_HAS(privSet, type) (((privSet)->set[PRIV_GROUP(type)] & (1ULL << PRIV_OFFSET(type))) != 0) |
273 | | |
274 | | #define PRIV_SET(privSet, type, val) \ |
275 | | do { \ |
276 | | if (PRIV_HAS((privSet), (type))) { \ |
277 | | (val) = 1; \ |
278 | | } \ |
279 | | } while (0) |
280 | | |
281 | | typedef struct { |
282 | | SPrivSet privSet; |
283 | | int32_t nPrivArgs; |
284 | | int16_t objType; // EPrivObjType |
285 | | void* selectCols; // SNodeList* |
286 | | void* insertCols; // SNodeList* |
287 | | void* updateCols; // SNodeList* |
288 | | } SPrivSetArgs; |
289 | | |
290 | | #define PRIV_SET_TYPE(type) \ |
291 | 0 | ((SPrivSetArgs){.nPrivArgs = 1, \ |
292 | 0 | .privSet.set[PRIV_GROUP(type)] = 1ULL << PRIV_OFFSET(type), \ |
293 | 0 | .selectCols = NULL, \ |
294 | 0 | .insertCols = NULL, \ |
295 | 0 | .updateCols = NULL}) |
296 | | |
297 | | #define PRIV_SET_COLS(type, select, insert, update) \ |
298 | 0 | ((SPrivSetArgs){.nPrivArgs = 1, \ |
299 | 0 | .privSet = ((select) == NULL && (insert) == NULL && (update) == NULL \ |
300 | 0 | ? (SPrivSet){.set[PRIV_GROUP(type)] = 1ULL << PRIV_OFFSET(type)} \ |
301 | 0 | : (SPrivSet){0}), \ |
302 | 0 | .selectCols = (void*)(select), \ |
303 | 0 | .insertCols = (void*)(insert), \ |
304 | 0 | .updateCols = (void*)(update)}) |
305 | | |
306 | | typedef enum { |
307 | | PRIV_CATEGORY_UNKNOWN = -1, |
308 | | PRIV_CATEGORY_SYSTEM, |
309 | | PRIV_CATEGORY_OBJECT, |
310 | | PRIV_CATEGORY_COMMON, |
311 | | PRIV_CATEGORY_MAX, |
312 | | } EPrivCategory; |
313 | | |
314 | | typedef enum { |
315 | | PRIV_OBJ_UNKNOWN = -1, |
316 | | PRIV_OBJ_CLUSTER = 0, |
317 | | PRIV_OBJ_NODE = 1, |
318 | | PRIV_OBJ_DB = 2, |
319 | | PRIV_OBJ_TBL = 3, |
320 | | PRIV_OBJ_FUNC = 4, |
321 | | PRIV_OBJ_IDX = 5, |
322 | | PRIV_OBJ_VIEW = 6, |
323 | | PRIV_OBJ_USER = 7, |
324 | | PRIV_OBJ_ROLE = 8, |
325 | | PRIV_OBJ_RSMA = 9, |
326 | | PRIV_OBJ_TSMA = 10, |
327 | | PRIV_OBJ_TOPIC = 11, |
328 | | PRIV_OBJ_STREAM = 12, |
329 | | PRIV_OBJ_MOUNT = 13, |
330 | | PRIV_OBJ_AUDIT = 14, |
331 | | PRIV_OBJ_TOKEN = 15, |
332 | | PRIV_OBJ_NONE = 16, // not specified |
333 | | PRIV_OBJ_XTASK = 17, // xnode task |
334 | | PRIV_OBJ_MAX = 18, |
335 | | } EPrivObjType; |
336 | | |
337 | | typedef enum { |
338 | | PRIV_RW_ATTR_UNKNOWN = 0, |
339 | | PRIV_RW_ATTR_READ = 0x01, |
340 | | PRIV_RW_ATTR_WRITE = 0x02, |
341 | | PRIV_RW_ATTR_RW = 0x03, |
342 | | } EPrivRwAttr; |
343 | | |
344 | | typedef struct { |
345 | | int16_t privType; // EPrivType |
346 | | int8_t category; // EPrivCategory |
347 | | int8_t objType; // EPrivObjType |
348 | | int8_t objLevel; // 0: DB, function, 1: table, view |
349 | | uint8_t sysType; |
350 | | uint8_t rwAttr; // 0x01 for read, 0x02 for write, 0x03 for read/write |
351 | | const char* dbName; // "" for *, otherwise specific db name |
352 | | const char* name; |
353 | | } SPrivInfo; |
354 | | |
355 | | /* |
356 | | * The SPrivTblPolicy only applies to tables, such as READ/WRITE/DELETE TABLE. |
357 | | * It defines the row-level or table-level privileges for a table, maybe combined with columns and tag conditions. |
358 | | * It's recommended to decrease the number of SPrivPolicy considering the performance. |
359 | | */ |
360 | | typedef struct { |
361 | | SArray* cols; // SColNameFlag, NULL means all columns, sorted by colId. |
362 | | char* cond; // NULL if no condition of columns or tags. |
363 | | int32_t condLen; |
364 | | int64_t updateUs; |
365 | | } SPrivTblPolicy; |
366 | | |
367 | | typedef struct { |
368 | | SArray* policy; // element of SArray: SPrivTblPolicy, only support 1 element currently |
369 | | } SPrivTblPolicies; |
370 | | |
371 | | typedef struct { |
372 | | SPrivSet policy; |
373 | | } SPrivObjPolicies; |
374 | | |
375 | | typedef struct { |
376 | | SPrivSet* privSet; |
377 | | uint64_t curPriv; |
378 | | int32_t groupIndex; |
379 | | } SPrivIter; |
380 | | |
381 | | typedef struct { |
382 | | SPrivInfo* privInfo; |
383 | | int32_t privInfoCnt; |
384 | | int32_t index; |
385 | | } SPrivInfoIter; |
386 | | |
387 | 0 | static FORCE_INLINE void privAddSet(SPrivSet* privSet1, SPrivSet* privSet2) { |
388 | 0 | for (int32_t i = 0; i < PRIV_GROUP_CNT; ++i) { |
389 | 0 | if (privSet2->set[i]) { |
390 | 0 | privSet1->set[i] |= privSet2->set[i]; |
391 | 0 | } |
392 | 0 | } |
393 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privAddSet Unexecuted instantiation: parser.c:privAddSet Unexecuted instantiation: parTranslater.c:privAddSet Unexecuted instantiation: parUtil.c:privAddSet Unexecuted instantiation: parAstParser.c:privAddSet Unexecuted instantiation: parAuthenticator.c:privAddSet Unexecuted instantiation: parCalcConst.c:privAddSet Unexecuted instantiation: parInsertSql.c:privAddSet Unexecuted instantiation: parInsertUtil.c:privAddSet Unexecuted instantiation: taos_lemon_sql.tab.c:privAddSet Unexecuted instantiation: parAstCreater.c:privAddSet Unexecuted instantiation: parInsertSml.c:privAddSet Unexecuted instantiation: planner.c:privAddSet Unexecuted instantiation: planLogicCreater.c:privAddSet Unexecuted instantiation: planOptimizer.c:privAddSet Unexecuted instantiation: planPhysiCreater.c:privAddSet Unexecuted instantiation: planScaleOut.c:privAddSet Unexecuted instantiation: planSpliter.c:privAddSet Unexecuted instantiation: planUtil.c:privAddSet Unexecuted instantiation: planValidator.c:privAddSet Unexecuted instantiation: catalog.c:privAddSet Unexecuted instantiation: ctgAsync.c:privAddSet Unexecuted instantiation: ctgCache.c:privAddSet Unexecuted instantiation: ctgDbg.c:privAddSet Unexecuted instantiation: ctgRemote.c:privAddSet Unexecuted instantiation: ctgRent.c:privAddSet Unexecuted instantiation: ctgUtil.c:privAddSet Unexecuted instantiation: functionMgt.c:privAddSet Unexecuted instantiation: tudf.c:privAddSet Unexecuted instantiation: builtins.c:privAddSet Unexecuted instantiation: builtinsimpl.c:privAddSet Unexecuted instantiation: thistogram.c:privAddSet Unexecuted instantiation: tpercentile.c:privAddSet Unexecuted instantiation: tavgfunction.c:privAddSet Unexecuted instantiation: tminmax.c:privAddSet Unexecuted instantiation: tminmaxavx.c:privAddSet Unexecuted instantiation: filter.c:privAddSet Unexecuted instantiation: scalar.c:privAddSet Unexecuted instantiation: sclfunc.c:privAddSet Unexecuted instantiation: sclvector.c:privAddSet Unexecuted instantiation: nodesCloneFuncs.c:privAddSet Unexecuted instantiation: nodesCodeFuncs.c:privAddSet Unexecuted instantiation: nodesEqualFuncs.c:privAddSet Unexecuted instantiation: nodesMatchFuncs.c:privAddSet Unexecuted instantiation: nodesMsgFuncs.c:privAddSet Unexecuted instantiation: nodesToSQLFuncs.c:privAddSet Unexecuted instantiation: nodesTraverseFuncs.c:privAddSet Unexecuted instantiation: nodesUtilFuncs.c:privAddSet Unexecuted instantiation: queryUtil.c:privAddSet Unexecuted instantiation: querymsg.c:privAddSet Unexecuted instantiation: trans.c:privAddSet Unexecuted instantiation: transCli.c:privAddSet Unexecuted instantiation: transComm.c:privAddSet Unexecuted instantiation: transSasl.c:privAddSet Unexecuted instantiation: transSvr.c:privAddSet Unexecuted instantiation: transTLS.c:privAddSet Unexecuted instantiation: thttp.c:privAddSet Unexecuted instantiation: geomFunc.c:privAddSet Unexecuted instantiation: tconfig.c:privAddSet Unexecuted instantiation: tdigest.c:privAddSet Unexecuted instantiation: tlog.c:privAddSet Unexecuted instantiation: tmempool.c:privAddSet Unexecuted instantiation: mpDirect.c:privAddSet Unexecuted instantiation: systable.c:privAddSet Unexecuted instantiation: tdatablock.c:privAddSet Unexecuted instantiation: tdataformat.c:privAddSet Unexecuted instantiation: tglobal.c:privAddSet Unexecuted instantiation: tmisce.c:privAddSet Unexecuted instantiation: tname.c:privAddSet Unexecuted instantiation: tpriv.c:privAddSet Unexecuted instantiation: ttime.c:privAddSet Unexecuted instantiation: tvariant.c:privAddSet Unexecuted instantiation: streamMsg.c:privAddSet Unexecuted instantiation: tmsg.c:privAddSet Unexecuted instantiation: xnode.c:privAddSet Unexecuted instantiation: tencrypt.c:privAddSet Unexecuted instantiation: streamJson.c:privAddSet |
394 | | |
395 | 0 | static FORCE_INLINE void privAddType(SPrivSet* privSet, EPrivType type) { |
396 | 0 | if (type < 0 || type > MAX_PRIV_TYPE) return; |
397 | 0 | privSet->set[PRIV_GROUP(type)] |= 1ULL << PRIV_OFFSET(type); |
398 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privAddType Unexecuted instantiation: parser.c:privAddType Unexecuted instantiation: parTranslater.c:privAddType Unexecuted instantiation: parUtil.c:privAddType Unexecuted instantiation: parAstParser.c:privAddType Unexecuted instantiation: parAuthenticator.c:privAddType Unexecuted instantiation: parCalcConst.c:privAddType Unexecuted instantiation: parInsertSql.c:privAddType Unexecuted instantiation: parInsertUtil.c:privAddType Unexecuted instantiation: taos_lemon_sql.tab.c:privAddType Unexecuted instantiation: parAstCreater.c:privAddType Unexecuted instantiation: parInsertSml.c:privAddType Unexecuted instantiation: planner.c:privAddType Unexecuted instantiation: planLogicCreater.c:privAddType Unexecuted instantiation: planOptimizer.c:privAddType Unexecuted instantiation: planPhysiCreater.c:privAddType Unexecuted instantiation: planScaleOut.c:privAddType Unexecuted instantiation: planSpliter.c:privAddType Unexecuted instantiation: planUtil.c:privAddType Unexecuted instantiation: planValidator.c:privAddType Unexecuted instantiation: catalog.c:privAddType Unexecuted instantiation: ctgAsync.c:privAddType Unexecuted instantiation: ctgCache.c:privAddType Unexecuted instantiation: ctgDbg.c:privAddType Unexecuted instantiation: ctgRemote.c:privAddType Unexecuted instantiation: ctgRent.c:privAddType Unexecuted instantiation: ctgUtil.c:privAddType Unexecuted instantiation: functionMgt.c:privAddType Unexecuted instantiation: tudf.c:privAddType Unexecuted instantiation: builtins.c:privAddType Unexecuted instantiation: builtinsimpl.c:privAddType Unexecuted instantiation: thistogram.c:privAddType Unexecuted instantiation: tpercentile.c:privAddType Unexecuted instantiation: tavgfunction.c:privAddType Unexecuted instantiation: tminmax.c:privAddType Unexecuted instantiation: tminmaxavx.c:privAddType Unexecuted instantiation: filter.c:privAddType Unexecuted instantiation: scalar.c:privAddType Unexecuted instantiation: sclfunc.c:privAddType Unexecuted instantiation: sclvector.c:privAddType Unexecuted instantiation: nodesCloneFuncs.c:privAddType Unexecuted instantiation: nodesCodeFuncs.c:privAddType Unexecuted instantiation: nodesEqualFuncs.c:privAddType Unexecuted instantiation: nodesMatchFuncs.c:privAddType Unexecuted instantiation: nodesMsgFuncs.c:privAddType Unexecuted instantiation: nodesToSQLFuncs.c:privAddType Unexecuted instantiation: nodesTraverseFuncs.c:privAddType Unexecuted instantiation: nodesUtilFuncs.c:privAddType Unexecuted instantiation: queryUtil.c:privAddType Unexecuted instantiation: querymsg.c:privAddType Unexecuted instantiation: trans.c:privAddType Unexecuted instantiation: transCli.c:privAddType Unexecuted instantiation: transComm.c:privAddType Unexecuted instantiation: transSasl.c:privAddType Unexecuted instantiation: transSvr.c:privAddType Unexecuted instantiation: transTLS.c:privAddType Unexecuted instantiation: thttp.c:privAddType Unexecuted instantiation: geomFunc.c:privAddType Unexecuted instantiation: tconfig.c:privAddType Unexecuted instantiation: tdigest.c:privAddType Unexecuted instantiation: tlog.c:privAddType Unexecuted instantiation: tmempool.c:privAddType Unexecuted instantiation: mpDirect.c:privAddType Unexecuted instantiation: systable.c:privAddType Unexecuted instantiation: tdatablock.c:privAddType Unexecuted instantiation: tdataformat.c:privAddType Unexecuted instantiation: tglobal.c:privAddType Unexecuted instantiation: tmisce.c:privAddType Unexecuted instantiation: tname.c:privAddType Unexecuted instantiation: tpriv.c:privAddType Unexecuted instantiation: ttime.c:privAddType Unexecuted instantiation: tvariant.c:privAddType Unexecuted instantiation: streamMsg.c:privAddType Unexecuted instantiation: tmsg.c:privAddType Unexecuted instantiation: xnode.c:privAddType Unexecuted instantiation: tencrypt.c:privAddType Unexecuted instantiation: streamJson.c:privAddType |
399 | | |
400 | 0 | static FORCE_INLINE void privRemoveSet(SPrivSet* privSet1, const SPrivSet* privSet2) { |
401 | 0 | for (int i = 0; i < PRIV_GROUP_CNT; i++) { |
402 | 0 | privSet1->set[i] &= ~privSet2->set[i]; |
403 | 0 | } |
404 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privRemoveSet Unexecuted instantiation: parser.c:privRemoveSet Unexecuted instantiation: parTranslater.c:privRemoveSet Unexecuted instantiation: parUtil.c:privRemoveSet Unexecuted instantiation: parAstParser.c:privRemoveSet Unexecuted instantiation: parAuthenticator.c:privRemoveSet Unexecuted instantiation: parCalcConst.c:privRemoveSet Unexecuted instantiation: parInsertSql.c:privRemoveSet Unexecuted instantiation: parInsertUtil.c:privRemoveSet Unexecuted instantiation: taos_lemon_sql.tab.c:privRemoveSet Unexecuted instantiation: parAstCreater.c:privRemoveSet Unexecuted instantiation: parInsertSml.c:privRemoveSet Unexecuted instantiation: planner.c:privRemoveSet Unexecuted instantiation: planLogicCreater.c:privRemoveSet Unexecuted instantiation: planOptimizer.c:privRemoveSet Unexecuted instantiation: planPhysiCreater.c:privRemoveSet Unexecuted instantiation: planScaleOut.c:privRemoveSet Unexecuted instantiation: planSpliter.c:privRemoveSet Unexecuted instantiation: planUtil.c:privRemoveSet Unexecuted instantiation: planValidator.c:privRemoveSet Unexecuted instantiation: catalog.c:privRemoveSet Unexecuted instantiation: ctgAsync.c:privRemoveSet Unexecuted instantiation: ctgCache.c:privRemoveSet Unexecuted instantiation: ctgDbg.c:privRemoveSet Unexecuted instantiation: ctgRemote.c:privRemoveSet Unexecuted instantiation: ctgRent.c:privRemoveSet Unexecuted instantiation: ctgUtil.c:privRemoveSet Unexecuted instantiation: functionMgt.c:privRemoveSet Unexecuted instantiation: tudf.c:privRemoveSet Unexecuted instantiation: builtins.c:privRemoveSet Unexecuted instantiation: builtinsimpl.c:privRemoveSet Unexecuted instantiation: thistogram.c:privRemoveSet Unexecuted instantiation: tpercentile.c:privRemoveSet Unexecuted instantiation: tavgfunction.c:privRemoveSet Unexecuted instantiation: tminmax.c:privRemoveSet Unexecuted instantiation: tminmaxavx.c:privRemoveSet Unexecuted instantiation: filter.c:privRemoveSet Unexecuted instantiation: scalar.c:privRemoveSet Unexecuted instantiation: sclfunc.c:privRemoveSet Unexecuted instantiation: sclvector.c:privRemoveSet Unexecuted instantiation: nodesCloneFuncs.c:privRemoveSet Unexecuted instantiation: nodesCodeFuncs.c:privRemoveSet Unexecuted instantiation: nodesEqualFuncs.c:privRemoveSet Unexecuted instantiation: nodesMatchFuncs.c:privRemoveSet Unexecuted instantiation: nodesMsgFuncs.c:privRemoveSet Unexecuted instantiation: nodesToSQLFuncs.c:privRemoveSet Unexecuted instantiation: nodesTraverseFuncs.c:privRemoveSet Unexecuted instantiation: nodesUtilFuncs.c:privRemoveSet Unexecuted instantiation: queryUtil.c:privRemoveSet Unexecuted instantiation: querymsg.c:privRemoveSet Unexecuted instantiation: trans.c:privRemoveSet Unexecuted instantiation: transCli.c:privRemoveSet Unexecuted instantiation: transComm.c:privRemoveSet Unexecuted instantiation: transSasl.c:privRemoveSet Unexecuted instantiation: transSvr.c:privRemoveSet Unexecuted instantiation: transTLS.c:privRemoveSet Unexecuted instantiation: thttp.c:privRemoveSet Unexecuted instantiation: geomFunc.c:privRemoveSet Unexecuted instantiation: tconfig.c:privRemoveSet Unexecuted instantiation: tdigest.c:privRemoveSet Unexecuted instantiation: tlog.c:privRemoveSet Unexecuted instantiation: tmempool.c:privRemoveSet Unexecuted instantiation: mpDirect.c:privRemoveSet Unexecuted instantiation: systable.c:privRemoveSet Unexecuted instantiation: tdatablock.c:privRemoveSet Unexecuted instantiation: tdataformat.c:privRemoveSet Unexecuted instantiation: tglobal.c:privRemoveSet Unexecuted instantiation: tmisce.c:privRemoveSet Unexecuted instantiation: tname.c:privRemoveSet Unexecuted instantiation: tpriv.c:privRemoveSet Unexecuted instantiation: ttime.c:privRemoveSet Unexecuted instantiation: tvariant.c:privRemoveSet Unexecuted instantiation: streamMsg.c:privRemoveSet Unexecuted instantiation: tmsg.c:privRemoveSet Unexecuted instantiation: xnode.c:privRemoveSet Unexecuted instantiation: tencrypt.c:privRemoveSet Unexecuted instantiation: streamJson.c:privRemoveSet |
405 | | |
406 | 0 | static FORCE_INLINE void privRemoveType(SPrivSet* privSet, EPrivType type) { |
407 | 0 | if (type < 0 || type > MAX_PRIV_TYPE) return; |
408 | 0 | privSet->set[PRIV_GROUP(type)] &= ~(1ULL << PRIV_OFFSET(type)); |
409 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privRemoveType Unexecuted instantiation: parser.c:privRemoveType Unexecuted instantiation: parTranslater.c:privRemoveType Unexecuted instantiation: parUtil.c:privRemoveType Unexecuted instantiation: parAstParser.c:privRemoveType Unexecuted instantiation: parAuthenticator.c:privRemoveType Unexecuted instantiation: parCalcConst.c:privRemoveType Unexecuted instantiation: parInsertSql.c:privRemoveType Unexecuted instantiation: parInsertUtil.c:privRemoveType Unexecuted instantiation: taos_lemon_sql.tab.c:privRemoveType Unexecuted instantiation: parAstCreater.c:privRemoveType Unexecuted instantiation: parInsertSml.c:privRemoveType Unexecuted instantiation: planner.c:privRemoveType Unexecuted instantiation: planLogicCreater.c:privRemoveType Unexecuted instantiation: planOptimizer.c:privRemoveType Unexecuted instantiation: planPhysiCreater.c:privRemoveType Unexecuted instantiation: planScaleOut.c:privRemoveType Unexecuted instantiation: planSpliter.c:privRemoveType Unexecuted instantiation: planUtil.c:privRemoveType Unexecuted instantiation: planValidator.c:privRemoveType Unexecuted instantiation: catalog.c:privRemoveType Unexecuted instantiation: ctgAsync.c:privRemoveType Unexecuted instantiation: ctgCache.c:privRemoveType Unexecuted instantiation: ctgDbg.c:privRemoveType Unexecuted instantiation: ctgRemote.c:privRemoveType Unexecuted instantiation: ctgRent.c:privRemoveType Unexecuted instantiation: ctgUtil.c:privRemoveType Unexecuted instantiation: functionMgt.c:privRemoveType Unexecuted instantiation: tudf.c:privRemoveType Unexecuted instantiation: builtins.c:privRemoveType Unexecuted instantiation: builtinsimpl.c:privRemoveType Unexecuted instantiation: thistogram.c:privRemoveType Unexecuted instantiation: tpercentile.c:privRemoveType Unexecuted instantiation: tavgfunction.c:privRemoveType Unexecuted instantiation: tminmax.c:privRemoveType Unexecuted instantiation: tminmaxavx.c:privRemoveType Unexecuted instantiation: filter.c:privRemoveType Unexecuted instantiation: scalar.c:privRemoveType Unexecuted instantiation: sclfunc.c:privRemoveType Unexecuted instantiation: sclvector.c:privRemoveType Unexecuted instantiation: nodesCloneFuncs.c:privRemoveType Unexecuted instantiation: nodesCodeFuncs.c:privRemoveType Unexecuted instantiation: nodesEqualFuncs.c:privRemoveType Unexecuted instantiation: nodesMatchFuncs.c:privRemoveType Unexecuted instantiation: nodesMsgFuncs.c:privRemoveType Unexecuted instantiation: nodesToSQLFuncs.c:privRemoveType Unexecuted instantiation: nodesTraverseFuncs.c:privRemoveType Unexecuted instantiation: nodesUtilFuncs.c:privRemoveType Unexecuted instantiation: queryUtil.c:privRemoveType Unexecuted instantiation: querymsg.c:privRemoveType Unexecuted instantiation: trans.c:privRemoveType Unexecuted instantiation: transCli.c:privRemoveType Unexecuted instantiation: transComm.c:privRemoveType Unexecuted instantiation: transSasl.c:privRemoveType Unexecuted instantiation: transSvr.c:privRemoveType Unexecuted instantiation: transTLS.c:privRemoveType Unexecuted instantiation: thttp.c:privRemoveType Unexecuted instantiation: geomFunc.c:privRemoveType Unexecuted instantiation: tconfig.c:privRemoveType Unexecuted instantiation: tdigest.c:privRemoveType Unexecuted instantiation: tlog.c:privRemoveType Unexecuted instantiation: tmempool.c:privRemoveType Unexecuted instantiation: mpDirect.c:privRemoveType Unexecuted instantiation: systable.c:privRemoveType Unexecuted instantiation: tdatablock.c:privRemoveType Unexecuted instantiation: tdataformat.c:privRemoveType Unexecuted instantiation: tglobal.c:privRemoveType Unexecuted instantiation: tmisce.c:privRemoveType Unexecuted instantiation: tname.c:privRemoveType Unexecuted instantiation: tpriv.c:privRemoveType Unexecuted instantiation: ttime.c:privRemoveType Unexecuted instantiation: tvariant.c:privRemoveType Unexecuted instantiation: streamMsg.c:privRemoveType Unexecuted instantiation: tmsg.c:privRemoveType Unexecuted instantiation: xnode.c:privRemoveType Unexecuted instantiation: tencrypt.c:privRemoveType Unexecuted instantiation: streamJson.c:privRemoveType |
410 | | |
411 | 0 | static FORCE_INLINE bool privIsEmptySet(SPrivSet* privSet) { |
412 | 0 | for (int i = 0; i < PRIV_GROUP_CNT; i++) { |
413 | 0 | if (privSet->set[i] != 0) return false; |
414 | 0 | } |
415 | 0 | return true; |
416 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privIsEmptySet Unexecuted instantiation: parser.c:privIsEmptySet Unexecuted instantiation: parTranslater.c:privIsEmptySet Unexecuted instantiation: parUtil.c:privIsEmptySet Unexecuted instantiation: parAstParser.c:privIsEmptySet Unexecuted instantiation: parAuthenticator.c:privIsEmptySet Unexecuted instantiation: parCalcConst.c:privIsEmptySet Unexecuted instantiation: parInsertSql.c:privIsEmptySet Unexecuted instantiation: parInsertUtil.c:privIsEmptySet Unexecuted instantiation: taos_lemon_sql.tab.c:privIsEmptySet Unexecuted instantiation: parAstCreater.c:privIsEmptySet Unexecuted instantiation: parInsertSml.c:privIsEmptySet Unexecuted instantiation: planner.c:privIsEmptySet Unexecuted instantiation: planLogicCreater.c:privIsEmptySet Unexecuted instantiation: planOptimizer.c:privIsEmptySet Unexecuted instantiation: planPhysiCreater.c:privIsEmptySet Unexecuted instantiation: planScaleOut.c:privIsEmptySet Unexecuted instantiation: planSpliter.c:privIsEmptySet Unexecuted instantiation: planUtil.c:privIsEmptySet Unexecuted instantiation: planValidator.c:privIsEmptySet Unexecuted instantiation: catalog.c:privIsEmptySet Unexecuted instantiation: ctgAsync.c:privIsEmptySet Unexecuted instantiation: ctgCache.c:privIsEmptySet Unexecuted instantiation: ctgDbg.c:privIsEmptySet Unexecuted instantiation: ctgRemote.c:privIsEmptySet Unexecuted instantiation: ctgRent.c:privIsEmptySet Unexecuted instantiation: ctgUtil.c:privIsEmptySet Unexecuted instantiation: functionMgt.c:privIsEmptySet Unexecuted instantiation: tudf.c:privIsEmptySet Unexecuted instantiation: builtins.c:privIsEmptySet Unexecuted instantiation: builtinsimpl.c:privIsEmptySet Unexecuted instantiation: thistogram.c:privIsEmptySet Unexecuted instantiation: tpercentile.c:privIsEmptySet Unexecuted instantiation: tavgfunction.c:privIsEmptySet Unexecuted instantiation: tminmax.c:privIsEmptySet Unexecuted instantiation: tminmaxavx.c:privIsEmptySet Unexecuted instantiation: filter.c:privIsEmptySet Unexecuted instantiation: scalar.c:privIsEmptySet Unexecuted instantiation: sclfunc.c:privIsEmptySet Unexecuted instantiation: sclvector.c:privIsEmptySet Unexecuted instantiation: nodesCloneFuncs.c:privIsEmptySet Unexecuted instantiation: nodesCodeFuncs.c:privIsEmptySet Unexecuted instantiation: nodesEqualFuncs.c:privIsEmptySet Unexecuted instantiation: nodesMatchFuncs.c:privIsEmptySet Unexecuted instantiation: nodesMsgFuncs.c:privIsEmptySet Unexecuted instantiation: nodesToSQLFuncs.c:privIsEmptySet Unexecuted instantiation: nodesTraverseFuncs.c:privIsEmptySet Unexecuted instantiation: nodesUtilFuncs.c:privIsEmptySet Unexecuted instantiation: queryUtil.c:privIsEmptySet Unexecuted instantiation: querymsg.c:privIsEmptySet Unexecuted instantiation: trans.c:privIsEmptySet Unexecuted instantiation: transCli.c:privIsEmptySet Unexecuted instantiation: transComm.c:privIsEmptySet Unexecuted instantiation: transSasl.c:privIsEmptySet Unexecuted instantiation: transSvr.c:privIsEmptySet Unexecuted instantiation: transTLS.c:privIsEmptySet Unexecuted instantiation: thttp.c:privIsEmptySet Unexecuted instantiation: geomFunc.c:privIsEmptySet Unexecuted instantiation: tconfig.c:privIsEmptySet Unexecuted instantiation: tdigest.c:privIsEmptySet Unexecuted instantiation: tlog.c:privIsEmptySet Unexecuted instantiation: tmempool.c:privIsEmptySet Unexecuted instantiation: mpDirect.c:privIsEmptySet Unexecuted instantiation: systable.c:privIsEmptySet Unexecuted instantiation: tdatablock.c:privIsEmptySet Unexecuted instantiation: tdataformat.c:privIsEmptySet Unexecuted instantiation: tglobal.c:privIsEmptySet Unexecuted instantiation: tmisce.c:privIsEmptySet Unexecuted instantiation: tname.c:privIsEmptySet Unexecuted instantiation: tpriv.c:privIsEmptySet Unexecuted instantiation: ttime.c:privIsEmptySet Unexecuted instantiation: tvariant.c:privIsEmptySet Unexecuted instantiation: streamMsg.c:privIsEmptySet Unexecuted instantiation: tmsg.c:privIsEmptySet Unexecuted instantiation: xnode.c:privIsEmptySet Unexecuted instantiation: tencrypt.c:privIsEmptySet Unexecuted instantiation: streamJson.c:privIsEmptySet |
417 | | |
418 | 0 | static FORCE_INLINE void privTblPolicyFree(void* policy) { |
419 | 0 | taosMemoryFree(((SPrivTblPolicy*)policy)->cond); |
420 | 0 | taosArrayDestroy(((SPrivTblPolicy*)policy)->cols); |
421 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privTblPolicyFree Unexecuted instantiation: parser.c:privTblPolicyFree Unexecuted instantiation: parTranslater.c:privTblPolicyFree Unexecuted instantiation: parUtil.c:privTblPolicyFree Unexecuted instantiation: parAstParser.c:privTblPolicyFree Unexecuted instantiation: parAuthenticator.c:privTblPolicyFree Unexecuted instantiation: parCalcConst.c:privTblPolicyFree Unexecuted instantiation: parInsertSql.c:privTblPolicyFree Unexecuted instantiation: parInsertUtil.c:privTblPolicyFree Unexecuted instantiation: taos_lemon_sql.tab.c:privTblPolicyFree Unexecuted instantiation: parAstCreater.c:privTblPolicyFree Unexecuted instantiation: parInsertSml.c:privTblPolicyFree Unexecuted instantiation: planner.c:privTblPolicyFree Unexecuted instantiation: planLogicCreater.c:privTblPolicyFree Unexecuted instantiation: planOptimizer.c:privTblPolicyFree Unexecuted instantiation: planPhysiCreater.c:privTblPolicyFree Unexecuted instantiation: planScaleOut.c:privTblPolicyFree Unexecuted instantiation: planSpliter.c:privTblPolicyFree Unexecuted instantiation: planUtil.c:privTblPolicyFree Unexecuted instantiation: planValidator.c:privTblPolicyFree Unexecuted instantiation: catalog.c:privTblPolicyFree Unexecuted instantiation: ctgAsync.c:privTblPolicyFree Unexecuted instantiation: ctgCache.c:privTblPolicyFree Unexecuted instantiation: ctgDbg.c:privTblPolicyFree Unexecuted instantiation: ctgRemote.c:privTblPolicyFree Unexecuted instantiation: ctgRent.c:privTblPolicyFree Unexecuted instantiation: ctgUtil.c:privTblPolicyFree Unexecuted instantiation: functionMgt.c:privTblPolicyFree Unexecuted instantiation: tudf.c:privTblPolicyFree Unexecuted instantiation: builtins.c:privTblPolicyFree Unexecuted instantiation: builtinsimpl.c:privTblPolicyFree Unexecuted instantiation: thistogram.c:privTblPolicyFree Unexecuted instantiation: tpercentile.c:privTblPolicyFree Unexecuted instantiation: tavgfunction.c:privTblPolicyFree Unexecuted instantiation: tminmax.c:privTblPolicyFree Unexecuted instantiation: tminmaxavx.c:privTblPolicyFree Unexecuted instantiation: filter.c:privTblPolicyFree Unexecuted instantiation: scalar.c:privTblPolicyFree Unexecuted instantiation: sclfunc.c:privTblPolicyFree Unexecuted instantiation: sclvector.c:privTblPolicyFree Unexecuted instantiation: nodesCloneFuncs.c:privTblPolicyFree Unexecuted instantiation: nodesCodeFuncs.c:privTblPolicyFree Unexecuted instantiation: nodesEqualFuncs.c:privTblPolicyFree Unexecuted instantiation: nodesMatchFuncs.c:privTblPolicyFree Unexecuted instantiation: nodesMsgFuncs.c:privTblPolicyFree Unexecuted instantiation: nodesToSQLFuncs.c:privTblPolicyFree Unexecuted instantiation: nodesTraverseFuncs.c:privTblPolicyFree Unexecuted instantiation: nodesUtilFuncs.c:privTblPolicyFree Unexecuted instantiation: queryUtil.c:privTblPolicyFree Unexecuted instantiation: querymsg.c:privTblPolicyFree Unexecuted instantiation: trans.c:privTblPolicyFree Unexecuted instantiation: transCli.c:privTblPolicyFree Unexecuted instantiation: transComm.c:privTblPolicyFree Unexecuted instantiation: transSasl.c:privTblPolicyFree Unexecuted instantiation: transSvr.c:privTblPolicyFree Unexecuted instantiation: transTLS.c:privTblPolicyFree Unexecuted instantiation: thttp.c:privTblPolicyFree Unexecuted instantiation: geomFunc.c:privTblPolicyFree Unexecuted instantiation: tconfig.c:privTblPolicyFree Unexecuted instantiation: tdigest.c:privTblPolicyFree Unexecuted instantiation: tlog.c:privTblPolicyFree Unexecuted instantiation: tmempool.c:privTblPolicyFree Unexecuted instantiation: mpDirect.c:privTblPolicyFree Unexecuted instantiation: systable.c:privTblPolicyFree Unexecuted instantiation: tdatablock.c:privTblPolicyFree Unexecuted instantiation: tdataformat.c:privTblPolicyFree Unexecuted instantiation: tglobal.c:privTblPolicyFree Unexecuted instantiation: tmisce.c:privTblPolicyFree Unexecuted instantiation: tname.c:privTblPolicyFree Unexecuted instantiation: tpriv.c:privTblPolicyFree Unexecuted instantiation: ttime.c:privTblPolicyFree Unexecuted instantiation: tvariant.c:privTblPolicyFree Unexecuted instantiation: streamMsg.c:privTblPolicyFree Unexecuted instantiation: tmsg.c:privTblPolicyFree Unexecuted instantiation: xnode.c:privTblPolicyFree Unexecuted instantiation: tencrypt.c:privTblPolicyFree Unexecuted instantiation: streamJson.c:privTblPolicyFree |
422 | | |
423 | 0 | static FORCE_INLINE void privTblPoliciesFree(void* pTblPolicies) { |
424 | 0 | SPrivTblPolicies* tbPolicies = (SPrivTblPolicies*)pTblPolicies; |
425 | 0 | taosArrayDestroyEx(tbPolicies->policy, privTblPolicyFree); |
426 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privTblPoliciesFree Unexecuted instantiation: parser.c:privTblPoliciesFree Unexecuted instantiation: parTranslater.c:privTblPoliciesFree Unexecuted instantiation: parUtil.c:privTblPoliciesFree Unexecuted instantiation: parAstParser.c:privTblPoliciesFree Unexecuted instantiation: parAuthenticator.c:privTblPoliciesFree Unexecuted instantiation: parCalcConst.c:privTblPoliciesFree Unexecuted instantiation: parInsertSql.c:privTblPoliciesFree Unexecuted instantiation: parInsertUtil.c:privTblPoliciesFree Unexecuted instantiation: taos_lemon_sql.tab.c:privTblPoliciesFree Unexecuted instantiation: parAstCreater.c:privTblPoliciesFree Unexecuted instantiation: parInsertSml.c:privTblPoliciesFree Unexecuted instantiation: planner.c:privTblPoliciesFree Unexecuted instantiation: planLogicCreater.c:privTblPoliciesFree Unexecuted instantiation: planOptimizer.c:privTblPoliciesFree Unexecuted instantiation: planPhysiCreater.c:privTblPoliciesFree Unexecuted instantiation: planScaleOut.c:privTblPoliciesFree Unexecuted instantiation: planSpliter.c:privTblPoliciesFree Unexecuted instantiation: planUtil.c:privTblPoliciesFree Unexecuted instantiation: planValidator.c:privTblPoliciesFree Unexecuted instantiation: catalog.c:privTblPoliciesFree Unexecuted instantiation: ctgAsync.c:privTblPoliciesFree Unexecuted instantiation: ctgCache.c:privTblPoliciesFree Unexecuted instantiation: ctgDbg.c:privTblPoliciesFree Unexecuted instantiation: ctgRemote.c:privTblPoliciesFree Unexecuted instantiation: ctgRent.c:privTblPoliciesFree Unexecuted instantiation: ctgUtil.c:privTblPoliciesFree Unexecuted instantiation: functionMgt.c:privTblPoliciesFree Unexecuted instantiation: tudf.c:privTblPoliciesFree Unexecuted instantiation: builtins.c:privTblPoliciesFree Unexecuted instantiation: builtinsimpl.c:privTblPoliciesFree Unexecuted instantiation: thistogram.c:privTblPoliciesFree Unexecuted instantiation: tpercentile.c:privTblPoliciesFree Unexecuted instantiation: tavgfunction.c:privTblPoliciesFree Unexecuted instantiation: tminmax.c:privTblPoliciesFree Unexecuted instantiation: tminmaxavx.c:privTblPoliciesFree Unexecuted instantiation: filter.c:privTblPoliciesFree Unexecuted instantiation: scalar.c:privTblPoliciesFree Unexecuted instantiation: sclfunc.c:privTblPoliciesFree Unexecuted instantiation: sclvector.c:privTblPoliciesFree Unexecuted instantiation: nodesCloneFuncs.c:privTblPoliciesFree Unexecuted instantiation: nodesCodeFuncs.c:privTblPoliciesFree Unexecuted instantiation: nodesEqualFuncs.c:privTblPoliciesFree Unexecuted instantiation: nodesMatchFuncs.c:privTblPoliciesFree Unexecuted instantiation: nodesMsgFuncs.c:privTblPoliciesFree Unexecuted instantiation: nodesToSQLFuncs.c:privTblPoliciesFree Unexecuted instantiation: nodesTraverseFuncs.c:privTblPoliciesFree Unexecuted instantiation: nodesUtilFuncs.c:privTblPoliciesFree Unexecuted instantiation: queryUtil.c:privTblPoliciesFree Unexecuted instantiation: querymsg.c:privTblPoliciesFree Unexecuted instantiation: trans.c:privTblPoliciesFree Unexecuted instantiation: transCli.c:privTblPoliciesFree Unexecuted instantiation: transComm.c:privTblPoliciesFree Unexecuted instantiation: transSasl.c:privTblPoliciesFree Unexecuted instantiation: transSvr.c:privTblPoliciesFree Unexecuted instantiation: transTLS.c:privTblPoliciesFree Unexecuted instantiation: thttp.c:privTblPoliciesFree Unexecuted instantiation: geomFunc.c:privTblPoliciesFree Unexecuted instantiation: tconfig.c:privTblPoliciesFree Unexecuted instantiation: tdigest.c:privTblPoliciesFree Unexecuted instantiation: tlog.c:privTblPoliciesFree Unexecuted instantiation: tmempool.c:privTblPoliciesFree Unexecuted instantiation: mpDirect.c:privTblPoliciesFree Unexecuted instantiation: systable.c:privTblPoliciesFree Unexecuted instantiation: tdatablock.c:privTblPoliciesFree Unexecuted instantiation: tdataformat.c:privTblPoliciesFree Unexecuted instantiation: tglobal.c:privTblPoliciesFree Unexecuted instantiation: tmisce.c:privTblPoliciesFree Unexecuted instantiation: tname.c:privTblPoliciesFree Unexecuted instantiation: tpriv.c:privTblPoliciesFree Unexecuted instantiation: ttime.c:privTblPoliciesFree Unexecuted instantiation: tvariant.c:privTblPoliciesFree Unexecuted instantiation: streamMsg.c:privTblPoliciesFree Unexecuted instantiation: tmsg.c:privTblPoliciesFree Unexecuted instantiation: xnode.c:privTblPoliciesFree Unexecuted instantiation: tencrypt.c:privTblPoliciesFree Unexecuted instantiation: streamJson.c:privTblPoliciesFree |
427 | | |
428 | 0 | static FORCE_INLINE bool privDbKeyMatch(const char* key, const char* dbFName, int32_t len) { |
429 | 0 | const char* p = strchr(key, '.'); |
430 | 0 | if (p) ++p; |
431 | 0 | return p && strncmp(p, dbFName, len) == 0 && (p[len] == '.' || p[len] == '\0'); |
432 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privDbKeyMatch Unexecuted instantiation: parser.c:privDbKeyMatch Unexecuted instantiation: parTranslater.c:privDbKeyMatch Unexecuted instantiation: parUtil.c:privDbKeyMatch Unexecuted instantiation: parAstParser.c:privDbKeyMatch Unexecuted instantiation: parAuthenticator.c:privDbKeyMatch Unexecuted instantiation: parCalcConst.c:privDbKeyMatch Unexecuted instantiation: parInsertSql.c:privDbKeyMatch Unexecuted instantiation: parInsertUtil.c:privDbKeyMatch Unexecuted instantiation: taos_lemon_sql.tab.c:privDbKeyMatch Unexecuted instantiation: parAstCreater.c:privDbKeyMatch Unexecuted instantiation: parInsertSml.c:privDbKeyMatch Unexecuted instantiation: planner.c:privDbKeyMatch Unexecuted instantiation: planLogicCreater.c:privDbKeyMatch Unexecuted instantiation: planOptimizer.c:privDbKeyMatch Unexecuted instantiation: planPhysiCreater.c:privDbKeyMatch Unexecuted instantiation: planScaleOut.c:privDbKeyMatch Unexecuted instantiation: planSpliter.c:privDbKeyMatch Unexecuted instantiation: planUtil.c:privDbKeyMatch Unexecuted instantiation: planValidator.c:privDbKeyMatch Unexecuted instantiation: catalog.c:privDbKeyMatch Unexecuted instantiation: ctgAsync.c:privDbKeyMatch Unexecuted instantiation: ctgCache.c:privDbKeyMatch Unexecuted instantiation: ctgDbg.c:privDbKeyMatch Unexecuted instantiation: ctgRemote.c:privDbKeyMatch Unexecuted instantiation: ctgRent.c:privDbKeyMatch Unexecuted instantiation: ctgUtil.c:privDbKeyMatch Unexecuted instantiation: functionMgt.c:privDbKeyMatch Unexecuted instantiation: tudf.c:privDbKeyMatch Unexecuted instantiation: builtins.c:privDbKeyMatch Unexecuted instantiation: builtinsimpl.c:privDbKeyMatch Unexecuted instantiation: thistogram.c:privDbKeyMatch Unexecuted instantiation: tpercentile.c:privDbKeyMatch Unexecuted instantiation: tavgfunction.c:privDbKeyMatch Unexecuted instantiation: tminmax.c:privDbKeyMatch Unexecuted instantiation: tminmaxavx.c:privDbKeyMatch Unexecuted instantiation: filter.c:privDbKeyMatch Unexecuted instantiation: scalar.c:privDbKeyMatch Unexecuted instantiation: sclfunc.c:privDbKeyMatch Unexecuted instantiation: sclvector.c:privDbKeyMatch Unexecuted instantiation: nodesCloneFuncs.c:privDbKeyMatch Unexecuted instantiation: nodesCodeFuncs.c:privDbKeyMatch Unexecuted instantiation: nodesEqualFuncs.c:privDbKeyMatch Unexecuted instantiation: nodesMatchFuncs.c:privDbKeyMatch Unexecuted instantiation: nodesMsgFuncs.c:privDbKeyMatch Unexecuted instantiation: nodesToSQLFuncs.c:privDbKeyMatch Unexecuted instantiation: nodesTraverseFuncs.c:privDbKeyMatch Unexecuted instantiation: nodesUtilFuncs.c:privDbKeyMatch Unexecuted instantiation: queryUtil.c:privDbKeyMatch Unexecuted instantiation: querymsg.c:privDbKeyMatch Unexecuted instantiation: trans.c:privDbKeyMatch Unexecuted instantiation: transCli.c:privDbKeyMatch Unexecuted instantiation: transComm.c:privDbKeyMatch Unexecuted instantiation: transSasl.c:privDbKeyMatch Unexecuted instantiation: transSvr.c:privDbKeyMatch Unexecuted instantiation: transTLS.c:privDbKeyMatch Unexecuted instantiation: thttp.c:privDbKeyMatch Unexecuted instantiation: geomFunc.c:privDbKeyMatch Unexecuted instantiation: tconfig.c:privDbKeyMatch Unexecuted instantiation: tdigest.c:privDbKeyMatch Unexecuted instantiation: tlog.c:privDbKeyMatch Unexecuted instantiation: tmempool.c:privDbKeyMatch Unexecuted instantiation: mpDirect.c:privDbKeyMatch Unexecuted instantiation: systable.c:privDbKeyMatch Unexecuted instantiation: tdatablock.c:privDbKeyMatch Unexecuted instantiation: tdataformat.c:privDbKeyMatch Unexecuted instantiation: tglobal.c:privDbKeyMatch Unexecuted instantiation: tmisce.c:privDbKeyMatch Unexecuted instantiation: tname.c:privDbKeyMatch Unexecuted instantiation: tpriv.c:privDbKeyMatch Unexecuted instantiation: ttime.c:privDbKeyMatch Unexecuted instantiation: tvariant.c:privDbKeyMatch Unexecuted instantiation: streamMsg.c:privDbKeyMatch Unexecuted instantiation: tmsg.c:privDbKeyMatch Unexecuted instantiation: xnode.c:privDbKeyMatch Unexecuted instantiation: tencrypt.c:privDbKeyMatch Unexecuted instantiation: streamJson.c:privDbKeyMatch |
433 | | |
434 | 0 | static FORCE_INLINE int32_t privPopCnt(SPrivSet* privSet) { |
435 | 0 | int32_t count = 0; |
436 | 0 | for (int32_t i = 0; i < PRIV_GROUP_CNT; ++i) { |
437 | 0 | uint64_t chunk = privSet->set[i]; |
438 | 0 | while (chunk != 0) { |
439 | 0 | chunk &= (chunk - 1); |
440 | 0 | ++count; |
441 | 0 | } |
442 | 0 | } |
443 | 0 | return count; |
444 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privPopCnt Unexecuted instantiation: parser.c:privPopCnt Unexecuted instantiation: parTranslater.c:privPopCnt Unexecuted instantiation: parUtil.c:privPopCnt Unexecuted instantiation: parAstParser.c:privPopCnt Unexecuted instantiation: parAuthenticator.c:privPopCnt Unexecuted instantiation: parCalcConst.c:privPopCnt Unexecuted instantiation: parInsertSql.c:privPopCnt Unexecuted instantiation: parInsertUtil.c:privPopCnt Unexecuted instantiation: taos_lemon_sql.tab.c:privPopCnt Unexecuted instantiation: parAstCreater.c:privPopCnt Unexecuted instantiation: parInsertSml.c:privPopCnt Unexecuted instantiation: planner.c:privPopCnt Unexecuted instantiation: planLogicCreater.c:privPopCnt Unexecuted instantiation: planOptimizer.c:privPopCnt Unexecuted instantiation: planPhysiCreater.c:privPopCnt Unexecuted instantiation: planScaleOut.c:privPopCnt Unexecuted instantiation: planSpliter.c:privPopCnt Unexecuted instantiation: planUtil.c:privPopCnt Unexecuted instantiation: planValidator.c:privPopCnt Unexecuted instantiation: catalog.c:privPopCnt Unexecuted instantiation: ctgAsync.c:privPopCnt Unexecuted instantiation: ctgCache.c:privPopCnt Unexecuted instantiation: ctgDbg.c:privPopCnt Unexecuted instantiation: ctgRemote.c:privPopCnt Unexecuted instantiation: ctgRent.c:privPopCnt Unexecuted instantiation: ctgUtil.c:privPopCnt Unexecuted instantiation: functionMgt.c:privPopCnt Unexecuted instantiation: tudf.c:privPopCnt Unexecuted instantiation: builtins.c:privPopCnt Unexecuted instantiation: builtinsimpl.c:privPopCnt Unexecuted instantiation: thistogram.c:privPopCnt Unexecuted instantiation: tpercentile.c:privPopCnt Unexecuted instantiation: tavgfunction.c:privPopCnt Unexecuted instantiation: tminmax.c:privPopCnt Unexecuted instantiation: tminmaxavx.c:privPopCnt Unexecuted instantiation: filter.c:privPopCnt Unexecuted instantiation: scalar.c:privPopCnt Unexecuted instantiation: sclfunc.c:privPopCnt Unexecuted instantiation: sclvector.c:privPopCnt Unexecuted instantiation: nodesCloneFuncs.c:privPopCnt Unexecuted instantiation: nodesCodeFuncs.c:privPopCnt Unexecuted instantiation: nodesEqualFuncs.c:privPopCnt Unexecuted instantiation: nodesMatchFuncs.c:privPopCnt Unexecuted instantiation: nodesMsgFuncs.c:privPopCnt Unexecuted instantiation: nodesToSQLFuncs.c:privPopCnt Unexecuted instantiation: nodesTraverseFuncs.c:privPopCnt Unexecuted instantiation: nodesUtilFuncs.c:privPopCnt Unexecuted instantiation: queryUtil.c:privPopCnt Unexecuted instantiation: querymsg.c:privPopCnt Unexecuted instantiation: trans.c:privPopCnt Unexecuted instantiation: transCli.c:privPopCnt Unexecuted instantiation: transComm.c:privPopCnt Unexecuted instantiation: transSasl.c:privPopCnt Unexecuted instantiation: transSvr.c:privPopCnt Unexecuted instantiation: transTLS.c:privPopCnt Unexecuted instantiation: thttp.c:privPopCnt Unexecuted instantiation: geomFunc.c:privPopCnt Unexecuted instantiation: tconfig.c:privPopCnt Unexecuted instantiation: tdigest.c:privPopCnt Unexecuted instantiation: tlog.c:privPopCnt Unexecuted instantiation: tmempool.c:privPopCnt Unexecuted instantiation: mpDirect.c:privPopCnt Unexecuted instantiation: systable.c:privPopCnt Unexecuted instantiation: tdatablock.c:privPopCnt Unexecuted instantiation: tdataformat.c:privPopCnt Unexecuted instantiation: tglobal.c:privPopCnt Unexecuted instantiation: tmisce.c:privPopCnt Unexecuted instantiation: tname.c:privPopCnt Unexecuted instantiation: tpriv.c:privPopCnt Unexecuted instantiation: ttime.c:privPopCnt Unexecuted instantiation: tvariant.c:privPopCnt Unexecuted instantiation: streamMsg.c:privPopCnt Unexecuted instantiation: tmsg.c:privPopCnt Unexecuted instantiation: xnode.c:privPopCnt Unexecuted instantiation: tencrypt.c:privPopCnt Unexecuted instantiation: streamJson.c:privPopCnt |
445 | | |
446 | 0 | static FORCE_INLINE int32_t privTblPrivCnt(SHashObj* privTbls) { |
447 | 0 | int32_t nPrivs = 0; |
448 | 0 | void* pIter = NULL; |
449 | 0 | while ((pIter = taosHashIterate(privTbls, pIter))) { |
450 | 0 | nPrivs += taosArrayGetSize(((SPrivTblPolicies*)pIter)->policy); |
451 | 0 | } |
452 | 0 | return nPrivs; |
453 | 0 | } Unexecuted instantiation: sql-fuzzer.c:privTblPrivCnt Unexecuted instantiation: parser.c:privTblPrivCnt Unexecuted instantiation: parTranslater.c:privTblPrivCnt Unexecuted instantiation: parUtil.c:privTblPrivCnt Unexecuted instantiation: parAstParser.c:privTblPrivCnt Unexecuted instantiation: parAuthenticator.c:privTblPrivCnt Unexecuted instantiation: parCalcConst.c:privTblPrivCnt Unexecuted instantiation: parInsertSql.c:privTblPrivCnt Unexecuted instantiation: parInsertUtil.c:privTblPrivCnt Unexecuted instantiation: taos_lemon_sql.tab.c:privTblPrivCnt Unexecuted instantiation: parAstCreater.c:privTblPrivCnt Unexecuted instantiation: parInsertSml.c:privTblPrivCnt Unexecuted instantiation: planner.c:privTblPrivCnt Unexecuted instantiation: planLogicCreater.c:privTblPrivCnt Unexecuted instantiation: planOptimizer.c:privTblPrivCnt Unexecuted instantiation: planPhysiCreater.c:privTblPrivCnt Unexecuted instantiation: planScaleOut.c:privTblPrivCnt Unexecuted instantiation: planSpliter.c:privTblPrivCnt Unexecuted instantiation: planUtil.c:privTblPrivCnt Unexecuted instantiation: planValidator.c:privTblPrivCnt Unexecuted instantiation: catalog.c:privTblPrivCnt Unexecuted instantiation: ctgAsync.c:privTblPrivCnt Unexecuted instantiation: ctgCache.c:privTblPrivCnt Unexecuted instantiation: ctgDbg.c:privTblPrivCnt Unexecuted instantiation: ctgRemote.c:privTblPrivCnt Unexecuted instantiation: ctgRent.c:privTblPrivCnt Unexecuted instantiation: ctgUtil.c:privTblPrivCnt Unexecuted instantiation: functionMgt.c:privTblPrivCnt Unexecuted instantiation: tudf.c:privTblPrivCnt Unexecuted instantiation: builtins.c:privTblPrivCnt Unexecuted instantiation: builtinsimpl.c:privTblPrivCnt Unexecuted instantiation: thistogram.c:privTblPrivCnt Unexecuted instantiation: tpercentile.c:privTblPrivCnt Unexecuted instantiation: tavgfunction.c:privTblPrivCnt Unexecuted instantiation: tminmax.c:privTblPrivCnt Unexecuted instantiation: tminmaxavx.c:privTblPrivCnt Unexecuted instantiation: filter.c:privTblPrivCnt Unexecuted instantiation: scalar.c:privTblPrivCnt Unexecuted instantiation: sclfunc.c:privTblPrivCnt Unexecuted instantiation: sclvector.c:privTblPrivCnt Unexecuted instantiation: nodesCloneFuncs.c:privTblPrivCnt Unexecuted instantiation: nodesCodeFuncs.c:privTblPrivCnt Unexecuted instantiation: nodesEqualFuncs.c:privTblPrivCnt Unexecuted instantiation: nodesMatchFuncs.c:privTblPrivCnt Unexecuted instantiation: nodesMsgFuncs.c:privTblPrivCnt Unexecuted instantiation: nodesToSQLFuncs.c:privTblPrivCnt Unexecuted instantiation: nodesTraverseFuncs.c:privTblPrivCnt Unexecuted instantiation: nodesUtilFuncs.c:privTblPrivCnt Unexecuted instantiation: queryUtil.c:privTblPrivCnt Unexecuted instantiation: querymsg.c:privTblPrivCnt Unexecuted instantiation: trans.c:privTblPrivCnt Unexecuted instantiation: transCli.c:privTblPrivCnt Unexecuted instantiation: transComm.c:privTblPrivCnt Unexecuted instantiation: transSasl.c:privTblPrivCnt Unexecuted instantiation: transSvr.c:privTblPrivCnt Unexecuted instantiation: transTLS.c:privTblPrivCnt Unexecuted instantiation: thttp.c:privTblPrivCnt Unexecuted instantiation: geomFunc.c:privTblPrivCnt Unexecuted instantiation: tconfig.c:privTblPrivCnt Unexecuted instantiation: tdigest.c:privTblPrivCnt Unexecuted instantiation: tlog.c:privTblPrivCnt Unexecuted instantiation: tmempool.c:privTblPrivCnt Unexecuted instantiation: mpDirect.c:privTblPrivCnt Unexecuted instantiation: systable.c:privTblPrivCnt Unexecuted instantiation: tdatablock.c:privTblPrivCnt Unexecuted instantiation: tdataformat.c:privTblPrivCnt Unexecuted instantiation: tglobal.c:privTblPrivCnt Unexecuted instantiation: tmisce.c:privTblPrivCnt Unexecuted instantiation: tname.c:privTblPrivCnt Unexecuted instantiation: tpriv.c:privTblPrivCnt Unexecuted instantiation: ttime.c:privTblPrivCnt Unexecuted instantiation: tvariant.c:privTblPrivCnt Unexecuted instantiation: streamMsg.c:privTblPrivCnt Unexecuted instantiation: tmsg.c:privTblPrivCnt Unexecuted instantiation: xnode.c:privTblPrivCnt Unexecuted instantiation: tencrypt.c:privTblPrivCnt Unexecuted instantiation: streamJson.c:privTblPrivCnt |
454 | | |
455 | | int32_t privCheckConflicts(const SPrivSet* privSet, EPrivCategory* pCategory, EPrivObjType* pObjType, |
456 | | uint8_t* pObjLevel, EPrivType* conflict0, EPrivType* conflict1); |
457 | | int32_t privExpandAll(SPrivSet* privSet, EPrivObjType pObjType, uint8_t pObjLevel); |
458 | | int32_t privExpandRw(SPrivSet* privSet, EPrivObjType pObjType, uint8_t pObjLevel); |
459 | | int32_t privUpgradeRwDb(SHashObj* objPrivs, const char* dbFName, const char* tbName, uint8_t rwAttr); |
460 | | void privIterInit(SPrivIter* pIter, SPrivSet* privSet); |
461 | | bool privIterNext(SPrivIter* iter, SPrivInfo** ppPrivInfo); |
462 | | void privInfoIterInit(SPrivInfoIter* pIter); |
463 | | bool privInfoIterNext(SPrivInfoIter* iter, SPrivInfo** ppPrivInfo); |
464 | | |
465 | | int32_t privTblPolicyCopy(SPrivTblPolicy* dest, SPrivTblPolicy* src); |
466 | | int32_t privTblPoliciesAdd(SPrivTblPolicies* dest, SPrivTblPolicies* src, bool deepCopy, bool setUpdateTimeMax); |
467 | | int32_t privTblPoliciesMerge(SPrivTblPolicies* dest, SPrivTblPolicies* src, bool updateWithLatest); |
468 | | |
469 | | int32_t privObjKeyF(const SPrivInfo* pPrivInfo, const char* fname, const char* tb, char* buf, int32_t bufLen); |
470 | | int32_t privObjKey(const SPrivInfo* pPrivInfo, int32_t acctId, const char* name, const char* tb, char* buf, |
471 | | int32_t bufLen); |
472 | | int32_t privObjKeyParse(const char* str, EPrivObjType* pObjType, char* db, int32_t dbLen, char* tb, int32_t tbLen, |
473 | | bool fullDb); |
474 | | |
475 | | void privAddSetByObjType(SPrivSet* fromSet, SPrivSet* toSet, uint8_t objType); |
476 | | const char* privObjGetName(EPrivObjType objType); |
477 | | int32_t privObjGetLevel(EPrivObjType objType); |
478 | | const char* privInfoGetName(EPrivType privType); |
479 | | const SPrivInfo* privInfoGet(EPrivType privType); |
480 | | EPrivObjType privDeduceObjType(SPrivSet* privSet); |
481 | | int32_t getSysRoleType(const char* roleName); |
482 | | bool isPrivInheritName(const char* name); |
483 | | bool privHasObjPrivilege(SHashObj* privs, int32_t acctId, const char* objName, const char* tbName, |
484 | | const SPrivInfo* privInfo, bool recursive); |
485 | | SPrivTblPolicy* privGetConstraintTblPrivileges(SHashObj* privs, int32_t acctId, const char* objName, const char* tbName, |
486 | | const SPrivInfo* privInfo); |
487 | | |
488 | | #ifdef __cplusplus |
489 | | } |
490 | | #endif |
491 | | |
492 | | #endif /*_TD_UTIL_PRIV_H_*/ |