Re: psql tests hangs
От | Pavel Stehule |
---|---|
Тема | Re: psql tests hangs |
Дата | |
Msg-id | CAFj8pRBFe-uq8UteSDZ3pNavmRpgNeGh0vhGQNeUwtksGkCpDQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: psql tests hangs (Pavel Stehule <pavel.stehule@gmail.com>) |
Список | pgsql-hackers |
pá 12. 5. 2023 v 10:31 odesílatel Pavel Stehule <pavel.stehule@gmail.com> napsal:
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 modeThe probable scenarioIt 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 lockI 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.
with last change in pspg, this tests fails as "expected"
aster/src/bin/psql/../../../src/test/regress/pg_regress' /usr/bin/prove -I ../../../src/test/perl/ -I . t/*.pl
# +++ tap check in src/bin/psql +++
t/001_basic.pl ........... 59/?
# Failed test '\watch with 3 iterations: no stderr'
# at t/001_basic.pl line 356.
# got: 'stream mode can be used only in interactive mode (tty is not available)'
# expected: ''
# Failed test '\watch with 3 iterations: matches'
# at t/001_basic.pl line 356.
# ''
# doesn't match '(?^l:1\n1\n1)'
# Looks like you failed 2 tests of 80.
t/001_basic.pl ........... Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/80 subtests
t/010_tab_completion.pl .. ok
t/020_cancel.pl .......... ok
Test Summary Report
-------------------
t/001_basic.pl (Wstat: 512 (exited 2) Tests: 80 Failed: 2)
Failed tests: 69-70
Non-zero exit status: 2
Files=3, Tests=169, 7 wallclock secs ( 0.16 usr 0.03 sys + 3.31 cusr 1.31 csys = 4.81 CPU)
Result: FAIL
make: *** [Makefile:87: check] Chyba 1
# +++ tap check in src/bin/psql +++
t/001_basic.pl ........... 59/?
# Failed test '\watch with 3 iterations: no stderr'
# at t/001_basic.pl line 356.
# got: 'stream mode can be used only in interactive mode (tty is not available)'
# expected: ''
# Failed test '\watch with 3 iterations: matches'
# at t/001_basic.pl line 356.
# ''
# doesn't match '(?^l:1\n1\n1)'
# Looks like you failed 2 tests of 80.
t/001_basic.pl ........... Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/80 subtests
t/010_tab_completion.pl .. ok
t/020_cancel.pl .......... ok
Test Summary Report
-------------------
t/001_basic.pl (Wstat: 512 (exited 2) Tests: 80 Failed: 2)
Failed tests: 69-70
Non-zero exit status: 2
Files=3, Tests=169, 7 wallclock secs ( 0.16 usr 0.03 sys + 3.31 cusr 1.31 csys = 4.81 CPU)
Result: FAIL
make: *** [Makefile:87: check] Chyba 1
Regards
Pavel
RegardsPavel
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"
В списке pgsql-hackers по дате отправления: