]> granicus.if.org Git - postgresql/commit
Put in_range_float4_float8's work in-line.
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 5 May 2018 17:21:50 +0000 (13:21 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 5 May 2018 17:21:50 +0000 (13:21 -0400)
commitcb3e9e40bc993128cd51795ea60ff7bed78cebb5
tree2d06d47e4811043658e0a5bf11432b170cd26250
parent2f52518773bb01384ef20831fd9d8c76dbd59dc5
Put in_range_float4_float8's work in-line.

In commit 8b29e88cd, I'd dithered about whether to make
in_range_float4_float8 be a standalone copy of the float in-range logic
or have it punt to in_range_float8_float8.  I went with the latter, which
saves code space though at the cost of performance and readability.

However, it emerges that this tickles a compiler or hardware bug on
buildfarm member opossum.  Test results from commit 55e0e4581 show
conclusively that widening a float4 NaN to float8 produces Inf, not NaN,
on that machine; which accounts perfectly for the window RANGE test
failures it's been showing.  We can dodge this problem by making
in_range_float4_float8 be an independent function, so that it checks
for NaN inputs before widening them.

Ordinarily I'd not be very excited about working around such obviously
broken functionality; but given that this was a judgment call to begin
with, I don't mind reversing it.
src/backend/utils/adt/float.c