Thread: [PATCH] print help from psql when user tries to run pg_restore,pg_dump etc

[PATCH] print help from psql when user tries to run pg_restore,pg_dump etc

From
Craig Ringer
Date:
New users frequently attempt to run PostgreSQL's command line utilities from the psql prompt.

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

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 2ndQuadrant - PostgreSQL Solutions for the Enterprise
Attachment

Re: [PATCH] print help from psql when user tries to run pg_restore,pg_dump etc

From
Fabien COELHO
Date:
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.