summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane2025-03-23 21:16:08 +0000
committerTom Lane2025-03-23 21:16:08 +0000
commit8a3e4011f02dd2789717c633e74fefdd3b648386 (patch)
tree4985e43e64a33361be908c32ad11fcc3ab4f69ef /src
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 <postgresql.wizard@gmail.com> Reviewed-by: Vignesh C <vignesh21@gmail.com> Reviewed-by: Ilia Evdokimov <ilya.evdokimov@tantorlabs.com> Discussion: https://postgr.es/m/CAD68Dp3L6yW_nWs+MWBs6s8tKLRzXaQdQgVRm4byZe0L-hRD8g@mail.gmail.com
Diffstat (limited to 'src')
-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", "(*)"))
{