On Mon, Aug 17, 2020 at 02:15:34PM +0900, Michael Paquier wrote: > Sounds fine to me as well. The LIMIT TO and EXCEPT clauses are > optional, so using TailMatches() looks fine. > > + else if (TailMatches("FROM", "SERVER", MatchAny, "INTO", MatchAny)) > + COMPLETE_WITH("OPTIONS") > Shouldn't you complete with "OPTIONS (" here? > > It would be good to complete with "FROM SERVER" after specifying > EXCEPT or LIMIT TO, you can just use "(*)" to include the list of > tables in the list of elements checked.
I have complete the patch with those parts as per the attached. If there are any objections or extra opinions, please feel free. -- Michael
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index f41785f11c..9c6f5ecb6a 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -3293,6 +3293,17 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH("FOREIGN SCHEMA"); else if (Matches("IMPORT", "FOREIGN")) COMPLETE_WITH("SCHEMA"); + else if (Matches("IMPORT", "FOREIGN", "SCHEMA", MatchAny)) + COMPLETE_WITH("EXCEPT (", "FROM SERVER", "LIMIT TO ("); + else if (TailMatches("LIMIT", "TO", "(*)") || + TailMatches("EXCEPT", "(*)")) + COMPLETE_WITH("FROM SERVER"); + else if (TailMatches("FROM", "SERVER", MatchAny)) + COMPLETE_WITH("INTO"); + else if (TailMatches("FROM", "SERVER", MatchAny, "INTO")) + COMPLETE_WITH_QUERY(Query_for_list_of_schemas); + else if (TailMatches("FROM", "SERVER", MatchAny, "INTO", MatchAny)) + COMPLETE_WITH("OPTIONS ("); /* INSERT --- can be inside EXPLAIN, RULE, etc */ /* Complete INSERT with "INTO" */
signature.asc
Description: PGP signature