]> granicus.if.org Git - postgresql/commit
Improve tab completion for ANALYZE, EXPLAIN, and VACUUM.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 21 Sep 2018 19:22:26 +0000 (15:22 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 21 Sep 2018 19:22:26 +0000 (15:22 -0400)
commit121213d9d8527f880f153e4a032ee1a4cd43833f
tree55ecfdc2c7797652ad01d1e60282c0a1f392860f
parente3b7a6d165d42b59b2432c415d7e4a284a645e89
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
src/bin/psql/tab-complete.c