Hello Craig,
New users frequently attempt to run PostgreSQL's command line utilities
from the psql prompt.
Alas, that is true.
I also have the reverse, i.e. SQL commands fed to bash, which does not
like it much.
They tend to be confused when this appears to do absolutely nothing:
psql=> pg_restore
psql->
since they're generally not going to semicolon-terminate the command either.
The attached patch detects common command names when they appear first on a
new input line prints a help message. If the buffer is empty a more
detailed message is printed and the input is swallowed. Otherwise, much
like how we handle "help" etc,
a short message is printed and the input is still added to the buffer.
psql=> pg_restore
"pg_restore" is a command line utility program.
Use it from the system terminal or command prompt not from psql.
… prompt, not from psql. (added comma?)
psql=>
psql=> select 1
psql-> pg_restore
"pg_restore" is a command-line utility program not a psql command. See
"help".
psql->
Wording advice would be welcome.
I'd be tempted to backpatch this, since it's one of the things I see users
confused by most often now - right up there with pg_hba.conf issues,
forgetting a semicolon in psql, etc.
I doubt that backpathing is reasonable.
Are we that sure that there is no legitimate reason to enter such lines on
psql, eg:
psql=> SELECT '
psql'> pg_whatever ...'
psql-> ...
Although I can confirm that the problem exists, I'm unsure about whether
psql should fix it. What are the opinions around?
--
Fabien.