diff options
author | Tom Lane | 2025-03-23 21:16:08 +0000 |
---|---|---|
committer | Tom Lane | 2025-03-23 21:16:08 +0000 |
commit | 8a3e4011f02dd2789717c633e74fefdd3b648386 (patch) | |
tree | 4985e43e64a33361be908c32ad11fcc3ab4f69ef | |
parent | 2817525f0d56075e1f3a14c0dc6a180b337d8aed (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.c | 36 |
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", "(*)")) { |