@@ -26,58 +26,71 @@ GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
2626 ON { [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
2727 | ALL TABLES IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
2828 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
29+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
2930
3031GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( <replaceable class="parameter">column_name</replaceable> [, ...] )
3132 [, ...] | ALL [ PRIVILEGES ] ( <replaceable class="parameter">column_name</replaceable> [, ...] ) }
3233 ON [ TABLE ] <replaceable class="parameter">table_name</replaceable> [, ...]
3334 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
35+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
3436
3537GRANT { { USAGE | SELECT | UPDATE }
3638 [, ...] | ALL [ PRIVILEGES ] }
3739 ON { SEQUENCE <replaceable class="parameter">sequence_name</replaceable> [, ...]
3840 | ALL SEQUENCES IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
3941 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
42+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
4043
4144GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
4245 ON DATABASE <replaceable>database_name</replaceable> [, ...]
4346 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
47+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
4448
4549GRANT { USAGE | ALL [ PRIVILEGES ] }
4650 ON DOMAIN <replaceable>domain_name</replaceable> [, ...]
4751 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
52+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
4853
4954GRANT { USAGE | ALL [ PRIVILEGES ] }
5055 ON FOREIGN DATA WRAPPER <replaceable>fdw_name</replaceable> [, ...]
5156 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
57+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
5258
5359GRANT { USAGE | ALL [ PRIVILEGES ] }
5460 ON FOREIGN SERVER <replaceable>server_name</replaceable> [, ...]
5561 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
62+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
5663
5764GRANT { EXECUTE | ALL [ PRIVILEGES ] }
5865 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> [, ...] ] ) ] [, ...]
5966 | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA <replaceable class="parameter">schema_name</replaceable> [, ...] }
6067 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
68+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
6169
6270GRANT { USAGE | ALL [ PRIVILEGES ] }
6371 ON LANGUAGE <replaceable>lang_name</replaceable> [, ...]
6472 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
73+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
6574
6675GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
6776 ON LARGE OBJECT <replaceable class="parameter">loid</replaceable> [, ...]
6877 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
78+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
6979
7080GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
7181 ON SCHEMA <replaceable>schema_name</replaceable> [, ...]
7282 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
83+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
7384
7485GRANT { CREATE | ALL [ PRIVILEGES ] }
7586 ON TABLESPACE <replaceable>tablespace_name</replaceable> [, ...]
7687 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
88+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
7789
7890GRANT { USAGE | ALL [ PRIVILEGES ] }
7991 ON TYPE <replaceable>type_name</replaceable> [, ...]
8092 TO <replaceable class="parameter">role_specification</replaceable> [, ...] [ WITH GRANT OPTION ]
93+ [ GRANTED BY <replaceable class="parameter">role_specification</replaceable> ]
8194
8295GRANT <replaceable class="parameter">role_name</replaceable> [, ...] TO <replaceable class="parameter">role_specification</replaceable> [, ...]
8396 [ WITH ADMIN OPTION ]
@@ -133,6 +146,12 @@ GRANT <replaceable class="parameter">role_name</replaceable> [, ...] TO <replace
133146 to <literal>PUBLIC</literal>.
134147 </para>
135148
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+
136155 <para>
137156 There is no need to grant privileges to the owner of an object
138157 (usually the user that created it),
@@ -410,9 +429,9 @@ GRANT admins TO joe;
410429
411430 <para>
412431 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 .
416435 </para>
417436
418437 <para>
0 commit comments