Skip to content

Commit c525f74

Browse files
committed
Improve tab-completion of DDL for publication and subscription.
Author: Masahiko Sawada Discussion: http://postgr.es/m/CAD21AoC32YgtateNqTFXzTJmHHe6hXs4cpJTND3n-Ts8f-aMqw@mail.gmail.com
1 parent 4a8bc39 commit c525f74

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

src/bin/psql/tab-complete.c

+19-5
Original file line numberDiff line numberDiff line change
@@ -1501,7 +1501,7 @@ psql_completion(const char *text, int start, int end)
15011501
/* ALTER PUBLICATION <name> ...*/
15021502
else if (Matches3("ALTER","PUBLICATION",MatchAny))
15031503
{
1504-
COMPLETE_WITH_LIST6("WITH", "ADD TABLE", "SET TABLE", "DROP TABLE",
1504+
COMPLETE_WITH_LIST6("WITH (", "ADD TABLE", "SET TABLE", "DROP TABLE",
15051505
"OWNER TO", "RENAME TO");
15061506
}
15071507
/* ALTER PUBLICATION <name> .. WITH ( ... */
@@ -1513,9 +1513,16 @@ psql_completion(const char *text, int start, int end)
15131513
/* ALTER SUBSCRIPTION <name> ... */
15141514
else if (Matches3("ALTER","SUBSCRIPTION",MatchAny))
15151515
{
1516-
COMPLETE_WITH_LIST7("WITH", "CONNECTION", "SET PUBLICATION", "ENABLE",
1517-
"DISABLE", "OWNER TO", "RENAME TO");
1516+
COMPLETE_WITH_LIST8("WITH (", "CONNECTION", "SET PUBLICATION", "ENABLE",
1517+
"DISABLE", "OWNER TO", "RENAME TO", "REFRESH PUBLICATION WITH (");
15181518
}
1519+
/* ALTER SUBSCRIPTION <name> REFRESH PUBLICATION WITH ( ... */
1520+
else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) &&
1521+
TailMatches4("REFRESH", "PUBLICATION", "WITH", "("))
1522+
{
1523+
COMPLETE_WITH_LIST2("COPY DATA", "NOCOPY DATA");
1524+
}
1525+
/* ALTER SUBSCRIPTION <name> .. WITH ( ... */
15191526
else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches2("WITH", "("))
15201527
{
15211528
COMPLETE_WITH_CONST("SLOT NAME");
@@ -2419,10 +2426,13 @@ psql_completion(const char *text, int start, int end)
24192426
{
24202427
/* complete with nothing here as this refers to remote publications */
24212428
}
2429+
else if (HeadMatches2("CREATE", "SUBSCRIPTION") && TailMatches2("PUBLICATION", MatchAny))
2430+
COMPLETE_WITH_CONST("WITH (");
24222431
/* Complete "CREATE SUBSCRIPTION <name> ... WITH ( <opt>" */
24232432
else if (HeadMatches2("CREATE", "SUBSCRIPTION") && TailMatches2("WITH", "("))
2424-
COMPLETE_WITH_LIST5("ENABLED", "DISABLED", "CREATE SLOT",
2425-
"NOCREATE SLOT", "SLOT NAME");
2433+
COMPLETE_WITH_LIST8("ENABLED", "DISABLED", "CREATE SLOT",
2434+
"NOCREATE SLOT", "SLOT NAME", "COPY DATA", "NOCOPY DATA",
2435+
"NOCONNECT");
24262436

24272437
/* CREATE TRIGGER --- is allowed inside CREATE SCHEMA, so use TailMatches */
24282438
/* complete CREATE TRIGGER <name> with BEFORE,AFTER,INSTEAD OF */
@@ -2681,6 +2691,10 @@ psql_completion(const char *text, int start, int end)
26812691
else if (Matches5("DROP", "RULE", MatchAny, "ON", MatchAny))
26822692
COMPLETE_WITH_LIST2("CASCADE", "RESTRICT");
26832693

2694+
/* DROP SUBSCRIPTION */
2695+
else if (Matches3("DROP", "SUBSCRIPTION", MatchAny))
2696+
COMPLETE_WITH_LIST2("DROP SLOT", "NODROP SLOT");
2697+
26842698
/* EXECUTE */
26852699
else if (Matches1("EXECUTE"))
26862700
COMPLETE_WITH_QUERY(Query_for_list_of_prepared_statements);

0 commit comments

Comments
 (0)