Divid by zero bug in float

Started by Jim C. Nasbyalmost 20 years ago3 messages
#1Jim C. Nasby
jnasby@pervasive.com

Shouldn't this produce Infinity instead of an error?
postgresql=# select 5::float/0::float;
ERROR: division by zero
postgresql=# select 5::float/'Infinity'::float;
?column?
----------
0
(1 row)

postgresql=#
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf cell: 512-569-9461

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jim C. Nasby (#1)
Re: Divid by zero bug in float

"Jim C. Nasby" <jnasby@pervasive.com> writes:

Shouldn't this produce Infinity instead of an error?
postgresql=# select 5::float/0::float;
ERROR: division by zero

No, I don't think so. SQL92 6.12 <numeric value expression> quoth:

4) The dyadic arithmetic operators <plus sign>, <minus sign>, <as-
terisk>, and <solidus> (+, -, *, and /, respectively) specify
addition, subtraction, multiplication, and division, respec-
tively. If the value of a divisor is zero, then an exception
condition is raised: data exception-division by zero.

There is nothing in there about allowing IEEE infinities instead, and
I very strongly doubt that the average database user would expect such
behavior.

regards, tom lane

#3Jim C. Nasby
jnasby@pervasive.com
In reply to: Tom Lane (#2)
Re: Divid by zero bug in float

On Wed, Feb 22, 2006 at 12:40:11PM -0500, Tom Lane wrote:

"Jim C. Nasby" <jnasby@pervasive.com> writes:

Shouldn't this produce Infinity instead of an error?
postgresql=# select 5::float/0::float;
ERROR: division by zero

No, I don't think so. SQL92 6.12 <numeric value expression> quoth:

4) The dyadic arithmetic operators <plus sign>, <minus sign>, <as-
terisk>, and <solidus> (+, -, *, and /, respectively) specify
addition, subtraction, multiplication, and division, respec-
tively. If the value of a divisor is zero, then an exception
condition is raised: data exception-division by zero.

There is nothing in there about allowing IEEE infinities instead, and
I very strongly doubt that the average database user would expect such
behavior.

Guess the spec is pretty clear then. Do you think it's worth mentioning
this in the floating point section of the docs?
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com work: 512-231-6117
vcard: http://jim.nasby.net/pervasive.vcf cell: 512-569-9461