public inbox for [email protected]  
help / color / mirror / Atom feed
From: Yamaguchi Atsuo <[email protected]>
To: [email protected]
Subject: Add tab completion for SERVER and CONNECTION keywords in psql
Date: Sun, 22 Mar 2026 13:30:30 -0700
Message-ID: <CAKSyusJWdWcUKVd3qJXcEaQxJewGymQWV_r3-mc=Knrqo0AZ_g@mail.gmail.com> (raw)

Hi,

This patch adds missing tab completion support in psql for:

- SERVER keyword after ALTER/CREATE SUBSCRIPTION <name>
- CONNECTION keyword after ALTER/CREATE FOREIGN DATA WRAPPER <name>

Currently, typing "ALTER SUBSCRIPTION sub1 SERVER" and pressing Tab
does not complete server names, even though the SERVER keyword itself
is already suggested. Similarly, CONNECTION is not suggested as a
completion candidate for FOREIGN DATA WRAPPER commands, despite being
a valid option.

The patch is generated against the current master branch.

Regards,
Atsuo Yamaguchi


Attachments:

  [application/octet-stream] 0001-Add-tab-completion-for-SERVER-and-CONNECTION-keyword.patch (2.7K, 3-0001-Add-tab-completion-for-SERVER-and-CONNECTION-keyword.patch)
  download | inline diff:
From 544767dd4afddebcf053332373b1f0cd15a3acdf Mon Sep 17 00:00:00 2001
From: "Atsuo (Jorge) Yamaguchi" <[email protected]>
Date: Sun, 22 Mar 2026 20:14:55 +0000
Subject: [PATCH] Add tab completion for SERVER and CONNECTION keywords in psql

The SERVER keyword in ALTER/CREATE SUBSCRIPTION and the CONNECTION
keyword in ALTER/CREATE FOREIGN DATA WRAPPER were missing from
psql's tab completion support. This patch adds them.
---
 src/bin/psql/tab-complete.in.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index 5bdbf1530a2..74dc1c987cf 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -2342,6 +2342,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");
@@ -2459,9 +2461,9 @@ 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");
+					  "OPTIONS", "OWNER TO", "RENAME TO", "CONNECTION");
 	else if (Matches("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny, "NO"))
-		COMPLETE_WITH("HANDLER", "VALIDATOR");
+		COMPLETE_WITH("HANDLER", "VALIDATOR", "CONNECTION");
 
 	/* ALTER FOREIGN TABLE <name> */
 	else if (Matches("ALTER", "FOREIGN", "TABLE", MatchAny))
@@ -3548,7 +3550,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("HANDLER", "VALIDATOR", "OPTIONS", "CONNECTION");
 
 	/* CREATE FOREIGN TABLE */
 	else if (Matches("CREATE", "FOREIGN", "TABLE", MatchAny))
@@ -3915,6 +3917,8 @@ match_previous_words(int pattern_id,
 /* CREATE SUBSCRIPTION */
 	else if (Matches("CREATE", "SUBSCRIPTION", MatchAny))
 		COMPLETE_WITH("SERVER", "CONNECTION");
+	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))
-- 
2.47.3



view thread (4+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: Add tab completion for SERVER and CONNECTION keywords in psql
  In-Reply-To: <CAKSyusJWdWcUKVd3qJXcEaQxJewGymQWV_r3-mc=Knrqo0AZ_g@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox