1 /*-------------------------------------------------------------------------
2  *
3  * pg_default_acl.h
4  *	  definition of default ACLs for new objects.
5  *
6  *
7  * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
8  * Portions Copyright (c) 1994, Regents of the University of California
9  *
10  * src/include/catalog/pg_default_acl.h
11  *
12  * NOTES
13  *	  the genbki.pl script reads this file and generates .bki
14  *	  information from the DATA() statements.
15  *
16  *-------------------------------------------------------------------------
17  */
18 #ifndef PG_DEFAULT_ACL_H
19 #define PG_DEFAULT_ACL_H
20 
21 #include "catalog/genbki.h"
22 
23 /* ----------------
24  *		pg_default_acl definition.  cpp turns this into
25  *		typedef struct FormData_pg_default_acl
26  * ----------------
27  */
28 #define DefaultAclRelationId	826
29 
30 CATALOG(pg_default_acl,826)
31 {
32 	Oid			defaclrole;		/* OID of role owning this ACL */
33 	Oid			defaclnamespace;	/* OID of namespace, or 0 for all */
34 	char		defaclobjtype;	/* see DEFACLOBJ_xxx constants below */
35 
36 #ifdef CATALOG_VARLEN			/* variable-length fields start here */
37 	aclitem		defaclacl[1];	/* permissions to add at CREATE time */
38 #endif
39 } FormData_pg_default_acl;
40 
41 /* ----------------
42  *		Form_pg_default_acl corresponds to a pointer to a tuple with
43  *		the format of pg_default_acl relation.
44  * ----------------
45  */
46 typedef FormData_pg_default_acl *Form_pg_default_acl;
47 
48 /* ----------------
49  *		compiler constants for pg_default_acl
50  * ----------------
51  */
52 
53 #define Natts_pg_default_acl					4
54 #define Anum_pg_default_acl_defaclrole			1
55 #define Anum_pg_default_acl_defaclnamespace		2
56 #define Anum_pg_default_acl_defaclobjtype		3
57 #define Anum_pg_default_acl_defaclacl			4
58 
59 /* ----------------
60  *		pg_default_acl has no initial contents
61  * ----------------
62  */
63 
64 /*
65  * Types of objects for which the user is allowed to specify default
66  * permissions through pg_default_acl.  These codes are used in the
67  * defaclobjtype column.
68  */
69 #define DEFACLOBJ_RELATION		'r' /* table, view */
70 #define DEFACLOBJ_SEQUENCE		'S' /* sequence */
71 #define DEFACLOBJ_FUNCTION		'f' /* function */
72 #define DEFACLOBJ_TYPE			'T' /* type */
73 #define DEFACLOBJ_NAMESPACE		'n' /* namespace */
74 
75 #endif							/* PG_DEFAULT_ACL_H */
76