1 /*-------------------------------------------------------------------------
2  *
3  * aclchk_internal.h
4  *
5  * Portions Copyright (c) 1996-2017, 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 ACL_OBJECT_RELATION.
30  */
31 typedef struct
32 {
33 	bool		is_grant;
34 	GrantObjectType 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