Re: \describe* - Mailing list pgsql-hackers

From Laurenz Albe
Subject Re: \describe*
Date
Msg-id 1516960618.2815.24.camel@cybertec.at
Whole thread Raw
In response to \describe*  (Corey Huinker <corey.huinker@gmail.com>)
Responses Re: \describe*
List pgsql-hackers
Corey Huinker wrote:
> Some of the discussions about making psql more user friendly (more tab completions help, exit, etc) got me thinking
aboutother 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",
butyou 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
> or
> \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
toknow 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
downon 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
alsomake scripts a little more self-documenting.
 
> 
> Thoughts?

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
   \describe-schemas public
as it would be to list all schemas with
   \describe-schema

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:

test=> \describe
         List of foreign servers
  Name  |  Owner   | Foreign-data wrapper 
--------+----------+----------------------
 oracle | postgres | oracle_fdw
(1 row)

This is because \des lists foreign servers, and the rest of the command is ignored.

Yours,
Laurenz Albe


pgsql-hackers by date:

Previous
From: Amit Langote
Date:
Subject: Re: [HACKERS] path toward faster partition pruning
Next
From: Amit Langote
Date:
Subject: relispartition for index partitions