Hi, On 2019-03-01 12:46:55 -0500, Matt Pulver wrote: > PostgreSQL FLOAT appears to support +/-Infinity and NaN per the IEEE 754 > standard, with expressions such as CAST('NaN' AS FLOAT) and CAST('Infinity' > AS FLOAT) and even supports ordering columns of floats that contain NaN. > > However the query "SELECT 1.0/0.0;" produces an exception: > > ERROR: division by zero > > > Question: If Infinity and NaN are supported, then why throw an exception > here, instead of returning Infinity? Is it purely for historical reasons, > or if it could all be done again, would an exception still be preferred? > > For purely integer arithmetic, I can see how an exception would make sense. > However for FLOAT, I would expect/prefer Infinity to be returned.
It'd be good for performance reasons to not have to check for that, and for under/overflow. But the historical behaviour has quite some weight, and there's some language in the standard that can legitimate be interpreted that both conditions need to be signalled, if I recall correctly. Greetings, Andres Freund