Re: psql tests hangs - Mailing list pgsql-hackers

From Kirk Wolak
Subject Re: psql tests hangs
Date
Msg-id CACLU5mS=UV5N6qCJAZpDxmagkuNZM+WjiQdFztdjU1u8VN346g@mail.gmail.com
Whole thread Raw
In response to Re: psql tests hangs  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: psql tests hangs
List pgsql-hackers
On Thu, May 11, 2023 at 8:08 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Kirk Wolak <wolakk@gmail.com> writes:
> Can you change the 0.01 to just 1 or 0?
> I assume it will work then! (and better than a full removal)?

IMO the point of that test is largely to exercise this locale-dependent
behavior, so I'm very unwilling to dumb it down to that extent.

Sorry, I meant simply as opposed to deleting the test to get it to pass.
 
What seems to be happening is that the spawned psql process is making
a different choice about what the LC_NUMERIC locale is than its parent
perl process did.  That seems like it might be a bug in itself, since
POSIX is pretty clear about how you're supposed to derive the locale
from the relevant environment variables.  But maybe it's Perl's bug?

                        regards, tom lane

Did you try the print statement that Andrey asked Pavel to try?
Because it gave 2 different results for Pavel.  And Pavel's system has the problem, but yours does not.

cat test.pl
use locale;
my $result = sprintf('SELECT 1 \watch c=3 i=%g', 0.01);
print ">>$result<<\n";

and when Pavel ran it, he got:

[pavel@localhost psql]$ perl test.pl
>>SELECT 1 \watch c=3 i=0,01<<
[pavel@localhost psql]$ LANG=C perl test.pl
>>SELECT 1 \watch c=3 i=0.01<<

Now I am curious what you get?

Because yours works.  This should identify the difference.

Kirk...

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: running logical replication as the subscription owner
Next
From: Tom Lane
Date:
Subject: Re: psql tests hangs