pgsql: Improve tab completion for ANALYZE, EXPLAIN, and VACUUM.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Improve tab completion for ANALYZE, EXPLAIN, and VACUUM.
Date: 2018-09-21 19:22:32
Message-ID: E1g3R0a-0007ZH-N2@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2018-09-21 19:58:44 pgsql: Fix bogus tab-completion rule for CREATE PUBLICATION.
Previous Message Andres Freund 2018-09-21 17:43:47 Re: pgsql: Improve autovacuum logging for aggressive and anti-wraparound ru