From 8cd6e5334318f513f654f3b2ed727e22a9933b32 Mon Sep 17 00:00:00 2001 From: Ajin Cherian Date: Mon, 22 Nov 2021 20:20:08 -0500 Subject: [PATCH v41 2/6] PS - Add tab auto-complete support for the Row Filter WHERE. e.g. "CREATE PUBLICATION FOR TABLE " - complete with "WHERE (". "ALTER PUBLICATION ADD|SET TABLE " - complete with "WHERE (". Author: Peter Smith --- src/bin/psql/tab-complete.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 4f724e4..8c7fe7d 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -1654,6 +1654,14 @@ psql_completion(const char *text, int start, int end) /* ALTER PUBLICATION SET */ else if (Matches("ALTER", "PUBLICATION", MatchAny, "SET")) COMPLETE_WITH("(", "ALL TABLES IN SCHEMA", "TABLE"); + /* ALTER PUBLICATION SET TABLE */ + /* ALTER PUBLICATION ADD TABLE */ + else if (Matches("ALTER", "PUBLICATION", MatchAny, "SET|ADD", "TABLE", MatchAny)) + COMPLETE_WITH("WHERE ("); + /* "ALTER PUBLICATION SET TABLE WHERE (" - complete with table attributes */ + /* "ALTER PUBLICATION ADD TABLE WHERE (" - complete with table attributes */ + else if (HeadMatches("ALTER", "PUBLICATION", MatchAny) && TailMatches("WHERE", "(")) + COMPLETE_WITH_ATTR(prev3_wd, ""); else if (Matches("ALTER", "PUBLICATION", MatchAny, "ADD|DROP|SET", "ALL", "TABLES", "IN", "SCHEMA")) COMPLETE_WITH_QUERY(Query_for_list_of_schemas " AND nspname != 'pg_catalog' " @@ -2757,10 +2765,13 @@ psql_completion(const char *text, int start, int end) else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "ALL", "TABLES")) COMPLETE_WITH("IN SCHEMA", "WITH ("); else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLE", MatchAny)) - COMPLETE_WITH("WITH ("); + COMPLETE_WITH("WHERE (", "WITH ("); /* Complete "CREATE PUBLICATION FOR TABLE" with ", ..." */ else if (Matches("CREATE", "PUBLICATION", MatchAny, "FOR", "TABLE")) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables, NULL); + /* "CREATE PUBLICATION FOR TABLE WHERE (" - complete with table attributes */ + else if (HeadMatches("CREATE", "PUBLICATION", MatchAny) && TailMatches("WHERE", "(")) + COMPLETE_WITH_ATTR(prev3_wd, ""); /* * Complete "CREATE PUBLICATION FOR ALL TABLES IN SCHEMA , -- 1.8.3.1