Skip to content

Commit 0cd6d3b

Browse files
committed
Improve psql tab completion for transforms, domains and sequences
The following improvements are done: - Addition of some tab completion for CREATE DOMAIN. - Addition of some tab completion for CREATE TRANSFORM. - Addition of type completion for CREATE SEQUENCE AS. Author: Ken Kato Reviewed-by: Kyotaro Horiguchi, Michael Paquier Discussion: https://postgr.es/m/8d370135aef066659eef8e8fbfa6315b@oss.nttdata.com
1 parent 276517a commit 0cd6d3b

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

src/bin/psql/tab-complete.c

+33-2
Original file line numberDiff line numberDiff line change
@@ -2582,6 +2582,17 @@ psql_completion(const char *text, int start, int end)
25822582
else if (Matches("CREATE", "DATABASE", MatchAny, "TEMPLATE"))
25832583
COMPLETE_WITH_QUERY(Query_for_list_of_template_databases);
25842584

2585+
/* CREATE DOMAIN */
2586+
else if (Matches("CREATE", "DOMAIN", MatchAny))
2587+
COMPLETE_WITH("AS");
2588+
else if (Matches("CREATE", "DOMAIN", MatchAny, "AS"))
2589+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
2590+
else if (Matches("CREATE", "DOMAIN", MatchAny, "AS", MatchAny))
2591+
COMPLETE_WITH("COLLATE", "DEFAULT", "CONSTRAINT",
2592+
"NOT NULL", "NULL", "CHECK (");
2593+
else if (Matches("CREATE", "DOMAIN", MatchAny, "COLLATE"))
2594+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_collations, NULL);
2595+
25852596
/* CREATE EXTENSION */
25862597
/* Complete with available extensions rather than installed ones. */
25872598
else if (Matches("CREATE", "EXTENSION"))
@@ -2805,8 +2816,11 @@ psql_completion(const char *text, int start, int end)
28052816
/* CREATE SEQUENCE --- is allowed inside CREATE SCHEMA, so use TailMatches */
28062817
else if (TailMatches("CREATE", "SEQUENCE", MatchAny) ||
28072818
TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny))
2808-
COMPLETE_WITH("INCREMENT BY", "MINVALUE", "MAXVALUE", "NO", "CACHE",
2809-
"CYCLE", "OWNED BY", "START WITH");
2819+
COMPLETE_WITH("AS", "INCREMENT BY", "MINVALUE", "MAXVALUE", "NO",
2820+
"CACHE", "CYCLE", "OWNED BY", "START WITH");
2821+
else if (TailMatches("CREATE", "SEQUENCE", MatchAny, "AS") ||
2822+
TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny, "AS"))
2823+
COMPLETE_WITH_CS("smallint", "integer", "bigint");
28102824
else if (TailMatches("CREATE", "SEQUENCE", MatchAny, "NO") ||
28112825
TailMatches("CREATE", "TEMP|TEMPORARY", "SEQUENCE", MatchAny, "NO"))
28122826
COMPLETE_WITH("MINVALUE", "MAXVALUE", "CYCLE");
@@ -2882,6 +2896,23 @@ psql_completion(const char *text, int start, int end)
28822896
else if (Matches("CREATE", "TEXT", "SEARCH", "CONFIGURATION|DICTIONARY|PARSER|TEMPLATE", MatchAny))
28832897
COMPLETE_WITH("(");
28842898

2899+
/* CREATE TRANSFORM */
2900+
else if (Matches("CREATE", "TRANSFORM") ||
2901+
Matches("CREATE", "OR", "REPLACE", "TRANSFORM"))
2902+
COMPLETE_WITH("FOR");
2903+
else if (Matches("CREATE", "TRANSFORM", "FOR") ||
2904+
Matches("CREATE","OR", "REPLACE", "TRANSFORM", "FOR"))
2905+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_datatypes, NULL);
2906+
else if (Matches("CREATE", "TRANSFORM", "FOR", MatchAny) ||
2907+
Matches("CREATE", "OR", "REPLACE", "TRANSFORM", "FOR", MatchAny))
2908+
COMPLETE_WITH("LANGUAGE");
2909+
else if (Matches("CREATE", "TRANSFORM", "FOR", MatchAny, "LANGUAGE") ||
2910+
Matches("CREATE", "OR", "REPLACE", "TRANSFORM", "FOR", MatchAny, "LANGUAGE"))
2911+
{
2912+
completion_info_charp = prev2_wd;
2913+
COMPLETE_WITH_QUERY(Query_for_list_of_languages);
2914+
}
2915+
28852916
/* CREATE SUBSCRIPTION */
28862917
else if (Matches("CREATE", "SUBSCRIPTION", MatchAny))
28872918
COMPLETE_WITH("CONNECTION");

0 commit comments

Comments
 (0)