From a8798c8ecfa0fab200bfda739e0d94f73a76a506 Mon Sep 17 00:00:00 2001 From: Sho Ito 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)