pgsql: Improve tab completion for ANALYZE, EXPLAIN, and VACUUM. - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Improve tab completion for ANALYZE, EXPLAIN, and VACUUM.
Date
Msg-id E1g3R0a-0007ZH-N2@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Improve tab completion for ANALYZE, EXPLAIN, and VACUUM.

Previously, we made no attempt to provide tab completion in these
statements' optional parenthesized options lists.  This patch teaches
psql to do so.

To prevent the option completions from being offered after we've already
seen a complete parenthesized option list, it's necessary to improve
word_matches() so that it allows a wildcard '*' in the middle of an
alternative, not only at the end as formerly.  That requires only a
little more code than before, and it allows us to test for "incomplete
parenthesized options" with a test like

    else if (HeadMatches2("EXPLAIN", "(*") &&
             !HeadMatches2("EXPLAIN", "(*)"))

In addition, add some logic to offer column names in the context of
"ANALYZE tablename ( ...", and likewise for VACUUM.  This isn't real
complete; it won't offer column names again after a comma.  But it's
better than before, and it doesn't take much code.

Justin Pryzby, reviewed at various times by Álvaro Herrera, Arthur
Zakirov, and Edmund Horner; some additional fixups by me

Discussion: https://postgr.es/m/20180529000623.GA21896@telsasoft.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/121213d9d8527f880f153e4a032ee1a4cd43833f

Modified Files
--------------
src/bin/psql/tab-complete.c | 127 ++++++++++++++++++++++++++++++--------------
1 file changed, 87 insertions(+), 40 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Rationalize Query_for_list_of_[relations] query names intab-com
Next
From: Tom Lane
Date:
Subject: pgsql: Fix bogus tab-completion rule for CREATE PUBLICATION.