From a8f095e8a2ea8256df529f3ce14529fb4ade8270 Mon Sep 17 00:00:00 2001
From: Sho Ito <i.sho.0628@gmail.com>
Date: Sun, 8 Nov 2026 16:04:47 -0500
Subject: [PATCH] psql: Complete INDEX after REPACK USING

Handle USING before generic table-name patterns so REPACK USING does not insert a second USING INDEX. Support intermediate USING after an optional option list, table name, or column list.
---
 src/bin/psql/tab-complete.in.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index 96de78cd..8f6c8f48 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -5129,6 +5129,13 @@ 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", "USING") ||
+			 Matches("REPACK", "(*)", "USING") ||
+			 Matches("REPACK", MatchAny, "USING") ||
+			 Matches("REPACK", "(*)", MatchAny, "USING") ||
+			 Matches("REPACK", MatchAny, "(*)", "USING") ||
+			 Matches("REPACK", "(*)", MatchAny, "(*)", "USING"))
+		COMPLETE_WITH("INDEX");
 	else if (Matches("REPACK", MatchAnyExcept("(")))
 		COMPLETE_WITH("USING INDEX");
 	else if (Matches("REPACK", "(*)", MatchAnyExcept("(")))
