From 0a04472364c2905bb9bd21b698542815591c4e30 Mon Sep 17 00:00:00 2001 From: Sho Ito Date: Sun, 8 Nov 2026 16:04:17 -0500 Subject: [PATCH] psql: Fix REPACK index completion after a column list Skip the parenthesized column list when finding the relation for USING INDEX completion. Otherwise the relation query finds nothing and generic INDEX completion offers indexes from unrelated tables. Also complete USING INDEX after a closed column list. --- src/bin/psql/tab-complete.in.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c index 96de78cd..e631948d 100644 --- a/src/bin/psql/tab-complete.in.c +++ b/src/bin/psql/tab-complete.in.c @@ -5129,9 +5129,10 @@ match_previous_words(int pattern_id, else if (Matches("REPACK", "(*)")) COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_clusterables, "USING INDEX"); - else if (Matches("REPACK", MatchAnyExcept("("))) - COMPLETE_WITH("USING INDEX"); - else if (Matches("REPACK", "(*)", MatchAnyExcept("("))) + else if (Matches("REPACK", MatchAnyExcept("(")) || + Matches("REPACK", "(*)", MatchAnyExcept("(")) || + Matches("REPACK", MatchAny, "(*)") || + Matches("REPACK", "(*)", MatchAny, "(*)")) COMPLETE_WITH("USING INDEX"); else if (Matches("REPACK", MatchAny, "USING", "INDEX") || Matches("REPACK", "(*)", MatchAny, "USING", "INDEX")) @@ -5139,14 +5140,10 @@ match_previous_words(int pattern_id, set_completion_reference(prev3_wd); COMPLETE_WITH_SCHEMA_QUERY(Query_for_index_of_table); } - - /* - * Complete ... [ (*) ] USING INDEX, with a list of indexes for - * . - */ - else if (TailMatches(MatchAny, "USING", "INDEX")) + else if (Matches("REPACK", MatchAny, "(*)", "USING", "INDEX") || + Matches("REPACK", "(*)", MatchAny, "(*)", "USING", "INDEX")) { - set_completion_reference(prev3_wd); + set_completion_reference(prev4_wd); COMPLETE_WITH_SCHEMA_QUERY(Query_for_index_of_table); } else if (HeadMatches("REPACK", "(*") &&