aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2023-01-12 08:49:37 +0900
committerMichael Paquier <michael@paquier.xyz>2023-01-12 08:49:37 +0900
commit2ff5ca86e816846743b31279a9f6b819d4cf4b11 (patch)
tree27c2bfeb7ae6b5dedc45e45e56eae089a8065b1b
parentaf3855cb77b94a0321b77d7d9a9849700ea6a758 (diff)
downloadpostgresql-2ff5ca86e816846743b31279a9f6b819d4cf4b11.tar.gz
postgresql-2ff5ca86e816846743b31279a9f6b819d4cf4b11.zip
Add support for tab completion after ALTER EXTENSION ADD|DROP in psql
This appends the set of object types supported by these commands, and the objects defined in the cluster are completed after that. Note that these may not be in the extension being working on when using DROP, to keep the code simple, but this is much more useful than the previous behavior of not knowing the objects that can be touched. Author: Vignesh C Discussion: https://postgr.es/m/CALDaNm3LVM2QcUWqgOonKZH80TveT-tUthbw4ZhuE_6pD3yi-A@mail.gmail.com
-rw-r--r--src/bin/psql/tab-complete.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 23750ea5fbd..5e1882eaeab 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -1982,6 +1982,27 @@ psql_completion(const char *text, int start, int end)
else if (Matches("ALTER", "EXTENSION", MatchAny))
COMPLETE_WITH("ADD", "DROP", "UPDATE", "SET SCHEMA");
+ /* ALTER EXTENSION <name> ADD|DROP */
+ else if (Matches("ALTER", "EXTENSION", MatchAny, "ADD|DROP"))
+ COMPLETE_WITH("ACCESS METHOD", "AGGREGATE", "CAST", "COLLATION",
+ "CONVERSION", "DOMAIN", "EVENT TRIGGER", "FOREIGN",
+ "FUNCTION", "MATERIALIZED VIEW", "OPERATOR",
+ "LANGUAGE", "PROCEDURE", "ROUTINE", "SCHEMA",
+ "SEQUENCE", "SERVER", "TABLE", "TEXT SEARCH",
+ "TRANSFORM FOR", "TYPE", "VIEW");
+
+ /* ALTER EXTENSION <name> ADD|DROP FOREIGN */
+ else if (Matches("ALTER", "EXTENSION", MatchAny, "ADD|DROP", "FOREIGN"))
+ COMPLETE_WITH("DATA WRAPPER", "TABLE");
+
+ /* ALTER EXTENSION <name> ADD|DROP OPERATOR */
+ else if (Matches("ALTER", "EXTENSION", MatchAny, "ADD|DROP", "OPERATOR"))
+ COMPLETE_WITH("CLASS", "FAMILY");
+
+ /* ALTER EXTENSION <name> ADD|DROP TEXT SEARCH */
+ else if (Matches("ALTER", "EXTENSION", MatchAny, "ADD|DROP", "TEXT", "SEARCH"))
+ COMPLETE_WITH("CONFIGURATION", "DICTIONARY", "PARSER", "TEMPLATE");
+
/* ALTER EXTENSION <name> UPDATE */
else if (Matches("ALTER", "EXTENSION", MatchAny, "UPDATE"))
COMPLETE_WITH("TO");