aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2015-10-20 10:27:20 -0400
committerRobert Haas <rhaas@postgresql.org>2015-10-20 10:27:20 -0400
commit7c0b49cd03fdb6bbedada6c5e6439cb4cd6872c3 (patch)
tree75cef1093d3022a9864fd62792d6a34b62234084 /src
parent84ef9c596e0ef7476cd995349767204022610466 (diff)
downloadpostgresql-7c0b49cd03fdb6bbedada6c5e6439cb4cd6872c3.tar.gz
postgresql-7c0b49cd03fdb6bbedada6c5e6439cb4cd6872c3.zip
Tab complete CREATE EXTENSION .. VERSION.
Jeff Janes
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/tab-complete.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 1619de52aea..4eb5058416c 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -729,6 +729,13 @@ static const SchemaQuery Query_for_list_of_matviews = {
" FROM pg_catalog.pg_available_extensions "\
" WHERE substring(pg_catalog.quote_ident(name),1,%d)='%s' AND installed_version IS NULL"
+/* the silly-looking length condition is just to eat up the current word */
+#define Query_for_list_of_available_extension_versions \
+" SELECT pg_catalog.quote_ident(version) "\
+" FROM pg_catalog.pg_available_extension_versions "\
+" WHERE (%d = pg_catalog.length('%s'))"\
+" AND pg_catalog.quote_ident(name)='%s'"
+
#define Query_for_list_of_prepared_statements \
" SELECT pg_catalog.quote_ident(name) "\
" FROM pg_catalog.pg_prepared_statements "\
@@ -2266,10 +2273,18 @@ psql_completion(const char *text, int start, int end)
pg_strcasecmp(prev2_wd, "EXTENSION") == 0)
{
static const char *const list_CREATE_EXTENSION[] =
- {"WITH SCHEMA", "CASCADE", NULL};
+ {"WITH SCHEMA", "CASCADE", "VERSION", NULL};
COMPLETE_WITH_LIST(list_CREATE_EXTENSION);
}
+ /* CREATE EXTENSION <name> VERSION */
+ else if (pg_strcasecmp(prev4_wd, "CREATE") == 0 &&
+ pg_strcasecmp(prev3_wd, "EXTENSION") == 0 &&
+ pg_strcasecmp(prev_wd, "VERSION") == 0)
+ {
+ completion_info_charp = prev2_wd;
+ COMPLETE_WITH_QUERY(Query_for_list_of_available_extension_versions);
+ }
/* CREATE FOREIGN */
else if (pg_strcasecmp(prev2_wd, "CREATE") == 0 &&