On 2020-06-24 23:08, Alvaro Herrera wrote:
On 2020-Jun-24, Peter Eisentraut wrote:

I was checking some loose ends in SQL conformance, when I noticed: We
support GRANT role ... GRANTED BY CURRENT_USER, but we don't support
CURRENT_ROLE in that place, even though in PostgreSQL they are equivalent.
Here is a trivial patch to add that.

Hmm, since this adds to RoleSpec, this change makes every place that
uses that production also take CURRENT_ROLE, so we'd need to document in
all those places.  For example, alter_role.sgml, create_schema.sgml,
etc.

Good point. Here is an updated patch that updates all the documentation places where CURRENT_USER is mentioned.

--
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From 3dea85cf0391828e02f901ab808dad31422ee30b Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Wed, 24 Jun 2020 08:21:48 +0200
Subject: [PATCH v2] Allow CURRENT_ROLE where CURRENT_USER is accepted

In the particular case of GRANTED BY, this is specified in the SQL
standard.  Since in PostgreSQL, CURRENT_ROLE is equivalent to
CURRENT_USER, and CURRENT_USER is already supported here, adding
CURRENT_ROLE is trivial.  The other cases are PostgreSQL extensions,
but for the same reason it also makes sense there.
---
 doc/src/sgml/ref/alter_aggregate.sgml            | 2 +-
 doc/src/sgml/ref/alter_collation.sgml            | 2 +-
 doc/src/sgml/ref/alter_conversion.sgml           | 2 +-
 doc/src/sgml/ref/alter_database.sgml             | 2 +-
 doc/src/sgml/ref/alter_domain.sgml               | 2 +-
 doc/src/sgml/ref/alter_event_trigger.sgml        | 2 +-
 doc/src/sgml/ref/alter_foreign_data_wrapper.sgml | 2 +-
 doc/src/sgml/ref/alter_foreign_table.sgml        | 2 +-
 doc/src/sgml/ref/alter_function.sgml             | 2 +-
 doc/src/sgml/ref/alter_group.sgml                | 1 +
 doc/src/sgml/ref/alter_language.sgml             | 2 +-
 doc/src/sgml/ref/alter_large_object.sgml         | 2 +-
 doc/src/sgml/ref/alter_materialized_view.sgml    | 2 +-
 doc/src/sgml/ref/alter_opclass.sgml              | 2 +-
 doc/src/sgml/ref/alter_operator.sgml             | 2 +-
 doc/src/sgml/ref/alter_opfamily.sgml             | 2 +-
 doc/src/sgml/ref/alter_policy.sgml               | 2 +-
 doc/src/sgml/ref/alter_procedure.sgml            | 2 +-
 doc/src/sgml/ref/alter_publication.sgml          | 2 +-
 doc/src/sgml/ref/alter_role.sgml                 | 2 ++
 doc/src/sgml/ref/alter_routine.sgml              | 2 +-
 doc/src/sgml/ref/alter_schema.sgml               | 2 +-
 doc/src/sgml/ref/alter_sequence.sgml             | 2 +-
 doc/src/sgml/ref/alter_server.sgml               | 2 +-
 doc/src/sgml/ref/alter_statistics.sgml           | 2 +-
 doc/src/sgml/ref/alter_subscription.sgml         | 2 +-
 doc/src/sgml/ref/alter_table.sgml                | 2 +-
 doc/src/sgml/ref/alter_tablespace.sgml           | 2 +-
 doc/src/sgml/ref/alter_tsconfig.sgml             | 2 +-
 doc/src/sgml/ref/alter_tsdictionary.sgml         | 2 +-
 doc/src/sgml/ref/alter_type.sgml                 | 2 +-
 doc/src/sgml/ref/alter_user.sgml                 | 1 +
 doc/src/sgml/ref/alter_user_mapping.sgml         | 4 ++--
 doc/src/sgml/ref/alter_view.sgml                 | 2 +-
 doc/src/sgml/ref/create_policy.sgml              | 2 +-
 doc/src/sgml/ref/create_schema.sgml              | 1 +
 doc/src/sgml/ref/create_tablespace.sgml          | 2 +-
 doc/src/sgml/ref/create_user_mapping.sgml        | 4 ++--
 doc/src/sgml/ref/drop_owned.sgml                 | 2 +-
 doc/src/sgml/ref/drop_user_mapping.sgml          | 4 ++--
 doc/src/sgml/ref/grant.sgml                      | 1 +
 doc/src/sgml/ref/reassign_owned.sgml             | 4 ++--
 doc/src/sgml/ref/revoke.sgml                     | 1 +
 src/backend/parser/gram.y                        | 4 ++++
 44 files changed, 52 insertions(+), 41 deletions(-)

diff --git a/doc/src/sgml/ref/alter_aggregate.sgml 
b/doc/src/sgml/ref/alter_aggregate.sgml
index 2ad3e0440b..95934a100f 100644
--- a/doc/src/sgml/ref/alter_aggregate.sgml
+++ b/doc/src/sgml/ref/alter_aggregate.sgml
@@ -23,7 +23,7 @@
 <synopsis>
 ALTER AGGREGATE <replaceable>name</replaceable> ( 
<replaceable>aggregate_signature</replaceable> ) RENAME TO 
<replaceable>new_name</replaceable>
 ALTER AGGREGATE <replaceable>name</replaceable> ( 
<replaceable>aggregate_signature</replaceable> )
-                OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER 
| SESSION_USER }
+                OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE 
| CURRENT_USER | SESSION_USER }
 ALTER AGGREGATE <replaceable>name</replaceable> ( 
<replaceable>aggregate_signature</replaceable> ) SET SCHEMA 
<replaceable>new_schema</replaceable>
 
 <phrase>where <replaceable>aggregate_signature</replaceable> is:</phrase>
