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 > 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 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. > > 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