1 /*------------------------------------------------------------------------- 2 * 3 * aclchk_internal.h 4 * 5 * Portions Copyright (c) 1996-2021, 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