From a8798c8ecfa0fab200bfda739e0d94f73a76a506 Mon Sep 17 00:00:00 2001
From: Sho Ito <i.sho.0628@gmail.com>
Date: Fri, 23 Oct 2026 22:17:21 +0900
Subject: [PATCH v1] Fix tab completion for REINDEX SYSTEM

The backend rejects CONCURRENTLY with REINDEX SYSTEM, but psql offers
it as a completion. Complete only database names after SYSTEM, with or
without parenthesized options, while retaining CONCURRENTLY for
supported REINDEX forms.

Also stop completing database names after a manually entered REINDEX
SYSTEM CONCURRENTLY.
---
 src/bin/psql/tab-complete.in.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index f86684e..3cca6e3 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -5094,8 +5094,11 @@ match_previous_words(int pattern_id,
 			 Matches("REINDEX", "(*)", "SCHEMA"))
 		COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_schemas,
 								 "CONCURRENTLY");
-	else if (Matches("REINDEX", "SYSTEM|DATABASE") ||
-			 Matches("REINDEX", "(*)", "SYSTEM|DATABASE"))
+	else if (Matches("REINDEX", "SYSTEM") ||
+			 Matches("REINDEX", "(*)", "SYSTEM"))
+		COMPLETE_WITH_QUERY(Query_for_list_of_databases);
+	else if (Matches("REINDEX", "DATABASE") ||
+			 Matches("REINDEX", "(*)", "DATABASE"))
 		COMPLETE_WITH_QUERY_PLUS(Query_for_list_of_databases,
 								 "CONCURRENTLY");
 	else if (Matches("REINDEX", "TABLE", "CONCURRENTLY") ||
@@ -5107,8 +5110,8 @@ match_previous_words(int pattern_id,
 	else if (Matches("REINDEX", "SCHEMA", "CONCURRENTLY") ||
 			 Matches("REINDEX", "(*)", "SCHEMA", "CONCURRENTLY"))
 		COMPLETE_WITH_QUERY(Query_for_list_of_schemas);
-	else if (Matches("REINDEX", "SYSTEM|DATABASE", "CONCURRENTLY") ||
-			 Matches("REINDEX", "(*)", "SYSTEM|DATABASE", "CONCURRENTLY"))
+	else if (Matches("REINDEX", "DATABASE", "CONCURRENTLY") ||
+			 Matches("REINDEX", "(*)", "DATABASE", "CONCURRENTLY"))
 		COMPLETE_WITH_QUERY(Query_for_list_of_databases);
 	else if (HeadMatches("REINDEX", "(*") &&
 			 !HeadMatches("REINDEX", "(*)"))
-- 
2.50.1 (Apple Git-155)

