diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 31105d8..b48927c 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -1562,6 +1562,24 @@ psql_completion(const char *text, int start, int end) { /* complete with nothing here as this refers to remote publications */ } + /* ALTER SUBSCRIPTION SET PUBLICATION */ + else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) && + TailMatches3("SET", "PUBLICATION", MatchAny)) + { + COMPLETE_WITH_LIST2("REFRESH", "SKIP REFRESH"); + } + /* ALTER SUBSCRIPTION SET PUBLICATION REFRESH */ + else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) && + TailMatches4("SET", "PUBLICATION", MatchAny, "REFRESH")) + { + COMPLETE_WITH_CONST("WITH ("); + } + /* ALTER SUBSCRIPTION SET PUBLICATION REFRESH WITH ( */ + else if (HeadMatches3("ALTER", "SUBSCRIPTION", MatchAny) && + TailMatches6("SET", "PUBLICATION", MatchAny, "REFRESH", "WITH", "(")) + { + COMPLETE_WITH_CONST("copy_data"); + } /* ALTER SCHEMA */ else if (Matches3("ALTER", "SCHEMA", MatchAny)) COMPLETE_WITH_LIST2("OWNER TO", "RENAME TO"); @@ -2387,6 +2405,10 @@ psql_completion(const char *text, int start, int end) /* Complete "CREATE PUBLICATION FOR TABLE " */ else if (Matches4("CREATE", "PUBLICATION", MatchAny, "FOR TABLE")) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); + /* Complete "CREATE PUBLICATION [...]" */ + else if (HeadMatches3("CREATE", "PUBLICATION", MatchAny) && + (TailMatches3("FOR", "TABLE", MatchAny) || TailMatches3("FOR", "ALL", "TABLES"))) + COMPLETE_WITH_CONST("WITH ("); /* Complete "CREATE PUBLICATION [...] WITH" */ else if (HeadMatches2("CREATE", "PUBLICATION") && TailMatches2("WITH", "(")) COMPLETE_WITH_CONST("publish");