From 452b637d4b02e4aa09d45a34d7a048d3f70116bb Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 23 Nov 2018 23:49:25 -0500 Subject: [PATCH] Adjust new test case for more portability. Early returns from the buildfarm say that most critters are good with commit cbdb8b4c0, but gaur gives unexpected results with the test case involving a float8 that's one-ULP-less-than-2^63. It appears that that platform's version of rint() rounds that value up to 2^63 instead of leaving it be. This is possibly a bug, and it's also possible that no other platform anybody is using anywhere behaves likewise. Still, the point of the test is not to insist that everybody's rint() behaves exactly the same. Let's use two-ULPs-less-than-2^63 instead, which I've tested to act the same on gaur as on more modern hardware. (This is, more or less, exactly the portability issue I'd feared might arise...) Discussion: https://postgr.es/m/15519-4fc785b483201ff1@postgresql.org --- src/test/regress/expected/float8-small-is-zero.out | 4 ++-- src/test/regress/expected/float8.out | 4 ++-- src/test/regress/sql/float8.sql | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/regress/expected/float8-small-is-zero.out b/src/test/regress/expected/float8-small-is-zero.out index ce173f72c9..1c3bbae6b8 100644 --- a/src/test/regress/expected/float8-small-is-zero.out +++ b/src/test/regress/expected/float8-small-is-zero.out @@ -511,10 +511,10 @@ SELECT '-2147483648.4'::float8::int4; SELECT '-2147483648.6'::float8::int4; ERROR: integer out of range -SELECT '9223372036854774784'::float8::int8; +SELECT '9223372036854773760'::float8::int8; int8 --------------------- - 9223372036854774784 + 9223372036854773760 (1 row) SELECT '9223372036854775807'::float8::int8; diff --git a/src/test/regress/expected/float8.out b/src/test/regress/expected/float8.out index 1d51012a69..75c0bf389b 100644 --- a/src/test/regress/expected/float8.out +++ b/src/test/regress/expected/float8.out @@ -513,10 +513,10 @@ SELECT '-2147483648.4'::float8::int4; SELECT '-2147483648.6'::float8::int4; ERROR: integer out of range -SELECT '9223372036854774784'::float8::int8; +SELECT '9223372036854773760'::float8::int8; int8 --------------------- - 9223372036854774784 + 9223372036854773760 (1 row) SELECT '9223372036854775807'::float8::int8; diff --git a/src/test/regress/sql/float8.sql b/src/test/regress/sql/float8.sql index ed87942446..6595fd2b95 100644 --- a/src/test/regress/sql/float8.sql +++ b/src/test/regress/sql/float8.sql @@ -183,7 +183,7 @@ SELECT '2147483647.4'::float8::int4; SELECT '2147483647.6'::float8::int4; SELECT '-2147483648.4'::float8::int4; SELECT '-2147483648.6'::float8::int4; -SELECT '9223372036854774784'::float8::int8; +SELECT '9223372036854773760'::float8::int8; SELECT '9223372036854775807'::float8::int8; SELECT '-9223372036854775808.5'::float8::int8; SELECT '-9223372036854780000'::float8::int8;