Thanks for updating! Compile errors have occurred, so can you fix them? And I think we can eliminate similar redundancies in MERGE tab completion and I would like you to fix them.For example, else if (TailMatches("WHEN", "MATCHED")) COMPLETE_WITH("THEN", "AND"); else if (TailMatches("WHEN", "NOT", "MATCHED")) COMPLETE_WITH("THEN", "AND"); above statement can be converted to the statement below. else if (TailMatches("WHEN", "MATCHED") || TailMatches("WHEN", "NOT", "MATCHED")) COMPLETE_WITH("THEN", "AND");
Sorry for making such a silly mistake. I create new path. Please reviewing. Kotaro Kawamoto
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 62a39779b9..c1e455fab1 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -4068,7 +4068,7 @@ psql_completion(const char *text, int start, int end) /* with [AS] alias */ else if (TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny)) COMPLETE_WITH("USING"); - else if (TailMatches("MERGE", "INTO", MatchAny, MatchAny)) + else if (TailMatches("MERGE", "INTO", MatchAny, MatchAny) && !TailMatches("AS")) COMPLETE_WITH("USING"); else if (TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING")) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); @@ -4095,12 +4095,16 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH("WHEN MATCHED", "WHEN NOT MATCHED"); else if (TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny)) COMPLETE_WITH("WHEN MATCHED", "WHEN NOT MATCHED"); + else if (TailMatches("USING", MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny, "WHEN")) + COMPLETE_WITH("MATCHED", "NOT MATCHED"); else if (TailMatches("WHEN", "MATCHED")) COMPLETE_WITH("THEN", "AND"); else if (TailMatches("WHEN", "NOT", "MATCHED")) COMPLETE_WITH("THEN", "AND"); else if (TailMatches("WHEN", "MATCHED", "THEN")) - COMPLETE_WITH("UPDATE", "DELETE"); + COMPLETE_WITH("UPDATE", "DELETE", "DO NOTHING"); else if (TailMatches("WHEN", "NOT", "MATCHED", "THEN")) COMPLETE_WITH("INSERT", "DO NOTHING");