psql: Fix tab completion for FOREIGN DATA WRAPPER and SUBSCRIPTION.

Commit 8185bb5347 extended the CREATE/ALTER SUBSCRIPTION and
CREATE/ALTER FOREIGN DATA WRAPPER commands, but missed the
corresponding tab-completion logic. This commit fixes that oversight
by adding completion support for:

- The CONNECTION keyword in CREATE/ALTER FOREIGN DATA WRAPPER.
- The list of foreign servers in CREATE/ALTER SUBSCRIPTION.

Author: Yamaguchi Atsuo <acrobatcoder@gmail.com>
Discussion: https://postgr.es/m/CAKSyusJWdWcUKVd3qJXcEaQxJewGymQWV_r3-mc=Knrqo0AZ_g@mail.gmail.com
This commit is contained in:
Masahiko Sawada 2026-03-25 09:30:26 -07:00
parent 87e1891c45
commit 5fa7837d9a

View file

@ -2353,6 +2353,8 @@ match_previous_words(int pattern_id,
COMPLETE_WITH("CONNECTION", "ENABLE", "DISABLE", "OWNER TO",
"RENAME TO", "REFRESH PUBLICATION", "REFRESH SEQUENCES",
"SERVER", "SET", "SKIP (", "ADD PUBLICATION", "DROP PUBLICATION");
else if (Matches("ALTER", "SUBSCRIPTION", MatchAny, "SERVER"))
COMPLETE_WITH_QUERY(Query_for_list_of_servers);
/* ALTER SUBSCRIPTION <name> REFRESH */
else if (Matches("ALTER", "SUBSCRIPTION", MatchAny, MatchAnyN, "REFRESH"))
COMPLETE_WITH("PUBLICATION", "SEQUENCES");
@ -2469,10 +2471,10 @@ match_previous_words(int pattern_id,
/* ALTER FOREIGN DATA WRAPPER <name> */
else if (Matches("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny))
COMPLETE_WITH("HANDLER", "VALIDATOR", "NO",
"OPTIONS", "OWNER TO", "RENAME TO");
COMPLETE_WITH("CONNECTION", "HANDLER", "NO",
"OPTIONS", "OWNER TO", "RENAME TO", "VALIDATOR");
else if (Matches("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny, "NO"))
COMPLETE_WITH("HANDLER", "VALIDATOR");
COMPLETE_WITH("CONNECTION", "HANDLER", "VALIDATOR");
/* ALTER FOREIGN TABLE <name> */
else if (Matches("ALTER", "FOREIGN", "TABLE", MatchAny))
@ -3559,7 +3561,7 @@ match_previous_words(int pattern_id,
/* CREATE FOREIGN DATA WRAPPER */
else if (Matches("CREATE", "FOREIGN", "DATA", "WRAPPER", MatchAny))
COMPLETE_WITH("HANDLER", "VALIDATOR", "OPTIONS");
COMPLETE_WITH("CONNECTION", "HANDLER", "OPTIONS", "VALIDATOR");
/* CREATE FOREIGN TABLE */
else if (Matches("CREATE", "FOREIGN", "TABLE", MatchAny))
@ -3925,7 +3927,9 @@ match_previous_words(int pattern_id,
/* CREATE SUBSCRIPTION */
else if (Matches("CREATE", "SUBSCRIPTION", MatchAny))
COMPLETE_WITH("SERVER", "CONNECTION");
COMPLETE_WITH("CONNECTION", "SERVER");
else if (Matches("CREATE", "SUBSCRIPTION", MatchAny, "SERVER"))
COMPLETE_WITH_QUERY(Query_for_list_of_servers);
else if (Matches("CREATE", "SUBSCRIPTION", MatchAny, "SERVER", MatchAny))
COMPLETE_WITH("PUBLICATION");
else if (Matches("CREATE", "SUBSCRIPTION", MatchAny, "CONNECTION", MatchAny))