diff --git a/doc/src/sgml/ref/alter_collation.sgml 
b/doc/src/sgml/ref/alter_collation.sgml
index bee6f0dd3c..af9ff2867b 100644
--- a/doc/src/sgml/ref/alter_collation.sgml
+++ b/doc/src/sgml/ref/alter_collation.sgml
@@ -24,7 +24,7 @@
 ALTER COLLATION <replaceable>name</replaceable> REFRESH VERSION
 
 ALTER COLLATION <replaceable>name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
-ALTER COLLATION <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER COLLATION <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER COLLATION <replaceable>name</replaceable> SET SCHEMA 
<replaceable>new_schema</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_conversion.sgml 
b/doc/src/sgml/ref/alter_conversion.sgml
index c42bd8b3e4..a128f20f3e 100644
--- a/doc/src/sgml/ref/alter_conversion.sgml
+++ b/doc/src/sgml/ref/alter_conversion.sgml
@@ -22,7 +22,7 @@
  <refsynopsisdiv>
 <synopsis>
 ALTER CONVERSION <replaceable>name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
-ALTER CONVERSION <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER CONVERSION <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER CONVERSION <replaceable>name</replaceable> SET SCHEMA 
<replaceable>new_schema</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_database.sgml 
b/doc/src/sgml/ref/alter_database.sgml
index 7db878cf53..81e37536a3 100644
--- a/doc/src/sgml/ref/alter_database.sgml
+++ b/doc/src/sgml/ref/alter_database.sgml
@@ -31,7 +31,7 @@
 
 ALTER DATABASE <replaceable class="parameter">name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
 
-ALTER DATABASE <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER DATABASE <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 
 ALTER DATABASE <replaceable class="parameter">name</replaceable> SET 
TABLESPACE <replaceable class="parameter">new_tablespace</replaceable>
 
diff --git a/doc/src/sgml/ref/alter_domain.sgml 
b/doc/src/sgml/ref/alter_domain.sgml
index 8201cbb65f..afa42b4926 100644
--- a/doc/src/sgml/ref/alter_domain.sgml
+++ b/doc/src/sgml/ref/alter_domain.sgml
@@ -36,7 +36,7 @@
 ALTER DOMAIN <replaceable class="parameter">name</replaceable>
     VALIDATE CONSTRAINT <replaceable 
class="parameter">constraint_name</replaceable>
 ALTER DOMAIN <replaceable class="parameter">name</replaceable>
-    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_USER | SESSION_USER }
+    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER DOMAIN <replaceable class="parameter">name</replaceable>
     RENAME TO <replaceable class="parameter">new_name</replaceable>
 ALTER DOMAIN <replaceable class="parameter">name</replaceable>
