summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2025-03-23 21:16:08 +0000
committerTom Lane2025-03-23 21:16:08 +0000
commit8a3e4011f02dd2789717c633e74fefdd3b648386 (patch)
tree4985e43e64a33361be908c32ad11fcc3ab4f69ef
parent2817525f0d56075e1f3a14c0dc6a180b337d8aed (diff)
psql: Add tab completion for VACUUM and ANALYZE ... ONLY option.
Improve psql's tab completion for VACUUM and ANALYZE by supporting the ONLY option introduced in 62ddf7ee9. In passing, simplify some of the VACUUM patterns by making use of MatchAnyN. Author: Umar Hayat <[email protected]> Reviewed-by: Vignesh C <[email protected]> Reviewed-by: Ilia Evdokimov <[email protected]> Discussion: https://postgr.es/m/CAD68Dp3L6yW_nWs+MWBs6s8tKLRzXaQdQgVRm4byZe0L-hRD8g@mail.gmail.com
-rw-r--r--src/bin/psql/tab-complete.in.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index 9a4d993e2bc..98951aef82c 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -3069,12 +3069,15 @@ match_previous_words(int pattern_id,
COMPLETE_WITH_QUERY(Query_for_list_of_roles);
/*
- * ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
- * ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ]
+ * ANALYZE [ ( option [, ...] ) ] [ [ ONLY ] table_and_columns [, ...] ]
+ * ANALYZE [ VERBOSE ] [ [ ONLY ] table_and_columns [, ...] ]
*/
else if (Matches("ANALYZE"))
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_analyzables,
- "VERBOSE");
+ "(", "VERBOSE", "ONLY");
+ else if (Matches("ANALYZE", "VERBOSE"))
+ COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_analyzables,
+ "ONLY");
else if (HeadMatches("ANALYZE", "(*") &&
!HeadMatches("ANALYZE", "(*)"))
{
@@ -5128,30 +5131,35 @@ match_previous_words(int pattern_id,
COMPLETE_WITH("OPTIONS");
/*
- * VACUUM [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
- * VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ table_and_columns [, ...] ]
+ * VACUUM [ ( option [, ...] ) ] [ [ ONLY ] table_and_columns [, ...] ]
+ * VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ [ ONLY ] table_and_columns [, ...] ]
*/
else if (Matches("VACUUM"))
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
+ "(",
"FULL",
"FREEZE",
+ "VERBOSE",
"ANALYZE",
- "VERBOSE");
+ "ONLY");
else if (Matches("VACUUM", "FULL"))
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
"FREEZE",
+ "VERBOSE",
"ANALYZE",
- "VERBOSE");
- else if (Matches("VACUUM", "FREEZE") ||
- Matches("VACUUM", "FULL", "FREEZE"))
+ "ONLY");
+ else if (Matches("VACUUM", MatchAnyN, "FREEZE"))
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
"VERBOSE",
- "ANALYZE");
- else if (Matches("VACUUM", "VERBOSE") ||
- Matches("VACUUM", "FULL|FREEZE", "VERBOSE") ||
- Matches("VACUUM", "FULL", "FREEZE", "VERBOSE"))
+ "ANALYZE",
+ "ONLY");
+ else if (Matches("VACUUM", MatchAnyN, "VERBOSE"))
COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_vacuumables,
- "ANALYZE");
+ "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", "(*)"))
{