Re: proposal - psql - use pager for \watch command

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Thomas Munro <thomas.munro@gmail.com>, vignesh C <vignesh21@gmail.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2021-07-13T18:05:32Z
Lists: pgsql-hackers
út 13. 7. 2021 v 19:50 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:

> Thomas Munro <thomas.munro@gmail.com> writes:
> > Pushed, after retesting on macOS (with the fixed pspg that has by now
> > arrived in MacPorts), FreeBSD and Linux.  Thanks!
>
> After playing with this along the way to fixing the sigwait issues,
> I have a gripe/suggestion.  If I hit control-C while the thing
> is waiting between queries, eg
>
> regression=# select now() \watch
> Tue Jul 13 13:44:44 2021 (every 2s)
>
>               now
> -------------------------------
>  2021-07-13 13:44:44.396565-04
> (1 row)
>
> Tue Jul 13 13:44:46 2021 (every 2s)
>
>               now
> -------------------------------
>  2021-07-13 13:44:46.396572-04
> (1 row)
>
> ^Cregression=#
>
> then as you can see I get nothing but the "^C" echo before the next
> psql prompt.  The problem with this is that now libreadline is
> misinformed about the cursor position, messing up any editing I
> might try to do on the next line of input.  So I think it would
> be a good idea to have some explicit final output when the \watch
> command terminates, along the line of
>
> ...
> Tue Jul 13 13:44:46 2021 (every 2s)
>
>               now
> -------------------------------
>  2021-07-13 13:44:46.396572-04
> (1 row)
>
> ^C\watch cancelled
> regression=#
>
> This strikes me as a usability improvement even without the
> readline-confusion angle.
>
>
I'll look at this issue.

Pavel




>                         regards, tom lane
>

Commits

  1. Fix \watch's interaction with libedit on ^C.

  2. Add PSQL_WATCH_PAGER for psql's \watch command.

  3. psql: Show all query results by default

  4. Add a comment warning against use of pg_usleep() for long sleeps.