Add CURRENT_ROLE to list of roles for tab completion of GRANT in psql
authorMichael Paquier <michael@paquier.xyz>
Wed, 21 Apr 2021 01:34:43 +0000 (10:34 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 21 Apr 2021 01:34:43 +0000 (10:34 +0900)
This compatibility has been added in 45b9805, but psql forgot the call.

Author: Wei Wang
Reviewed-by: Aleksander Alekseev
Discussion: https://postgr.es/m/OS3PR01MB6275935F62E161BCD393D6559E489@OS3PR01MB6275.jpnprd01.prod.outlook.com

src/bin/psql/tab-complete.c

index cfd0a840c7ca46970adb034f9380f7d729ae20ee..ed84b3789c63e96f1787021aeb0f0ea654bb8520 100644 (file)
@@ -764,6 +764,7 @@ static const SchemaQuery Query_for_list_of_collations = {
 "   FROM pg_catalog.pg_roles "\
 "  WHERE substring(pg_catalog.quote_ident(rolname),1,%d)='%s'"\
 " UNION ALL SELECT 'PUBLIC'"\
+" UNION ALL SELECT 'CURRENT_ROLE'"\
 " UNION ALL SELECT 'CURRENT_USER'"\
 " UNION ALL SELECT 'SESSION_USER'"
 
@@ -3450,7 +3451,7 @@ psql_completion(const char *text, int start, int end)
 
    /*
     * Complete "GRANT/REVOKE ... TO/FROM" with username, PUBLIC,
-    * CURRENT_USER, or SESSION_USER.
+    * CURRENT_ROLE, CURRENT_USER, or SESSION_USER.
     */
    else if ((HeadMatches("GRANT") && TailMatches("TO")) ||
             (HeadMatches("REVOKE") && TailMatches("FROM")))
@@ -3884,6 +3885,7 @@ psql_completion(const char *text, int start, int end)
        COMPLETE_WITH("FOR");
    else if (Matches("CREATE", "USER", "MAPPING", "FOR"))
        COMPLETE_WITH_QUERY(Query_for_list_of_roles
+                           " UNION SELECT 'CURRENT_ROLE'"
                            " UNION SELECT 'CURRENT_USER'"
                            " UNION SELECT 'PUBLIC'"
                            " UNION SELECT 'USER'");