Commit 4ba61a48 authored by Tom Lane's avatar Tom Lane

Work around rounding misbehavior exposed by buildfarm.

parent 2d01ec07
...@@ -287,6 +287,16 @@ restart: ...@@ -287,6 +287,16 @@ restart:
other_nbr_en = (Form_pg_enum) GETSTRUCT(existing[other_nbr_index]); other_nbr_en = (Form_pg_enum) GETSTRUCT(existing[other_nbr_index]);
newelemorder = (nbr_en->enumsortorder + newelemorder = (nbr_en->enumsortorder +
other_nbr_en->enumsortorder) / 2; other_nbr_en->enumsortorder) / 2;
/*
* On some machines, newelemorder may be in a register that's
* wider than float4. We need to force it to be rounded to
* float4 precision before making the following comparisons,
* or we'll get wrong results. (Such behavior violates the C
* standard, but fixing the compilers is out of our reach.)
*/
newelemorder = DatumGetFloat4(Float4GetDatum(newelemorder));
if (newelemorder == nbr_en->enumsortorder || if (newelemorder == nbr_en->enumsortorder ||
newelemorder == other_nbr_en->enumsortorder) newelemorder == other_nbr_en->enumsortorder)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment