Re: psql tests hangs

Pavel Stehule <pavel.stehule@gmail.com>

From: Pavel Stehule <pavel.stehule@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Kirk Wolak <wolakk@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Daniel Gustafsson <daniel@yesql.se>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Andrey Borodin <x4mmm@yandex-team.ru>
Date: 2023-05-12T08:31:01Z
Lists: pgsql-hackers
pá 12. 5. 2023 v 9:46 odesílatel Alvaro Herrera <alvherre@alvh.no-ip.org>
napsal:

> On 2023-May-12, Pavel Stehule wrote:
>
> > It hangs in perl
>
> I wonder if "hanging" actually means that it interpreted the sleep time
> as a very large integer, so it's just sleeping for a long time.
>

There is some interaction with pspg in stream mode

The probable scenario

It is starting pspg due to my setting PSQL_WATCH_PAGER. pspg is waiting on
quit command, or on pipe ending. Quit command cannot to come because it is
not on tty, so it is dead lock

I can write to safeguard the fast ending on pspg when it is in stream mode,
and tty is not available.

And generally, the root perl should to reset PSQL_WATCH_PAGER env variable
before executing psql. Probably it does with PSQL_PAGER, and maybe with
PAGER.

Regards

Pavel


>
> About the server locale, note that the ->new() call explicitly requests
> the C locale -- it's only psql that is using the Czech locale.
> Supposedly, the Perl code should also be using the Czech locale, so the
> sprintf('%g') should be consistent with what psql \watch expects.
> However, you cannot ask the server to be consistent with that -- say, if
> you hypothetically tried to use "to_char(9D99)" and \gset that to use as
> \watch argument, it wouldn't work, because that'd use the server's C
> locale, not Czech.  (I know because I tried.)
>
> --
> Álvaro Herrera        Breisgau, Deutschland  —
> https://www.EnterpriseDB.com/
> "Puedes vivir sólo una vez, pero si lo haces bien, una vez es suficiente"
>

Commits

  1. Tighten usage of PSQL_WATCH_PAGER.

  2. Add tab-completion for newly added SUBSCRIPTION options.

  3. psql: add an optional execution-count limit to \watch.

  4. Handle empty or all-blank PAGER setting more sanely in psql.