psql: Improve psql tab completion for GRANT/REVOKE on large objects.

This commit enhances psql's tab completion to support TO/FROM
after "GRANT/REVOKE ... ON LARGE OBJECT ...". Additionally,
since "ALTER DEFAULT PRIVILEGES" now supports large objects,
tab completion is also updated for "GRANT/REVOKE ... ON LARGE OBJECTS"
with TO/FROM.

Author: Fujii Masao <masao.fujii@gmail.com>
Reviewed-by: Yugo Nagata <nagata@sraoss.co.jp>
Discussion: https://postgr.es/m/ade0ab29-777f-47f6-9d0d-1af67728a86e@oss.nttdata.com
pull/235/head
Fujii Masao 2 months ago
parent ed26c4e25a
commit 86c539c5af
  1. 20
      src/bin/psql/tab-complete.in.c

@ -4624,6 +4624,26 @@ match_previous_words(int pattern_id,
COMPLETE_WITH("FROM");
}
/* Complete "GRANT/REVOKE * ON LARGE OBJECT *" with TO/FROM */
else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "LARGE", "OBJECT", MatchAny) ||
TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny, "ON", "LARGE", "OBJECT", MatchAny))
{
if (TailMatches("GRANT", MatchAny, MatchAny, MatchAny, MatchAny, MatchAny))
COMPLETE_WITH("TO");
else
COMPLETE_WITH("FROM");
}
/* Complete "GRANT/REVOKE * ON LARGE OBJECTS" with TO/FROM */
else if (TailMatches("GRANT|REVOKE", MatchAny, "ON", "LARGE", "OBJECTS") ||
TailMatches("REVOKE", "GRANT", "OPTION", "FOR", MatchAny, "ON", "LARGE", "OBJECTS"))
{
if (TailMatches("GRANT", MatchAny, MatchAny, MatchAny, MatchAny))
COMPLETE_WITH("TO");
else
COMPLETE_WITH("FROM");
}
/* GROUP BY */
else if (TailMatches("FROM", MatchAny, "GROUP"))
COMPLETE_WITH("BY");

Loading…
Cancel
Save