On Thu, May 11, 2023 at 8:08 PM Tom Lane <t...@sss.pgh.pa.us> wrote:
> Kirk Wolak <wol...@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...