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 */
31typedef 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