Re: [GENERAL] division by zero

Lists: pgsql-generalpgsql-hackers
From: Eric B(dot)Ridge <ebr(at)tcdi(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: division by zero
Date: 2003-03-07 18:48:46
Message-ID: 6D514366-50CD-11D7-B70C-0003937E3354@tcdi.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

I admit, I suck at math, but I really thought postgres would ERROR on
this:

foo=# select 1/0;
?column?
----------
0
(1 row)

More surprising is that this does ERROR:
foo=# select 1/0.0;
ERROR: division by zero on numeric

Is this a bug, or do I need to go back to high school algebra? "Both"
is an acceptable answer. :)

eric


From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: "Eric B(dot)Ridge" <ebr(at)tcdi(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-07 19:34:35
Message-ID: 200303071934.h27JYZX15662@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers


I think this caused by floating point signals being reported by the OS,
while integer operations don't have signals. I suppose we could catch
the divide by zero easily. Folks?

---------------------------------------------------------------------------

Eric B.Ridge wrote:
> I admit, I suck at math, but I really thought postgres would ERROR on
> this:
>
> foo=# select 1/0;
> ?column?
> ----------
> 0
> (1 row)
>
> More surprising is that this does ERROR:
> foo=# select 1/0.0;
> ERROR: division by zero on numeric
>
> Is this a bug, or do I need to go back to high school algebra? "Both"
> is an acceptable answer. :)
>
> eric
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Eric B(dot)Ridge" <ebr(at)tcdi(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-07 19:50:15
Message-ID: 2079.1047066615@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

"Eric B.Ridge" <ebr(at)tcdi(dot)com> writes:
> I admit, I suck at math, but I really thought postgres would ERROR on
> this:

> foo=# select 1/0;

There's something wrong with your platform, I think. I get an error on
both HPUX and Red Hat Linux. What platform is this? and what PG
version?

z=# select 1/0;
ERROR: floating point exception! The last floating point operation either exceeded legal ranges or was a divide by zero
z=#

regards, tom lane


