Thread: psql \r changed behavior in pg10

psql \r changed behavior in pg10

From
Emanuel Araújo
Date:
Hi,

When used PostgreSQL 9.6.* it was common use in psql \r\e to clear a buffer query and open the empty text editor.  Works fine for me and it was very useful in my tasks.

Since PostgreSQL 10, this behavior changed and not more clear the buffer query.

psql helps show that \r reset (clear) the query buffer but in practice don't work or I do not understand how would work.

Example using postgrsql 11.8 :

select 1;
\e
-> Open temp file with a last statement "select 1;"
exit text editor and run command.  It's ok.
\r
\e
-> Open temp file with the same last command "select 1;"
is it right?

--
Regards,

Emanuel Araújo



Re: psql \r changed behavior in pg10

From
"David G. Johnston"
Date:
On Wednesday, July 22, 2020, Emanuel Araújo <eacshm@gmail.com> wrote:

\r
\e
-> Open temp file with the same last command "select 1;"
is it right?


Documentation since v10:

Or, if the current query buffer is empty, the most recently executed query is copied to a temporary file and edited in the same fashion.

David J.

Re: psql \r changed behavior in pg10

From
"David G. Johnston"
Date:
On Wednesday, July 22, 2020, David G. Johnston <david.g.johnston@gmail.com> wrote:
On Wednesday, July 22, 2020, Emanuel Araújo <eacshm@gmail.com> wrote:

\r
\e
-> Open temp file with the same last command "select 1;"
is it right?


Documentation since v10:

Or, if the current query buffer is empty, the most recently executed query is copied to a temporary file and edited in the same fashion.

I believe \e is now working as intended but assuming it worked differently in 9.6 the behavior change did not get noticed and so no release note entry was added for it.  Adding the new \if meta commands in v10 resulted in reworking of the code probably causing this to change.  We fixed the docs to match the expected behavior which was seen in v10 when the doc patch was written.


David J.

Re: psql \r changed behavior in pg10

From
Tom Lane
Date:
"David G. Johnston" <david.g.johnston@gmail.com> writes:
> On Wednesday, July 22, 2020, Emanuel Araújo <eacshm@gmail.com> wrote:
>> \r
>> \e
>> -> Open temp file with the same last command "select 1;"
>> is it right?

> Documentation since v10:
> Or, if the current query buffer is empty, the most recently executed query
> is copied to a temporary file and edited in the same fashion.

There's some discussion around that in this thread:

https://www.postgresql.org/message-id/flat/9b4ea968-753f-4b5f-b46c-d7d3bf7c8f90%40manitou-mail.org

The key point is that \r in this case used to clear the "previous query"
buffer since there was nothing for it to remove from the "current query"
buffer.  I argued then that that was confusing and counterproductive,
and I still think that.

            regards, tom lane