On Mon, Dec 22, 2025 at 7:37 AM Yugo Nagata <[email protected]> wrote: > > On Mon, 24 Nov 2025 15:32:36 -0800 > Masahiko Sawada <[email protected]> wrote: > > I'm sorry for the late response. > > > Thank you for updating the patch! I have one question about the > > following change: > > > > + /* Complete COPY <sth> FROM|TO [PROGRAM] filename WITH ( */ > > + else if (HeadMatches("COPY|\\copy", MatchAny, "FROM|TO", > > MatchAnyExcept("PROGRAM"), "WITH", "(") || > > + HeadMatches("COPY|\\copy", MatchAny, "FROM|TO", > > "PROGRAM", MatchAny, "WITH", "(")) > > + { > > + if (!HeadMatches("COPY|\\copy", MatchAny, "FROM|TO", > > MatchAnyExcept("PROGRAM"), "WITH", "(*)") && > > + !HeadMatches("COPY|\\copy", MatchAny, "FROM|TO", > > "PROGRAM", MatchAny, "WITH", "(*)")) > > + { > > > > Given get_previous_words() treats a completed parenthesized option > > list as one word, why is the later if statement necessary? In the > > situation where the condition of the later if statement becomes false, > > the condition of the first 'else if' statement should have become > > false, no? > > First of all, the condition of the outer 'else if' was wrong. > What I actually meant was: > > + /* Complete COPY <sth> FROM|TO [PROGRAM] filename WITH ( */ > + else if (HeadMatches("COPY|\\copy", MatchAny, "FROM|TO", > MatchAnyExcept("PROGRAM"), "WITH", "(*") || > + HeadMatches("COPY|\\copy", MatchAny, "FROM|TO", > "PROGRAM", MatchAny, "WITH", "(*")) > > That is, the last word should be "(*" instead of "(". > I've attached an updated patch reflecting this fix. > > This patterm is mimic how option lists are handled in the other places. > For example: > > 3160 else if (HeadMatches("ANALYZE", "(*") && > 3161 !HeadMatches("ANALYZE", "(*)")) > > This prevents option completion after a completed paranthesized option list. > For example, after "ANALYZE (VERVOSE ON) tbl (", no ANALYZE options are > suggested, > instead column names of the table "tbl" are suggested. > > Similarly, this change prevents completion of COPY options after > "COPY tbl FROM stdin WITH ( FORMAT text ) WHERE (", for example.
Thank you for updating the patch and the explanation! I agree with these changes, so I've pushed the patch. Also, this commit fest item is now marked as 'Committed'. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com