From: Eric B(dot)Ridge <ebr(at)tcdi(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-07 19:58:53
Message-ID: 3941E842-50D7-11D7-B70C-0003937E3354@tcdi.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

On Friday, March 7, 2003, at 02:50 PM, Tom Lane wrote:

> "Eric B.Ridge" <ebr(at)tcdi(dot)com> writes:
>> I admit, I suck at math, but I really thought postgres would ERROR on
>> this:
>
>> foo=# select 1/0;
>
> There's something wrong with your platform, I think. I get an error on
> both HPUX and Red Hat Linux. What platform is this? and what PG
> version?

I'm sorry. I know better.

% uname -a
Darwin foo.local. 6.4 Darwin Kernel Version 6.4: Wed Jan 29 18:50:42
PST 2003; root:xnu/xnu-344.26.obj~1/RELEASE_PPC Power Macintosh powerpc
Which translates to Mac OS X 10.2.4 (6I32)

foo=# select version();
version
------------------------------------------------------------------------
--------------------------
PostgreSQL 7.3.2 on powerpc-apple-darwin6.4, compiled by GCC gcc (GCC)
3.1 20020420 (prerelease)

select 1/0; fails as expected on my x86 Linux box, so yer right, it's
just my little Mac. "I switched because Mac's can divide by zero."

eric

> z=# select 1/0;
> ERROR: floating point exception! The last floating point operation
> either exceeded legal ranges or was a divide by zero
> z=#
>
> regards, tom lane


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Eric B(dot) Ridge" <ebr(at)tcdi(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-07 20:05:12
Message-ID: 2228.1047067512@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

"Eric B. Ridge" <ebr(at)tcdi(dot)com> writes:
> select 1/0; fails as expected on my x86 Linux box, so yer right, it's
> just my little Mac. "I switched because Mac's can divide by zero."

Mph. I have a Mac handy, will look into this.

Can anyone confirm whether the error shows up on other BSD-derived
platforms?

regards, tom lane


From: Fernando Schapachnik <fernando(at)mecon(dot)gov(dot)ar>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Eric B(dot) Ridge" <ebr(at)tcdi(dot)com>, pgsql-general(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-07 20:08:44
Message-ID: 20030307200844.GP357@bal740r0.mecon.gov.ar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

En un mensaje anterior, Tom Lane escribió:
> Can anyone confirm whether the error shows up on other BSD-derived
> platforms?

FreeBSD 4.7-RELEASE-p7

db=# SELECT version();
version
---------------------------------------------------------------------
PostgreSQL 7.3.2 on i386-portbld-freebsd4.7, compiled by GCC 2.95.4
(1 row)

db=# SELECT 1/0;
ERROR: floating point exception! The last floating point operation either
exceeded legal ranges or was a divide by zero

Regards.


From: Eric B(dot)Ridge <ebr(at)tcdi(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-07 21:36:57
Message-ID: EC27D603-50E4-11D7-B70C-0003937E3354@tcdi.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

On Friday, March 7, 2003, at 03:05 PM, Tom Lane wrote:

> "Eric B. Ridge" <ebr(at)tcdi(dot)com> writes:
>> select 1/0; fails as expected on my x86 Linux box, so yer right, it's
>> just my little Mac. "I switched because Mac's can divide by zero."
>
> Mph. I have a Mac handy, will look into this.

I doubt this helps, but I just tried on my Mac against 7.2.3 and it
still returns zero.

eric

>
> Can anyone confirm whether the error shows up on other BSD-derived
> platforms?
>
> regards, tom lane


From: Brian Hirt <bhirt(at)mobygames(dot)com>
To: "Eric B(dot)Ridge" <ebr(at)tcdi(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-07 23:32:57
Message-ID: 20A602DE-50F5-11D7-812A-000393D9FD00@mobygames.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

fyi, my mac running mac os 10.2.4 and postgres 7.3.1 returns zero also.

On Friday, March 7, 2003, at 02:36 PM, Eric B.Ridge wrote:

> On Friday, March 7, 2003, at 03:05 PM, Tom Lane wrote:
>
>> "Eric B. Ridge" <ebr(at)tcdi(dot)com> writes:
>>> select 1/0; fails as expected on my x86 Linux box, so yer right, it's
>>> just my little Mac. "I switched because Mac's can divide by zero."
>>
>> Mph. I have a Mac handy, will look into this.
>
> I doubt this helps, but I just tried on my Mac against 7.2.3 and it
> still returns zero.
>
> eric
>
>>
>> Can anyone confirm whether the error shows up on other BSD-derived
>> platforms?
>>
>> regards, tom lane
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Eric B(dot) Ridge" <ebr(at)tcdi(dot)com>
Cc: pgsql-general(at)postgresql(dot)org, pgsql-hackers(at)postgresql(dot)org
Subject: Re: division by zero
Date: 2003-03-08 18:19:03
Message-ID: 7695.1047147543@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

"Eric B. Ridge" <ebr(at)tcdi(dot)com> writes:
> select 1/0; fails as expected on my x86 Linux box, so yer right, it's
> just my little Mac. "I switched because Mac's can divide by zero."

I checked into this, and indeed OS X 10.2 is behaving funny: integer
divide by zero doesn't raise any signal, it just returns a bogus answer.
They're within their rights to do so according to the ANSI C spec
(wherein division by zero is stated to have undefined behavior).
But since other BSD-derived Unixen all seem to raise SIGFPE, I can't
help wondering if this shouldn't be considered a bug.

I think we have three possible responses:

1. Put explicit tests for zero into the integer division SQL function
routines.

2. Consider this Apple's problem and file a bug report.

3. Both.

I don't care for answer #1 alone, because it would only catch zero
divides in the specific places we put in tests; internal errors would
likely go uncaught. So I think a complaint to Apple is in order.
I'm not sure whether to also put in zero-divide guards. Comments?

regards, tom lane


From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Eric B(dot) Ridge" <ebr(at)tcdi(dot)com>, <pgsql-general(at)postgresql(dot)org>, <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: division by zero
Date: 2003-03-08 19:28:24
Message-ID: 20030308111114.O8453-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers


On Sat, 8 Mar 2003, Tom Lane wrote:

> "Eric B. Ridge" <ebr(at)tcdi(dot)com> writes:
> > select 1/0; fails as expected on my x86 Linux box, so yer right, it's
> > just my little Mac. "I switched because Mac's can divide by zero."
>
> I checked into this, and indeed OS X 10.2 is behaving funny: integer
> divide by zero doesn't raise any signal, it just returns a bogus answer.
> They're within their rights to do so according to the ANSI C spec
> (wherein division by zero is stated to have undefined behavior).
> But since other BSD-derived Unixen all seem to raise SIGFPE, I can't
> help wondering if this shouldn't be considered a bug.
>
> I think we have three possible responses:
>
> 1. Put explicit tests for zero into the integer division SQL function
> routines.
>
> 2. Consider this Apple's problem and file a bug report.
>
> 3. Both.
>
> I don't care for answer #1 alone, because it would only catch zero
> divides in the specific places we put in tests; internal errors would
> likely go uncaught. So I think a complaint to Apple is in order.
> I'm not sure whether to also put in zero-divide guards. Comments?

We probably should put in guards since relying on sane behavior for
division by zero is probably unsafe from a portability standpoint. This
could hide some internal error on a system that has this problem (since we
could otherwise put it into a regression test) but those systems are
currently broken if the internal error occurs anyway.


From: Justin Clift <justin(at)postgresql(dot)org>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: "Eric B(dot) Ridge" <ebr(at)tcdi(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: [GENERAL] division by zero
Date: 2003-03-09 04:54:50
Message-ID: 3E6AC91A.1010700@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

Tom Lane wrote:
<snip>
> 2. Consider this Apple's problem and file a bug report.

Is there a good place to report errors to Apple for this kind of thing?

Was chatting to one of the guys in the MacOSX development team at Apple
a while ago and can pursue it through there if needed.

:-)

Regards and best wishes,

Justin Clift

> 3. Both.
>
> I don't care for answer #1 alone, because it would only catch zero
> divides in the specific places we put in tests; internal errors would
> likely go uncaught. So I think a complaint to Apple is in order.
> I'm not sure whether to also put in zero-divide guards. Comments?
>
> regards, tom lane

--
"My grandfather once told me that there are two kinds of people: those
who work and those who take the credit. He told me to try to be in the
first group; there was less competition there."
- Indira Gandhi


From: Eric B(dot)Ridge <ebr(at)tcdi(dot)com>
To: Justin Clift <justin(at)postgresql(dot)org>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: [GENERAL] division by zero
Date: 2003-03-09 21:34:43
Message-ID: F159728C-5276-11D7-AD20-0003930C70D8@tcdi.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

On Saturday, March 8, 2003, at 11:54 PM, Justin Clift wrote:

> Tom Lane wrote:
> <snip>
>> 2. Consider this Apple's problem and file a bug report.
>
> Is there a good place to report errors to Apple for this kind of thing?

The best place I can find is:
http://developer.apple.com/bugreporter/index.html

Unfortunately, there doesn't seem to be a way to query existing
reports... If there is, I can't find it.

Also, I can't help but wonder why Apple/DarwinTeam handle integer
division by zero this way. There must be a reason, which makes me
think that "[considering] this Apple's problem" might not work out for
postgres in the end.

eric


From: Justin Clift <justin(at)postgresql(dot)org>
To: "Eric B(dot)Ridge" <ebr(at)tcdi(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: [GENERAL] division by zero
Date: 2003-03-10 00:15:25
Message-ID: 3E6BD91D.7050007@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-general pgsql-hackers

Hi guys,

Was just looking around Google for similar reports of errors and came
across this:

MacOS X Server Developer Release Notes: Core OS Runtime
http://www.geminisolutions.com/WebObjects_4.5/Documentation/Developer/YellowBox/ReleaseNotes/Runtime.html

Looks like this is a known problem (as of 1998) and may not have been fixed.

Further hits come up when searching on the Apple Developer Connection
site too:

http://developer.apple.com/cgi-bin/search.pl?&q=divide+by+zero&num=10&lang=lang_en|lang_zh-CN|lang_fr|lang_de|lang_ja&ie=utf8&oe=utf8
(that should be all one line)

And this one looks potentially interesting:

http://developer.apple.com/technotes/tn2002/tn2053.html
(search in this page for "FE_ENABLE_DIVBYZERO")

Have asked the member of the Apple MacOS X Server team what he
recommends the best way to proceed is.

Regards and best wishes,

Justin Clift

Eric B.Ridge wrote:
> On Saturday, March 8, 2003, at 11:54 PM, Justin Clift wrote:
>
>> Tom Lane wrote:
>> <snip>
>>
>>> 2. Consider this Apple's problem and file a bug report.
>>
>>
>> Is there a good place to report errors to Apple for this kind of thing?
>
>
> The best place I can find is:
> http://developer.apple.com/bugreporter/index.html
>
> Unfortunately, there doesn't seem to be a way to query existing
> reports... If there is, I can't find it.
>
> Also, I can't help but wonder why Apple/DarwinTeam handle integer
> division by zero this way. There must be a reason, which makes me think
> that "[considering] this Apple's problem" might not work out for
> postgres in the end.
>
> eric
>

--
"My grandfather once told me that there are two kinds of people: those
who work and those who take the credit. He told me to try to be in the
first group; there was less competition there."
- Indira Gandhi