|From:||Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>|
|To:||Corey Huinker <corey(dot)huinker(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>|
|Views:||Raw Message | Whole Thread | Download mbox|
Corey Huinker wrote:
> Some of the discussions about making psql more user friendly (more tab completions help, exit, etc) got me thinking about other ways that psql could be more friendly, and the one that comes to mind is our terse but cryptic \d* commands.
> I think it would be helpful and instructive to have corresponding long-form describe commands.
> Take describing schemas. Is \dn intuitive? Not really. In hindsight, you may think "yeah, a schema is a namespace", but you never guessed 'n' on the first try, or the second.
> Looking over exec_command_d() a bit, I think it's a bit of a stretch do have each command handle a long form like this:
> \describe table my_table
> \describe table verbose my_table
> because then each \d-variant has to account for objects named "table" and "verbose" and that's a path to unhappiness.
> But if we dash-separated them, then all of the strcmps would be in the 'e' subsection, and each one would just have to know it's long to short translation, and call exec_command_d with the corresponding short command
> describe => d
> describe-verbose => d+
> describe-aggregates-verbose => da+
> describe-roles => du
> We could even presume the verbose flag in all cases (after all, the user was being verbose...), which would also cut down on tab-completion results, and we could check for interactive mode and display a message like
> \describe-schemas (short: \dn+)
> so that the person has the opportunity to learn the corresponding short command.
> In additional to aiding tab completion discovery of the commands (i.e. typing "\desc" and then hitting tab, it would also make scripts a little more self-documenting.
I'm somewhat -1 on this.
It would be about as hard to memorize \describe-schemas as it is to memorize \dn:
You'd have to remember that it is "-" and not "_", that it is "describe", not "desc"
and that it is "schemas", not "schema".
Moreover, it would be as awkward to have
as it would be to list all schemas with
But my strongest criticism is that the \d* commands are for interactive use,
and who wants to type in a long string like that? The beginner won't be able to
guess the correct command, and the experienced user would refuse to use it.
Having said all that, I can imagine that having \desc and \describe as an
alternative to \d would help beginners who come e.g. from Oracle,
but that would mean a change of the current behavior:
List of foreign servers
Name | Owner | Foreign-data wrapper
oracle | postgres | oracle_fdw
This is because \des lists foreign servers, and the rest of the command is ignored.
|Next Message||Amit Langote||2018-01-26 09:57:03||relispartition for index partitions|
|Previous Message||Amit Langote||2018-01-26 09:17:41||Re: [HACKERS] path toward faster partition pruning|