1 | /*------------------------------------------------------------------------- |
2 | * |
3 | * aclchk_internal.h |
4 | * |
5 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
6 | * Portions Copyright (c) 1994, Regents of the University of California |
7 | * |
8 | * src/include/utils/aclchk_internal.h |
9 | * |
10 | *------------------------------------------------------------------------- |
11 | */ |
12 | #ifndef ACLCHK_INTERNAL_H |
13 | #define ACLCHK_INTERNAL_H |
14 | |
15 | #include "nodes/parsenodes.h" |
16 | #include "nodes/pg_list.h" |
17 | |
18 | /* |
19 | * The information about one Grant/Revoke statement, in internal format: object |
20 | * and grantees names have been turned into Oids, the privilege list is an |
21 | * AclMode bitmask. If 'privileges' is ACL_NO_RIGHTS (the 0 value) and |
22 | * all_privs is true, 'privileges' will be internally set to the right kind of |
23 | * ACL_ALL_RIGHTS_*, depending on the object type (NB - this will modify the |
24 | * InternalGrant struct!) |
25 | * |
26 | * Note: 'all_privs' and 'privileges' represent object-level privileges only. |
27 | * There might also be column-level privilege specifications, which are |
28 | * represented in col_privs (this is a list of untransformed AccessPriv nodes). |
29 | * Column privileges are only valid for objtype OBJECT_TABLE. |
30 | */ |
31 | typedef struct |
32 | { |
33 | bool is_grant; |
34 | ObjectType objtype; |
35 | List *objects; |
36 | bool all_privs; |
37 | AclMode privileges; |
38 | List *col_privs; |
39 | List *grantees; |
40 | bool grant_option; |
41 | DropBehavior behavior; |
42 | } InternalGrant; |
43 | |
44 | |
45 | #endif /* ACLCHK_INTERNAL_H */ |
46 | |