Thread: BUG #17020: meta command psql _eset does not clear the query buffer

BUG #17020: meta command psql _eset does not clear the query buffer

From
PG Bug reporting form
Date:
The following bug has been logged on the website:

Bug reference:      17020
Logged by:          François Grandvarlet
Email address:      francois.grandvarlet@wanadoo.fr
PostgreSQL version: 13.3
Operating system:   Centos 7
Description:

Connected via psql
issuing a command like : SELECT * FROM generate_series (1, 1000);
meta command \p shows the query buffer
meta command \reset tells "Query buffer reset (cleared)."
but meta command \p still shows the query buffer and meta command \g execute
the query
Is this the normal behavior ?
It seems to me that the query buffer should be empty after issuing \reset


Re: BUG #17020: meta command psql _eset does not clear the query buffer

From
Bruce Momjian
Date:
On Tue, May 18, 2021 at 10:16:16PM +0000, PG Bug reporting form wrote:
> The following bug has been logged on the website:
> 
> Bug reference:      17020
> Logged by:          François Grandvarlet
> Email address:      francois.grandvarlet@wanadoo.fr
> PostgreSQL version: 13.3
> Operating system:   Centos 7
> Description:        
> 
> Connected via psql
> issuing a command like : SELECT * FROM generate_series (1, 1000);
> meta command \p shows the query buffer
> meta command \reset tells "Query buffer reset (cleared)."
> but meta command \p still shows the query buffer and meta command \g execute
> the query
> Is this the normal behavior ?
> It seems to me that the query buffer should be empty after issuing \reset

I was recently confused by this too, but the psql \print documentation
clarified it for me:

       \p or \print
           Print the current query buffer to the standard output. If the
-->        current query buffer is empty, the most recently executed query is
-->        printed instead.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.




PG Bug reporting form <noreply@postgresql.org> writes:
> issuing a command like : SELECT * FROM generate_series (1, 1000);
> meta command \p shows the query buffer
> meta command \reset tells "Query buffer reset (cleared)."
> but meta command \p still shows the query buffer and meta command \g execute
> the query
> Is this the normal behavior ?

Yes.  \p is documented as

    Print the current query buffer to the standard output. If the current
    query buffer is empty, the most recently executed query is printed
    instead.

and \g likewise says "If the current query buffer is empty, the most
recently sent query is re-executed instead".

> It seems to me that the query buffer should be empty after issuing \reset

It is.  If you now type something, that something is a new command that's
not concatenated with what you typed before.

            regards, tom lane



Thank you very much for your answer and your explanations.
I should have read the doc more carefully.

Best regards,
François Grandvarlet

-----Message d'origine-----
De : Bruce Momjian <bruce@momjian.us>
Envoyé : mercredi 19 mai 2021 16:40
À : francois.grandvarlet@wanadoo.fr; pgsql-bugs@lists.postgresql.org
Objet : Re: BUG #17020: meta command psql \reset does not clear the query
buffer

On Tue, May 18, 2021 at 10:16:16PM +0000, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference:      17020
> Logged by:          François Grandvarlet
> Email address:      francois.grandvarlet@wanadoo.fr
> PostgreSQL version: 13.3
> Operating system:   Centos 7
> Description:
>
> Connected via psql
> issuing a command like : SELECT * FROM generate_series (1, 1000); meta
> command \p shows the query buffer meta command \reset tells "Query
> buffer reset (cleared)."
> but meta command \p still shows the query buffer and meta command \g
> execute the query Is this the normal behavior ?
> It seems to me that the query buffer should be empty after issuing
> \reset

I was recently confused by this too, but the psql \print documentation
clarified it for me:

       \p or \print
           Print the current query buffer to the standard output. If the
-->        current query buffer is empty, the most recently executed query
is
-->        printed instead.

--
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.




Re: BUG #17020: meta command psql _eset does not clear the query buffer

From
'Bruce Momjian'
Date:
On Wed, May 19, 2021 at 05:23:06PM +0200, francois.grandvarlet@wanadoo.fr wrote:
> Thank you very much for your answer and your explanations.
> I should have read the doc more carefully.

For me the confusing part is the psql \? doesn't mention this behavior.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.