| 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 | |