diff options
author | Michael Paquier <michael@paquier.xyz> | 2019-03-06 14:42:52 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2019-03-06 14:42:52 +0900 |
commit | ff9bff0a85b6c23d622b4913ed38f459866f0d3a (patch) | |
tree | 0e06fb6e9789b4e94720b60d515a96a84dd5f4b7 /src | |
parent | e988878f85436dcd74e503c94f5b8e2b76a08711 (diff) | |
download | postgresql-ff9bff0a85b6c23d622b4913ed38f459866f0d3a.tar.gz postgresql-ff9bff0a85b6c23d622b4913ed38f459866f0d3a.zip |
Teach SKIP_LOCKED to psql tab completion of VACUUM and ANALYZE
This was missing since 803b130, which has introduced the option for the
user-facing VACUUM and ANALYZE.
Author: Masahiko Sawada
Discussion: https://postgr.es/m/CAD21AoD2TMdTxRhZ7WSp940V82_OAyPmgHnbi25UbbArLgA92Q@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r-- | src/bin/psql/tab-complete.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 7b7a88fda34..10ae21cc613 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -2065,15 +2065,21 @@ psql_completion(const char *text, int start, int end) /* * ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ] * ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ] - * - * Currently the only allowed option is VERBOSE, so we can be skimpier on - * the option processing than VACUUM has to be. */ else if (Matches("ANALYZE")) COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_analyzables, " UNION SELECT 'VERBOSE'"); - else if (Matches("ANALYZE", "(")) - COMPLETE_WITH("VERBOSE)"); + else if (HeadMatches("ANALYZE", "(*") && + !HeadMatches("ANALYZE", "(*)")) + { + /* + * This fires if we're in an unfinished parenthesized option list. + * get_previous_words treats a completed parenthesized option list as + * one word, so the above test is correct. + */ + if (ends_with(prev_wd, '(') || ends_with(prev_wd, ',')) + COMPLETE_WITH("VERBOSE", "SKIP_LOCKED"); + } else if (HeadMatches("ANALYZE") && TailMatches("(")) /* "ANALYZE (" should be caught above, so assume we want columns */ COMPLETE_WITH_ATTR(prev2_wd, ""); @@ -3423,7 +3429,7 @@ psql_completion(const char *text, int start, int end) */ if (ends_with(prev_wd, '(') || ends_with(prev_wd, ',')) COMPLETE_WITH("FULL", "FREEZE", "ANALYZE", "VERBOSE", - "DISABLE_PAGE_SKIPPING"); + "DISABLE_PAGE_SKIPPING", "SKIP_LOCKED"); } else if (HeadMatches("VACUUM") && TailMatches("(")) /* "VACUUM (" should be caught above, so assume we want columns */ |