pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: bt22kawamotok <bt22kawamotok@oss.nttdata.com>
To: Shinya Kato <Shinya11.Kato@oss.nttdata.com>
Cc: pgsql-hackers@postgresql.org
Subject: Re: [PATCH]Feature improvement for MERGE tab completion
Date: Wed, 14 Sep 2022 14:08:07 +0900
Message-ID: <e4993887d2896d5a334d62257fe7f25b@oss.nttdata.com> (raw)
In-Reply-To: <5b2e2880da33f6356931beb5c0d68c84@oss.nttdata.com>
References: <9f1ad2a87a58cd5e7d64f3993130958d@oss.nttdata.com>
	<359a46c295eae938d84552c11818ab62@oss.nttdata.com>
	<c5730fb146c8ded48d537724e1456bfb@oss.nttdata.com>
	<abe74f1c1d4e83df6e71cf854c7ea56b@oss.nttdata.com>
	<7d7eef0f596e449746766ff4fb7c9061@oss.nttdata.com>
	<6c943aa7b6064b56e7ebeb901f7c24b4@oss.nttdata.com>
	<5b2e2880da33f6356931beb5c0d68c84@oss.nttdata.com>

> When I tried to apply this patch, I got the following warning, please 
> fix it.
> Other than that, I think everything is fine.
> 
> $ git apply fix_tab_completion_merge_v4.patch
> fix_tab_completion_merge_v4.patch:38: trailing whitespace.
>         else if (TailMatches("USING", MatchAny, "ON", MatchAny) ||
> fix_tab_completion_merge_v4.patch:39: indent with spaces.
>                  TailMatches("USING", MatchAny, "AS", MatchAny, "ON",
> MatchAny) ||
> fix_tab_completion_merge_v4.patch:40: indent with spaces.
>                  TailMatches("USING", MatchAny, MatchAny, "ON", 
> MatchAny))
> fix_tab_completion_merge_v4.patch:53: trailing whitespace.
>         else if (TailMatches("WHEN", "MATCHED") ||
> warning: 4 lines add whitespace errors.

Thanks for reviewing.

I fixed the problem and make patch v5.
Please check it.

Regards,

Kotaro Kawamoto

Attachments:

fix_tab_completion_merge_v5.patch (text/x-diff, 4.7K) download diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 62a39779b9..a0332c76a4 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -4063,23 +4063,28 @@ psql_completion(const char *text, int start, int end) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_mergetargets); else if (TailMatches("MERGE", "INTO", MatchAny)) COMPLETE_WITH("USING", "AS"); - else if (TailMatches("MERGE", "INTO", MatchAny, "USING")) + else if (TailMatches("MERGE", "INTO", MatchAny, "USING") || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING") || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING")) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); /* with [AS] alias */ - else if (TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny)) + else if (TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, MatchAnyExcept("AS"))) COMPLETE_WITH("USING"); - else if (TailMatches("MERGE", "INTO", MatchAny, MatchAny)) - COMPLETE_WITH("USING"); - else if (TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING")) - COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); - else if (TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING")) + else if (TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING") || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING")) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables); + else if (TailMatches("MERGE", "INTO", MatchAny, "USING", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING", MatchAny)) + COMPLETE_WITH("AS", "ON"); /* ON */ - else if (TailMatches("MERGE", "INTO", MatchAny, "USING", MatchAny)) - COMPLETE_WITH("ON"); - else if (TailMatches("INTO", MatchAny, "AS", MatchAny, "USING", MatchAny, "AS", MatchAny)) - COMPLETE_WITH("ON"); - else if (TailMatches("INTO", MatchAny, MatchAny, "USING", MatchAny, MatchAny)) + else if (TailMatches("MERGE", "INTO", MatchAny, "USING", MatchAny, MatchAnyExcept("ON|AS")) || + TailMatches("MERGE", "INTO", MatchAny, "USING", MatchAny, "AS", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING", MatchAny, MatchAnyExcept("ON|AS")) || + TailMatches("MERGE", "INTO", MatchAny, MatchAny, "USING", MatchAny, "AS", MatchAny) || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING", MatchAny, MatchAnyExcept("ON|AS")) || + TailMatches("MERGE", "INTO", MatchAny, "AS", MatchAny, "USING", MatchAny, "AS", MatchAny)) COMPLETE_WITH("ON"); /* ON condition */ else if (TailMatches("INTO", MatchAny, "USING", MatchAny, "ON")) @@ -4089,18 +4094,25 @@ psql_completion(const char *text, int start, int end) else if (TailMatches("INTO", MatchAny, MatchAny, "USING", MatchAny, MatchAny, "ON")) COMPLETE_WITH_ATTR(prev6_wd); /* WHEN [NOT] MATCHED */ - else if (TailMatches("USING", MatchAny, "ON", MatchAny)) + else if (TailMatches("USING", MatchAny, "ON", MatchAny) || + TailMatches("USING", MatchAny, "ON", MatchAny, MatchAnyExcept("When"), MatchAnyExcept("When")) || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny) || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny, MatchAnyExcept("When"), MatchAnyExcept("When")) || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny) || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny, MatchAnyExcept("When"), MatchAnyExcept("When"))) COMPLETE_WITH("WHEN MATCHED", "WHEN NOT MATCHED"); - else if (TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny)) - 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("WHEN", "MATCHED")) - COMPLETE_WITH("THEN", "AND"); - else if (TailMatches("WHEN", "NOT", "MATCHED")) + else if (TailMatches("USING", MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, "ON", MatchAny, MatchAny, MatchAny, "WHEN") || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, "AS", MatchAny, "ON", MatchAny, MatchAny, MatchAny, "WHEN") || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny, "WHEN") || + TailMatches("USING", MatchAny, MatchAny, "ON", MatchAny, MatchAny, MatchAny, "WHEN")) + COMPLETE_WITH("MATCHED", "NOT MATCHED"); + else if (TailMatches("WHEN", "MATCHED") || + 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");

view thread (21+ messages)  latest in thread

Message-ID: <e4993887d2896d5a334d62257fe7f25b@oss.nttdata.com>
Permalink:  ../e4993887d2896d5a334d62257fe7f25b@oss.nttdata.com/
Also on:    postgresql.org/message-id/e4993887d2896d5a334d62257fe7f25b@oss.nttdata.com

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: bt22kawamotok@oss.nttdata.com, Shinya11.Kato@oss.nttdata.com
  Subject: Re: [PATCH]Feature improvement for MERGE tab completion
  In-Reply-To: <e4993887d2896d5a334d62257fe7f25b@oss.nttdata.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox