We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see ourdocumentation.
There was an error while loading.Please reload this page.
1 parent2d01ec0 commit4ba61a4Copy full SHA for 4ba61a4
src/backend/catalog/pg_enum.c
@@ -287,6 +287,16 @@ AddEnumLabel(Oid enumTypeOid,
287
other_nbr_en= (Form_pg_enum)GETSTRUCT(existing[other_nbr_index]);
288
newelemorder= (nbr_en->enumsortorder+
289
other_nbr_en->enumsortorder) /2;
290
+
291
+/*
292
+ * On some machines, newelemorder may be in a register that's
293
+ * wider than float4. We need to force it to be rounded to
294
+ * float4 precision before making the following comparisons,
295
+ * or we'll get wrong results. (Such behavior violates the C
296
+ * standard, but fixing the compilers is out of our reach.)
297
+ */
298
+newelemorder=DatumGetFloat4(Float4GetDatum(newelemorder));
299
300
if (newelemorder==nbr_en->enumsortorder||
301
newelemorder==other_nbr_en->enumsortorder)
302
{