diff --git a/doc/src/sgml/ref/alter_event_trigger.sgml 
b/doc/src/sgml/ref/alter_event_trigger.sgml
index 61919f7845..ef5253bf37 100644
--- a/doc/src/sgml/ref/alter_event_trigger.sgml
+++ b/doc/src/sgml/ref/alter_event_trigger.sgml
@@ -23,7 +23,7 @@
 <synopsis>
 ALTER EVENT TRIGGER <replaceable class="parameter">name</replaceable> DISABLE
 ALTER EVENT TRIGGER <replaceable class="parameter">name</replaceable> ENABLE [ 
REPLICA | ALWAYS ]
-ALTER EVENT TRIGGER <replaceable class="parameter">name</replaceable> OWNER TO 
{ <replaceable class="parameter">new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+ALTER EVENT TRIGGER <replaceable class="parameter">name</replaceable> OWNER TO 
{ <replaceable class="parameter">new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 ALTER EVENT TRIGGER <replaceable class="parameter">name</replaceable> RENAME 
TO <replaceable class="parameter">new_name</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml 
b/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml
index 14f3d616e7..54f34c2c01 100644
--- a/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml
+++ b/doc/src/sgml/ref/alter_foreign_data_wrapper.sgml
@@ -25,7 +25,7 @@
     [ HANDLER <replaceable class="parameter">handler_function</replaceable> | 
NO HANDLER ]
     [ VALIDATOR <replaceable 
class="parameter">validator_function</replaceable> | NO VALIDATOR ]
     [ OPTIONS ( [ ADD | SET | DROP ] <replaceable 
class="parameter">option</replaceable> ['<replaceable 
class="parameter">value</replaceable>'] [, ... ]) ]
-ALTER FOREIGN DATA WRAPPER <replaceable class="parameter">name</replaceable> 
OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER FOREIGN DATA WRAPPER <replaceable class="parameter">name</replaceable> 
OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER FOREIGN DATA WRAPPER <replaceable class="parameter">name</replaceable> 
RENAME TO <replaceable>new_name</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_foreign_table.sgml 
b/doc/src/sgml/ref/alter_foreign_table.sgml
index 0f11897c99..04d53628ec 100644
--- a/doc/src/sgml/ref/alter_foreign_table.sgml
+++ b/doc/src/sgml/ref/alter_foreign_table.sgml
@@ -53,7 +53,7 @@
     SET WITHOUT OIDS
     INHERIT <replaceable class="parameter">parent_table</replaceable>
     NO INHERIT <replaceable class="parameter">parent_table</replaceable>
-    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_USER | SESSION_USER }
+    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER }
     OPTIONS ( [ ADD | SET | DROP ] <replaceable 
class="parameter">option</replaceable> ['<replaceable 
class="parameter">value</replaceable>'] [, ... ])
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_function.sgml 
b/doc/src/sgml/ref/alter_function.sgml
index 70b1f24bc0..54e61e7d78 100644
--- a/doc/src/sgml/ref/alter_function.sgml
+++ b/doc/src/sgml/ref/alter_function.sgml
@@ -26,7 +26,7 @@
 ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
     RENAME TO <replaceable>new_name</replaceable>
 ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
-    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
     SET SCHEMA <replaceable>new_schema</replaceable>
 ALTER FUNCTION <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
diff --git a/doc/src/sgml/ref/alter_group.sgml 
b/doc/src/sgml/ref/alter_group.sgml
index 39cc2b88cf..f6e5163109 100644
--- a/doc/src/sgml/ref/alter_group.sgml
+++ b/doc/src/sgml/ref/alter_group.sgml
@@ -27,6 +27,7 @@
 <phrase>where <replaceable class="parameter">role_specification</replaceable> 
can be:</phrase>
 
     <replaceable class="parameter">role_name</replaceable>
+  | CURRENT_ROLE
   | CURRENT_USER
   | SESSION_USER
 
diff --git a/doc/src/sgml/ref/alter_language.sgml 
b/doc/src/sgml/ref/alter_language.sgml
index eac63dec13..0b61c18aee 100644
--- a/doc/src/sgml/ref/alter_language.sgml
+++ b/doc/src/sgml/ref/alter_language.sgml
@@ -22,7 +22,7 @@
  <refsynopsisdiv>
 <synopsis>
 ALTER [ PROCEDURAL ] LANGUAGE <replaceable>name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
-ALTER [ PROCEDURAL ] LANGUAGE <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER [ PROCEDURAL ] LANGUAGE <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 </synopsis>
  </refsynopsisdiv>
 
diff --git a/doc/src/sgml/ref/alter_large_object.sgml 
b/doc/src/sgml/ref/alter_large_object.sgml
index 356f8a8eab..17ea1491ba 100644
--- a/doc/src/sgml/ref/alter_large_object.sgml
+++ b/doc/src/sgml/ref/alter_large_object.sgml
@@ -21,7 +21,7 @@
 
  <refsynopsisdiv>
 <synopsis>
-ALTER LARGE OBJECT <replaceable 
class="parameter">large_object_oid</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER LARGE OBJECT <replaceable 
class="parameter">large_object_oid</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 </synopsis>
  </refsynopsisdiv>
 
diff --git a/doc/src/sgml/ref/alter_materialized_view.sgml 
b/doc/src/sgml/ref/alter_materialized_view.sgml
index 9df8a79977..a9935b7629 100644
--- a/doc/src/sgml/ref/alter_materialized_view.sgml
+++ b/doc/src/sgml/ref/alter_materialized_view.sgml
@@ -44,7 +44,7 @@
     SET WITHOUT CLUSTER
     SET ( <replaceable class="parameter">storage_parameter</replaceable> = 
<replaceable class="parameter">value</replaceable> [, ... ] )
     RESET ( <replaceable class="parameter">storage_parameter</replaceable> [, 
... ] )
-    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_USER | SESSION_USER }
+    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 </synopsis>
  </refsynopsisdiv>
 
diff --git a/doc/src/sgml/ref/alter_opclass.sgml 
b/doc/src/sgml/ref/alter_opclass.sgml
index 59a64caa4f..b1db459b11 100644
--- a/doc/src/sgml/ref/alter_opclass.sgml
+++ b/doc/src/sgml/ref/alter_opclass.sgml
@@ -25,7 +25,7 @@
     RENAME TO <replaceable>new_name</replaceable>
 
 ALTER OPERATOR CLASS <replaceable>name</replaceable> USING <replaceable 
class="parameter">index_method</replaceable>
-    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 
 ALTER OPERATOR CLASS <replaceable>name</replaceable> USING <replaceable 
class="parameter">index_method</replaceable>
     SET SCHEMA <replaceable>new_schema</replaceable>
diff --git a/doc/src/sgml/ref/alter_operator.sgml 
b/doc/src/sgml/ref/alter_operator.sgml
index b3bfa9ccbe..ac35f229a0 100644
--- a/doc/src/sgml/ref/alter_operator.sgml
+++ b/doc/src/sgml/ref/alter_operator.sgml
@@ -22,7 +22,7 @@
  <refsynopsisdiv>
 <synopsis>
 ALTER OPERATOR <replaceable>name</replaceable> ( { 
<replaceable>left_type</replaceable> | NONE } , { 
<replaceable>right_type</replaceable> | NONE } )
-    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 
 ALTER OPERATOR <replaceable>name</replaceable> ( { 
<replaceable>left_type</replaceable> | NONE } , { 
<replaceable>right_type</replaceable> | NONE } )
     SET SCHEMA <replaceable>new_schema</replaceable>
diff --git a/doc/src/sgml/ref/alter_opfamily.sgml 
b/doc/src/sgml/ref/alter_opfamily.sgml
index 4ac1cca95a..59d5bf1070 100644
--- a/doc/src/sgml/ref/alter_opfamily.sgml
+++ b/doc/src/sgml/ref/alter_opfamily.sgml
@@ -37,7 +37,7 @@
     RENAME TO <replaceable>new_name</replaceable>
 
 ALTER OPERATOR FAMILY <replaceable>name</replaceable> USING <replaceable 
class="parameter">index_method</replaceable>
-    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 
 ALTER OPERATOR FAMILY <replaceable>name</replaceable> USING <replaceable 
class="parameter">index_method</replaceable>
     SET SCHEMA <replaceable>new_schema</replaceable>
diff --git a/doc/src/sgml/ref/alter_policy.sgml 
b/doc/src/sgml/ref/alter_policy.sgml
index a1c720a956..1c38324b59 100644
--- a/doc/src/sgml/ref/alter_policy.sgml
+++ b/doc/src/sgml/ref/alter_policy.sgml
@@ -24,7 +24,7 @@
 ALTER POLICY <replaceable class="parameter">name</replaceable> ON <replaceable 
class="parameter">table_name</replaceable> RENAME TO <replaceable 
class="parameter">new_name</replaceable>
 
 ALTER POLICY <replaceable class="parameter">name</replaceable> ON <replaceable 
class="parameter">table_name</replaceable>
-    [ TO { <replaceable class="parameter">role_name</replaceable> | PUBLIC | 
CURRENT_USER | SESSION_USER } [, ...] ]
+    [ TO { <replaceable class="parameter">role_name</replaceable> | PUBLIC | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
     [ USING ( <replaceable class="parameter">using_expression</replaceable> ) ]
     [ WITH CHECK ( <replaceable 
class="parameter">check_expression</replaceable> ) ]
 </synopsis>
diff --git a/doc/src/sgml/ref/alter_procedure.sgml 
b/doc/src/sgml/ref/alter_procedure.sgml
index dae80076d9..bcf45c7a85 100644
--- a/doc/src/sgml/ref/alter_procedure.sgml
+++ b/doc/src/sgml/ref/alter_procedure.sgml
@@ -26,7 +26,7 @@
 ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
     RENAME TO <replaceable>new_name</replaceable>
 ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
-    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
     SET SCHEMA <replaceable>new_schema</replaceable>
 ALTER PROCEDURE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
diff --git a/doc/src/sgml/ref/alter_publication.sgml 
b/doc/src/sgml/ref/alter_publication.sgml
index 534e598d93..c2946dfe0f 100644
--- a/doc/src/sgml/ref/alter_publication.sgml
+++ b/doc/src/sgml/ref/alter_publication.sgml
@@ -25,7 +25,7 @@
 ALTER PUBLICATION <replaceable class="parameter">name</replaceable> SET TABLE 
[ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] [, ...]
 ALTER PUBLICATION <replaceable class="parameter">name</replaceable> DROP TABLE 
[ ONLY ] <replaceable class="parameter">table_name</replaceable> [ * ] [, ...]
 ALTER PUBLICATION <replaceable class="parameter">name</replaceable> SET ( 
<replaceable class="parameter">publication_parameter</replaceable> [= 
<replaceable class="parameter">value</replaceable>] [, ... ] )
-ALTER PUBLICATION <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER PUBLICATION <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER PUBLICATION <replaceable class="parameter">name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_role.sgml b/doc/src/sgml/ref/alter_role.sgml
index dbf258ef50..d5f166c129 100644
--- a/doc/src/sgml/ref/alter_role.sgml
+++ b/doc/src/sgml/ref/alter_role.sgml
@@ -46,6 +46,7 @@
 <phrase>where <replaceable class="parameter">role_specification</replaceable> 
can be:</phrase>
 
     <replaceable class="parameter">role_name</replaceable>
+  | CURRENT_ROLE
   | CURRENT_USER
   | SESSION_USER
 </synopsis>
@@ -134,6 +135,7 @@ <title>Parameters</title>
      </varlistentry>
 
      <varlistentry>
+      <term><literal>CURRENT_ROLE</literal></term>
       <term><literal>CURRENT_USER</literal></term>
       <listitem>
        <para>
diff --git a/doc/src/sgml/ref/alter_routine.sgml 
b/doc/src/sgml/ref/alter_routine.sgml
index d1699691e1..36acaff319 100644
--- a/doc/src/sgml/ref/alter_routine.sgml
+++ b/doc/src/sgml/ref/alter_routine.sgml
@@ -26,7 +26,7 @@
 ALTER ROUTINE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
     RENAME TO <replaceable>new_name</replaceable>
 ALTER ROUTINE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
-    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+    OWNER TO { <replaceable>new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 ALTER ROUTINE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
     SET SCHEMA <replaceable>new_schema</replaceable>
 ALTER ROUTINE <replaceable>name</replaceable> [ ( [ [ <replaceable 
class="parameter">argmode</replaceable> ] [ <replaceable 
class="parameter">argname</replaceable> ] <replaceable 
class="parameter">argtype</replaceable> [, ...] ] ) ]
diff --git a/doc/src/sgml/ref/alter_schema.sgml 
b/doc/src/sgml/ref/alter_schema.sgml
index 2937214026..04624c5a5e 100644
--- a/doc/src/sgml/ref/alter_schema.sgml
+++ b/doc/src/sgml/ref/alter_schema.sgml
@@ -22,7 +22,7 @@
  <refsynopsisdiv>
 <synopsis>
 ALTER SCHEMA <replaceable>name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
-ALTER SCHEMA <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER SCHEMA <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 </synopsis>
  </refsynopsisdiv>
 
diff --git a/doc/src/sgml/ref/alter_sequence.sgml 
b/doc/src/sgml/ref/alter_sequence.sgml
index bfd20af6d3..3cd9ece49f 100644
--- a/doc/src/sgml/ref/alter_sequence.sgml
+++ b/doc/src/sgml/ref/alter_sequence.sgml
@@ -31,7 +31,7 @@
     [ RESTART [ [ WITH ] <replaceable class="parameter">restart</replaceable> 
] ]
     [ CACHE <replaceable class="parameter">cache</replaceable> ] [ [ NO ] 
CYCLE ]
     [ OWNED BY { <replaceable 
class="parameter">table_name</replaceable>.<replaceable 
class="parameter">column_name</replaceable> | NONE } ]
-ALTER SEQUENCE [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_USER | SESSION_USER }
+ALTER SEQUENCE [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER SEQUENCE [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
RENAME TO <replaceable class="parameter">new_name</replaceable>
 ALTER SEQUENCE [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
SET SCHEMA <replaceable class="parameter">new_schema</replaceable>
 </synopsis>
diff --git a/doc/src/sgml/ref/alter_server.sgml 
b/doc/src/sgml/ref/alter_server.sgml
index 17e55b093e..186f38b5f8 100644
--- a/doc/src/sgml/ref/alter_server.sgml
+++ b/doc/src/sgml/ref/alter_server.sgml
@@ -23,7 +23,7 @@
 <synopsis>
 ALTER SERVER <replaceable class="parameter">name</replaceable> [ VERSION 
'<replaceable class="parameter">new_version</replaceable>' ]
     [ OPTIONS ( [ ADD | SET | DROP ] <replaceable 
class="parameter">option</replaceable> ['<replaceable 
class="parameter">value</replaceable>'] [, ... ] ) ]
-ALTER SERVER <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER SERVER <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER SERVER <replaceable class="parameter">name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_statistics.sgml 
b/doc/src/sgml/ref/alter_statistics.sgml
index be4c3f1f05..112f5d8924 100644
--- a/doc/src/sgml/ref/alter_statistics.sgml
+++ b/doc/src/sgml/ref/alter_statistics.sgml
@@ -23,7 +23,7 @@
 
  <refsynopsisdiv>
 <synopsis>
-ALTER STATISTICS <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable class="parameter">new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+ALTER STATISTICS <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable class="parameter">new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 ALTER STATISTICS <replaceable class="parameter">name</replaceable> RENAME TO 
<replaceable class="parameter">new_name</replaceable>
 ALTER STATISTICS <replaceable class="parameter">name</replaceable> SET SCHEMA 
<replaceable class="parameter">new_schema</replaceable>
 ALTER STATISTICS <replaceable class="parameter">name</replaceable> SET 
STATISTICS <replaceable class="parameter">new_target</replaceable>
diff --git a/doc/src/sgml/ref/alter_subscription.sgml 
b/doc/src/sgml/ref/alter_subscription.sgml
index c24ace14d1..447a5847fc 100644
--- a/doc/src/sgml/ref/alter_subscription.sgml
+++ b/doc/src/sgml/ref/alter_subscription.sgml
@@ -27,7 +27,7 @@
 ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> ENABLE
 ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> DISABLE
 ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> SET ( 
<replaceable class="parameter">subscription_parameter</replaceable> [= 
<replaceable class="parameter">value</replaceable>] [, ... ] )
-ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> OWNER TO 
{ <replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> OWNER TO 
{ <replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER SUBSCRIPTION <replaceable class="parameter">name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_table.sgml 
b/doc/src/sgml/ref/alter_table.sgml
index cbfb4828e5..cbbc8f2f91 100644
--- a/doc/src/sgml/ref/alter_table.sgml
+++ b/doc/src/sgml/ref/alter_table.sgml
@@ -82,7 +82,7 @@
     NO INHERIT <replaceable class="parameter">parent_table</replaceable>
     OF <replaceable class="parameter">type_name</replaceable>
     NOT OF
-    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_USER | SESSION_USER }
+    OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER }
     REPLICA IDENTITY { DEFAULT | USING INDEX <replaceable 
class="parameter">index_name</replaceable> | FULL | NOTHING }
 
 <phrase>and <replaceable class="parameter">partition_bound_spec</replaceable> 
is:</phrase>
diff --git a/doc/src/sgml/ref/alter_tablespace.sgml 
b/doc/src/sgml/ref/alter_tablespace.sgml
index 356fb9f93f..6de80746d5 100644
--- a/doc/src/sgml/ref/alter_tablespace.sgml
+++ b/doc/src/sgml/ref/alter_tablespace.sgml
@@ -22,7 +22,7 @@
  <refsynopsisdiv>
 <synopsis>
 ALTER TABLESPACE <replaceable>name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
-ALTER TABLESPACE <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER TABLESPACE <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER TABLESPACE <replaceable>name</replaceable> SET ( <replaceable 
class="parameter">tablespace_option</replaceable> = <replaceable 
class="parameter">value</replaceable> [, ... ] )
 ALTER TABLESPACE <replaceable>name</replaceable> RESET ( <replaceable 
class="parameter">tablespace_option</replaceable> [, ... ] )
 </synopsis>
diff --git a/doc/src/sgml/ref/alter_tsconfig.sgml 
b/doc/src/sgml/ref/alter_tsconfig.sgml
index ebe0b94b27..8fafcd3bbd 100644
--- a/doc/src/sgml/ref/alter_tsconfig.sgml
+++ b/doc/src/sgml/ref/alter_tsconfig.sgml
@@ -32,7 +32,7 @@
 ALTER TEXT SEARCH CONFIGURATION <replaceable>name</replaceable>
     DROP MAPPING [ IF EXISTS ] FOR <replaceable 
class="parameter">token_type</replaceable> [, ... ]
 ALTER TEXT SEARCH CONFIGURATION <replaceable>name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
-ALTER TEXT SEARCH CONFIGURATION <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER TEXT SEARCH CONFIGURATION <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER TEXT SEARCH CONFIGURATION <replaceable>name</replaceable> SET SCHEMA 
<replaceable>new_schema</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_tsdictionary.sgml 
b/doc/src/sgml/ref/alter_tsdictionary.sgml
index b29865e11e..d1923ef160 100644
--- a/doc/src/sgml/ref/alter_tsdictionary.sgml
+++ b/doc/src/sgml/ref/alter_tsdictionary.sgml
@@ -25,7 +25,7 @@
     <replaceable class="parameter">option</replaceable> [ = <replaceable 
class="parameter">value</replaceable> ] [, ... ]
 )
 ALTER TEXT SEARCH DICTIONARY <replaceable>name</replaceable> RENAME TO 
<replaceable>new_name</replaceable>
-ALTER TEXT SEARCH DICTIONARY <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_USER | SESSION_USER }
+ALTER TEXT SEARCH DICTIONARY <replaceable>name</replaceable> OWNER TO { 
<replaceable>new_owner</replaceable> | CURRENT_ROLE | CURRENT_USER | 
SESSION_USER }
 ALTER TEXT SEARCH DICTIONARY <replaceable>name</replaceable> SET SCHEMA 
<replaceable>new_schema</replaceable>
 </synopsis>
  </refsynopsisdiv>
diff --git a/doc/src/sgml/ref/alter_type.sgml b/doc/src/sgml/ref/alter_type.sgml
index f015fcd268..a4f09c660b 100644
--- a/doc/src/sgml/ref/alter_type.sgml
+++ b/doc/src/sgml/ref/alter_type.sgml
@@ -23,7 +23,7 @@
 
  <refsynopsisdiv>
 <synopsis>
-ALTER TYPE <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable class="parameter">new_owner</replaceable> | CURRENT_USER | 
SESSION_USER }
+ALTER TYPE <replaceable class="parameter">name</replaceable> OWNER TO { 
<replaceable class="parameter">new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER }
 ALTER TYPE <replaceable class="parameter">name</replaceable> RENAME TO 
<replaceable class="parameter">new_name</replaceable>
 ALTER TYPE <replaceable class="parameter">name</replaceable> SET SCHEMA 
<replaceable class="parameter">new_schema</replaceable>
 ALTER TYPE <replaceable class="parameter">name</replaceable> RENAME ATTRIBUTE 
<replaceable class="parameter">attribute_name</replaceable> TO <replaceable 
class="parameter">new_attribute_name</replaceable> [ CASCADE | RESTRICT ]
diff --git a/doc/src/sgml/ref/alter_user.sgml b/doc/src/sgml/ref/alter_user.sgml
index 6769c8ecc4..51527cefb4 100644
--- a/doc/src/sgml/ref/alter_user.sgml
+++ b/doc/src/sgml/ref/alter_user.sgml
@@ -46,6 +46,7 @@
 <phrase>where <replaceable class="parameter">role_specification</replaceable> 
can be:</phrase>
 
     <replaceable class="parameter">role_name</replaceable>
+  | CURRENT_ROLE
   | CURRENT_USER
   | SESSION_USER
 </synopsis>
diff --git a/doc/src/sgml/ref/alter_user_mapping.sgml 
b/doc/src/sgml/ref/alter_user_mapping.sgml
index 7a9b5a188a..ee5aee9bc9 100644
--- a/doc/src/sgml/ref/alter_user_mapping.sgml
+++ b/doc/src/sgml/ref/alter_user_mapping.sgml
@@ -21,7 +21,7 @@
 
  <refsynopsisdiv>
 <synopsis>
-ALTER USER MAPPING FOR { <replaceable 
class="parameter">user_name</replaceable> | USER | CURRENT_USER | SESSION_USER 
| PUBLIC }
+ALTER USER MAPPING FOR { <replaceable 
class="parameter">user_name</replaceable> | USER | CURRENT_ROLE | CURRENT_USER 
| SESSION_USER | PUBLIC }
     SERVER <replaceable class="parameter">server_name</replaceable>
     OPTIONS ( [ ADD | SET | DROP ] <replaceable 
class="parameter">option</replaceable> ['<replaceable 
class="parameter">value</replaceable>'] [, ... ] )
 </synopsis>
@@ -51,7 +51,7 @@ <title>Parameters</title>
     <term><replaceable class="parameter">user_name</replaceable></term>
     <listitem>
      <para>
-      User name of the mapping. <literal>CURRENT_USER</literal>
+      User name of the mapping. <literal>CURRENT_ROLE</literal>, 
<literal>CURRENT_USER</literal>,
       and <literal>USER</literal> match the name of the current
       user. <literal>PUBLIC</literal> is used to match all present and future
       user names in the system.
diff --git a/doc/src/sgml/ref/alter_view.sgml b/doc/src/sgml/ref/alter_view.sgml
index e8d9e11e0f..98c312c5bf 100644
--- a/doc/src/sgml/ref/alter_view.sgml
+++ b/doc/src/sgml/ref/alter_view.sgml
@@ -23,7 +23,7 @@
 <synopsis>
 ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
ALTER [ COLUMN ] <replaceable class="parameter">column_name</replaceable> SET 
DEFAULT <replaceable class="parameter">expression</replaceable>
 ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
ALTER [ COLUMN ] <replaceable class="parameter">column_name</replaceable> DROP 
DEFAULT
-ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_USER | SESSION_USER }
+ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
OWNER TO { <replaceable class="parameter">new_owner</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
RENAME [ COLUMN ] <replaceable class="parameter">column_name</replaceable> TO 
<replaceable class="parameter">new_column_name</replaceable>
 ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> 
RENAME TO <replaceable class="parameter">new_name</replaceable>
 ALTER VIEW [ IF EXISTS ] <replaceable class="parameter">name</replaceable> SET 
SCHEMA <replaceable class="parameter">new_schema</replaceable>
diff --git a/doc/src/sgml/ref/create_policy.sgml 
b/doc/src/sgml/ref/create_policy.sgml
index 2e1229c4f9..b4f9056101 100644
--- a/doc/src/sgml/ref/create_policy.sgml
+++ b/doc/src/sgml/ref/create_policy.sgml
@@ -24,7 +24,7 @@
 CREATE POLICY <replaceable class="parameter">name</replaceable> ON 
<replaceable class="parameter">table_name</replaceable>
     [ AS { PERMISSIVE | RESTRICTIVE } ]
     [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
-    [ TO { <replaceable class="parameter">role_name</replaceable> | PUBLIC | 
CURRENT_USER | SESSION_USER } [, ...] ]
+    [ TO { <replaceable class="parameter">role_name</replaceable> | PUBLIC | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
     [ USING ( <replaceable class="parameter">using_expression</replaceable> ) ]
     [ WITH CHECK ( <replaceable 
class="parameter">check_expression</replaceable> ) ]
 </synopsis>
diff --git a/doc/src/sgml/ref/create_schema.sgml 
b/doc/src/sgml/ref/create_schema.sgml
index ffbe1ba3bc..3c2dddb163 100644
--- a/doc/src/sgml/ref/create_schema.sgml
+++ b/doc/src/sgml/ref/create_schema.sgml
@@ -29,6 +29,7 @@
 <phrase>where <replaceable class="parameter">role_specification</replaceable> 
can be:</phrase>
 
     <replaceable class="parameter">user_name</replaceable>
+  | CURRENT_ROLE
   | CURRENT_USER
   | SESSION_USER
 </synopsis>
diff --git a/doc/src/sgml/ref/create_tablespace.sgml 
b/doc/src/sgml/ref/create_tablespace.sgml
index 462b8831c2..84fa7ee5e2 100644
--- a/doc/src/sgml/ref/create_tablespace.sgml
+++ b/doc/src/sgml/ref/create_tablespace.sgml
@@ -22,7 +22,7 @@
  <refsynopsisdiv>
 <synopsis>
 CREATE TABLESPACE <replaceable class="parameter">tablespace_name</replaceable>
-    [ OWNER { <replaceable>new_owner</replaceable> | CURRENT_USER | 
SESSION_USER } ]
+    [ OWNER { <replaceable>new_owner</replaceable> | CURRENT_ROLE | 
CURRENT_USER | SESSION_USER } ]
     LOCATION '<replaceable class="parameter">directory</replaceable>'
     [ WITH ( <replaceable class="parameter">tablespace_option</replaceable> = 
<replaceable class="parameter">value</replaceable> [, ... ] ) ]
 </synopsis>
diff --git a/doc/src/sgml/ref/create_user_mapping.sgml 
b/doc/src/sgml/ref/create_user_mapping.sgml
index 9719a4ff2c..55debd5401 100644
--- a/doc/src/sgml/ref/create_user_mapping.sgml
+++ b/doc/src/sgml/ref/create_user_mapping.sgml
@@ -21,7 +21,7 @@
 
  <refsynopsisdiv>
 <synopsis>
-CREATE USER MAPPING [ IF NOT EXISTS ] FOR { <replaceable 
class="parameter">user_name</replaceable> | USER | CURRENT_USER | PUBLIC }
+CREATE USER MAPPING [ IF NOT EXISTS ] FOR { <replaceable 
class="parameter">user_name</replaceable> | USER | CURRENT_ROLE | CURRENT_USER 
| PUBLIC }
     SERVER <replaceable class="parameter">server_name</replaceable>
     [ OPTIONS ( <replaceable class="parameter">option</replaceable> 
'<replaceable class="parameter">value</replaceable>' [ , ... ] ) ]
 </synopsis>
@@ -67,7 +67,7 @@ <title>Parameters</title>
     <listitem>
      <para>
       The name of an existing user that is mapped to foreign server.
-      <literal>CURRENT_USER</literal> and <literal>USER</literal> match the 
name of
+      <literal>CURRENT_ROLE</literal>, <literal>CURRENT_USER</literal>, and 
<literal>USER</literal> match the name of
       the current user.  When <literal>PUBLIC</literal> is specified, a
       so-called public mapping is created that is used when no
       user-specific mapping is applicable.
diff --git a/doc/src/sgml/ref/drop_owned.sgml b/doc/src/sgml/ref/drop_owned.sgml
index 09107bef64..dcc375f33b 100644
--- a/doc/src/sgml/ref/drop_owned.sgml
+++ b/doc/src/sgml/ref/drop_owned.sgml
@@ -21,7 +21,7 @@
 
  <refsynopsisdiv>
 <synopsis>
-DROP OWNED BY { <replaceable class="parameter">name</replaceable> | 
CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]
+DROP OWNED BY { <replaceable class="parameter">name</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]
 </synopsis>
  </refsynopsisdiv>
 
diff --git a/doc/src/sgml/ref/drop_user_mapping.sgml 
b/doc/src/sgml/ref/drop_user_mapping.sgml
index 7cb09f1166..9e8896a307 100644
--- a/doc/src/sgml/ref/drop_user_mapping.sgml
+++ b/doc/src/sgml/ref/drop_user_mapping.sgml
@@ -21,7 +21,7 @@
 
  <refsynopsisdiv>
 <synopsis>
-DROP USER MAPPING [ IF EXISTS ] FOR { <replaceable 
class="parameter">user_name</replaceable> | USER | CURRENT_USER | PUBLIC } 
SERVER <replaceable class="parameter">server_name</replaceable>
+DROP USER MAPPING [ IF EXISTS ] FOR { <replaceable 
class="parameter">user_name</replaceable> | USER | CURRENT_ROLE | CURRENT_USER 
| PUBLIC } SERVER <replaceable class="parameter">server_name</replaceable>
 </synopsis>
  </refsynopsisdiv>
 
@@ -59,7 +59,7 @@ <title>Parameters</title>
     <term><replaceable class="parameter">user_name</replaceable></term>
     <listitem>
      <para>
-      User name of the mapping.  <literal>CURRENT_USER</literal>
+      User name of the mapping.  <literal>CURRENT_ROLE</literal>, 
<literal>CURRENT_USER</literal>,
       and <literal>USER</literal> match the name of the current
       user.  <literal>PUBLIC</literal> is used to match all present and
       future user names in the system.
diff --git a/doc/src/sgml/ref/grant.sgml b/doc/src/sgml/ref/grant.sgml
index bc573f7826..fe231aa30c 100644
--- a/doc/src/sgml/ref/grant.sgml
+++ b/doc/src/sgml/ref/grant.sgml
@@ -87,6 +87,7 @@
 
     [ GROUP ] <replaceable class="parameter">role_name</replaceable>
   | PUBLIC
+  | CURRENT_ROLE
   | CURRENT_USER
   | SESSION_USER
 </synopsis>
diff --git a/doc/src/sgml/ref/reassign_owned.sgml 
b/doc/src/sgml/ref/reassign_owned.sgml
index 42f72a726f..783389df4e 100644
--- a/doc/src/sgml/ref/reassign_owned.sgml
+++ b/doc/src/sgml/ref/reassign_owned.sgml
@@ -21,8 +21,8 @@
 
  <refsynopsisdiv>
 <synopsis>
-REASSIGN OWNED BY { <replaceable class="parameter">old_role</replaceable> | 
CURRENT_USER | SESSION_USER } [, ...]
-               TO { <replaceable class="parameter">new_role</replaceable> | 
CURRENT_USER | SESSION_USER }
+REASSIGN OWNED BY { <replaceable class="parameter">old_role</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...]
+               TO { <replaceable class="parameter">new_role</replaceable> | 
CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 </synopsis>
  </refsynopsisdiv>
 
diff --git a/doc/src/sgml/ref/revoke.sgml b/doc/src/sgml/ref/revoke.sgml
index b6bac21c57..b50f99dfe7 100644
--- a/doc/src/sgml/ref/revoke.sgml
+++ b/doc/src/sgml/ref/revoke.sgml
@@ -114,6 +114,7 @@
 
     [ GROUP ] <replaceable class="parameter">role_name</replaceable>
   | PUBLIC
+  | CURRENT_ROLE
   | CURRENT_USER
   | SESSION_USER
 </synopsis>
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index e669d75a5a..6e6565dc26 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -14949,6 +14949,10 @@ RoleSpec:      NonReservedWord
                                                }
                                                $$ = n;
                                        }
+                       | CURRENT_ROLE
+                                       {
+                                               $$ = 
makeRoleSpec(ROLESPEC_CURRENT_USER, @1);
+                                       }
                        | CURRENT_USER
                                        {
                                                $$ = 
makeRoleSpec(ROLESPEC_CURRENT_USER, @1);
-- 
2.27.0

Reply via email to