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
