@@ -26,58 +26,71 @@ GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
26
26
ON { [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
27
27
| ALL TABLES IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
28
28
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
29
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
29
30
30
31
GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( <replaceable class="parameter">column_name</replaceable> [, ...] )
31
32
[, ...] | ALL [ PRIVILEGES ] ( <replaceable class="parameter">column_name</replaceable> [, ...] ) }
32
33
ON [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
33
34
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
35
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
34
36
35
37
GRANT { { USAGE | SELECT | UPDATE }
36
38
[, ...] | ALL [ PRIVILEGES ] }
37
39
ON { SEQUENCE <replaceable class="parameter">sequence_name</replaceable> [, ...]
38
40
| ALL SEQUENCES IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
39
41
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
42
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
40
43
41
44
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
42
45
ON DATABASE <replaceable>database_name</replaceable> [, ...]
43
46
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
47
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
44
48
45
49
GRANT { USAGE | ALL [ PRIVILEGES ] }
46
50
ON DOMAIN <replaceable>domain_name</replaceable> [, ...]
47
51
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
52
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
48
53
49
54
GRANT { USAGE | ALL [ PRIVILEGES ] }
50
55
ON FOREIGN DATA WRAPPER <replaceable>fdw_name</replaceable> [, ...]
51
56
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
57
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
52
58
53
59
GRANT { USAGE | ALL [ PRIVILEGES ] }
54
60
ON FOREIGN SERVER <replaceable>server_name</replaceable> [, ...]
55
61
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
62
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
56
63
57
64
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
58
65
ON { { FUNCTION | PROCEDURE | ROUTINE } <replaceable>routine_name</replaceable> [ ( [ [ <replaceable class="parameter">argmode</replaceable> ] [ <replaceable class="parameter">arg_name</replaceable> ] <replaceable class="parameter">arg_type</replaceable> [, ...] ] ) ] [, ...]
59
66
| ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
60
67
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
68
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
61
69
62
70
GRANT { USAGE | ALL [ PRIVILEGES ] }
63
71
ON LANGUAGE <replaceable>lang_name</replaceable> [, ...]
64
72
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
73
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
65
74
66
75
GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
67
76
ON LARGE OBJECT <replaceable class="parameter">loid</replaceable> [, ...]
68
77
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
78
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
69
79
70
80
GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
71
81
ON SCHEMA <replaceable>schema_name</replaceable> [, ...]
72
82
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
83
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
73
84
74
85
GRANT { CREATE | ALL [ PRIVILEGES ] }
75
86
ON TABLESPACE <replaceable>tablespace_name</replaceable> [, ...]
76
87
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
88
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
77
89
78
90
GRANT { USAGE | ALL [ PRIVILEGES ] }
79
91
ON TYPE <replaceable>type_name</replaceable> [, ...]
80
92
TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
93
+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
81
94
82
95
GRANT <replaceable class="parameter">role_name</replaceable> [, ...] TO <replaceable class="parameter">role_specification</replaceable> [, ...]
83
96
[ WITH ADMIN OPTION ]
@@ -133,6 +146,12 @@ GRANT <replaceable class="parameter">role_name</replaceable> [, ...] TO <replace
133
146
to <literal>PUBLIC</literal>.
134
147
</para>
135
148
149
+ <para>
150
+ If <literal>GRANTED BY</literal> is specified, the specified grantor must
151
+ be the current user. This clause is currently present in this form only
152
+ for SQL compatibility.
153
+ </para>
154
+
136
155
<para>
137
156
There is no need to grant privileges to the owner of an object
138
157
(usually the user that created it),
@@ -410,9 +429,9 @@ GRANT admins TO joe;
410
429
411
430
<para>
412
431
The SQL standard allows the <literal>GRANTED BY</literal> option to
413
- be used in all forms of <command>GRANT</command>. PostgreSQL only
414
- supports it when granting role membership, and even then only superusers
415
- may use it in nontrivial ways .
432
+ specify only <literal>CURRENT_USER</literal> or
433
+ <literal>CURRENT_ROLE</literal>. The other variants are PostgreSQL
434
+ extensions .
416
435
</para>
417
436
418
437
<para>
0 commit comments