Skip to content

Commit 0fbfb65

Browse files
committed
psql: publication/subscription tab completion fixes
1 parent c079673 commit 0fbfb65

File tree

1 file changed

+35
-15
lines changed

1 file changed

+35
-15
lines changed

src/bin/psql/tab-complete.c

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1514,33 +1514,53 @@ psql_completion(const char *text, int start, int end)
15141514
else
15151515
COMPLETE_WITH_FUNCTION_ARG(prev2_wd);
15161516
}
1517-
/* ALTER PUBLICATION <name> ...*/
1518-
else if (Matches3("ALTER","PUBLICATION",MatchAny))
1517+
/* ALTER PUBLICATION <name> */
1518+
else if (Matches3("ALTER", "PUBLICATION", MatchAny))
15191519
{
1520-
COMPLETE_WITH_LIST6("WITH (", "ADD TABLE", "SET TABLE", "DROP TABLE",
1521-
"OWNER TO", "RENAME TO");
1520+
COMPLETE_WITH_LIST5("ADD TABLE", "DROP TABLE", "OWNER TO", "RENAME TO", "SET");
15221521
}
1523-
/* ALTER PUBLICATION <name> .. SET ( ... */
1524-
else if (HeadMatches3("ALTER", "PUBLICATION",MatchAny) && TailMatches2("SET", "("))
1522+
/* ALTER PUBLICATION <name> SET */
1523+
else if (Matches4("ALTER", "PUBLICATION", MatchAny, "SET"))
1524+
{
1525+
COMPLETE_WITH_LIST2("(", "TABLE");
1526+
}
1527+
/* ALTER PUBLICATION <name> SET ( */
1528+
else if (HeadMatches3("ALTER", "PUBLICATION", MatchAny) && TailMatches2("SET", "("))
15251529
{
15261530
COMPLETE_WITH_CONST("publish");
15271531
}
1528-
/* ALTER SUBSCRIPTION <name> ... */
1529-
else if (Matches3("ALTER","SUBSCRIPTION",MatchAny))
1532+
/* ALTER SUBSCRIPTION <name> */
1533+
else if (Matches3("ALTER", "SUBSCRIPTION", MatchAny))
1534+
{
1535+
COMPLETE_WITH_LIST7("CONNECTION", "ENABLE", "DISABLE", "OWNER TO",
1536+
"RENAME TO", "REFRESH PUBLICATION", "SET");
1537+
}
1538+
/* ALTER SUBSCRIPTION <name> REFRESH PUBLICATION */
1539+
else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) &&
1540+
TailMatches2("REFRESH", "PUBLICATION"))
15301541
{
1531-
COMPLETE_WITH_LIST8("SET (", "CONNECTION", "SET PUBLICATION", "ENABLE",
1532-
"DISABLE", "OWNER TO", "RENAME TO", "REFRESH PUBLICATION WITH (");
1542+
COMPLETE_WITH_CONST("WITH (");
15331543
}
1534-
/* ALTER SUBSCRIPTION <name> REFRESH PUBLICATION WITH ( ... */
1544+
/* ALTER SUBSCRIPTION <name> REFRESH PUBLICATION WITH ( */
15351545
else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) &&
15361546
TailMatches4("REFRESH", "PUBLICATION", "WITH", "("))
15371547
{
15381548
COMPLETE_WITH_CONST("copy_data");
15391549
}
1540-
/* ALTER SUBSCRIPTION <name> .. SET ( ... */
1550+
/* ALTER SUBSCRIPTION <name> SET */
1551+
else if (Matches4("ALTER", "SUBSCRIPTION", MatchAny, "SET"))
1552+
{
1553+
COMPLETE_WITH_LIST2("(", "PUBLICATION");
1554+
}
1555+
/* ALTER SUBSCRIPTION <name> SET ( */
15411556
else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches2("SET", "("))
15421557
{
1543-
COMPLETE_WITH_CONST("slot_name");
1558+
COMPLETE_WITH_LIST2("slot_name", "synchronous_commit");
1559+
}
1560+
/* ALTER SUBSCRIPTION <name> SET PUBLICATION */
1561+
else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) && TailMatches2("SET", "PUBLICATION"))
1562+
{
1563+
/* complete with nothing here as this refers to remote publications */
15441564
}
15451565
/* ALTER SCHEMA <name> */
15461566
else if (Matches3("ALTER", "SCHEMA", MatchAny))
@@ -2458,8 +2478,8 @@ psql_completion(const char *text, int start, int end)
24582478
COMPLETE_WITH_CONST("WITH (");
24592479
/* Complete "CREATE SUBSCRIPTION <name> ... WITH ( <opt>" */
24602480
else if (HeadMatches2("CREATE", "SUBSCRIPTION") && TailMatches2("WITH", "("))
2461-
COMPLETE_WITH_LIST5("enabled", "create_slot", "slot_name",
2462-
"copy_data", "connect");
2481+
COMPLETE_WITH_LIST6("copy_data", "connect", "create_slot", "enabled",
2482+
"slot_name", "synchronous_commit");
24632483

24642484
/* CREATE TRIGGER --- is allowed inside CREATE SCHEMA, so use TailMatches */
24652485
/* complete CREATE TRIGGER <name> with BEFORE,AFTER,INSTEAD OF */

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