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

Lines changed: 33 additions & 2 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy