mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-15 02:46:59 +08:00
psql: Fix tab completion for VACUUM option values.
Commit 8a3e4011 introduced tab completion for the ONLY option of VACUUM and ANALYZE, along with some code simplification using MatchAnyN. However, it caused a regression in tab completion for VACUUM option values. For example, neither ON nor OFF was suggested after "VACUUM (VERBOSE". In addition, the ONLY keyword was not suggested immediately after a completed option list. Backpatch to v18. Author: Yugo Nagata <nagata@sraoss.co.jp> Discussion: https://postgr.es/m/20251223021509.19bba68ecbbc70c9f983c2b4@sraoss.co.jp Backpatch-through: 18
This commit is contained in:
@ -3116,6 +3116,9 @@ match_previous_words(int pattern_id,
|
||||
else if (TailMatches("VERBOSE|SKIP_LOCKED"))
|
||||
COMPLETE_WITH("ON", "OFF");
|
||||
}
|
||||
else if (Matches("ANALYZE", "(*)"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_analyzables,
|
||||
"ONLY");
|
||||
else if (Matches("ANALYZE", MatchAnyN, "("))
|
||||
/* "ANALYZE (" should be caught above, so assume we want columns */
|
||||
COMPLETE_WITH_ATTR(prev2_wd);
|
||||
@ -5169,24 +5172,6 @@ match_previous_words(int pattern_id,
|
||||
"VERBOSE",
|
||||
"ANALYZE",
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", "FULL"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"FREEZE",
|
||||
"VERBOSE",
|
||||
"ANALYZE",
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", MatchAnyN, "FREEZE"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"VERBOSE",
|
||||
"ANALYZE",
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", MatchAnyN, "VERBOSE"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"ANALYZE",
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", MatchAnyN, "ANALYZE"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"ONLY");
|
||||
else if (HeadMatches("VACUUM", "(*") &&
|
||||
!HeadMatches("VACUUM", "(*)"))
|
||||
{
|
||||
@ -5206,6 +5191,27 @@ match_previous_words(int pattern_id,
|
||||
else if (TailMatches("INDEX_CLEANUP"))
|
||||
COMPLETE_WITH("AUTO", "ON", "OFF");
|
||||
}
|
||||
else if (Matches("VACUUM", "(*)"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", "FULL"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"FREEZE",
|
||||
"VERBOSE",
|
||||
"ANALYZE",
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", MatchAnyN, "FREEZE"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"VERBOSE",
|
||||
"ANALYZE",
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", MatchAnyN, "VERBOSE"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"ANALYZE",
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", MatchAnyN, "ANALYZE"))
|
||||
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
|
||||
"ONLY");
|
||||
else if (Matches("VACUUM", MatchAnyN, "("))
|
||||
/* "VACUUM (" should be caught above, so assume we want columns */
|
||||
COMPLETE_WITH_ATTR(prev2_wd);
|
||||
|
||||
Reference in New Issue
Block a user