Re: PgSQL 7.4.2 - NaN on Tru64 UNIX - Mailing list pgsql-general

From Nikola Milutinovic
Subject Re: PgSQL 7.4.2 - NaN on Tru64 UNIX
Date
Msg-id 40A86317.3070805@ev.co.yu
Whole thread Raw
In response to PgSQL 7.4.2 - NaN on Tru64 UNIX  (Nikola Milutinovic <Nikola.Milutinovic@ev.co.yu>)
List pgsql-general
Nikola Milutinovic wrote:

> + #define NAN   DBL_INFINITY
>
> The compilation has went smoothly, I'll try to run regression tests.
> Will let you know if something fails.

Hate to reply to myself, but here goes.

With NAN defined as "DBL_INFINITY" I get 3 failed regression test, most
notably "float8" test.

With NAN defined as "DBL_QNAN" (double float Quiet NaN) I get just one,
"float8".

With NAN defined as "DBL_SNAN" (double float Signalling NaN) I get one
error, "float8".

The "problem" is the same in all three cases, an expression that is
supposed to cause overflow, does so, but the output error text is
slightly different. Here is the DIFF file:

*** ./expected/float8.out       Thu Sep 25 08:58:06 2003
--- ./results/float8.out        Mon May 17 08:37:51 2004
***************
*** 247,253 ****
      SET f1 = FLOAT8_TBL.f1 * '-1'
      WHERE FLOAT8_TBL.f1 > '0.0';
   SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
! ERROR:  type "double precision" value out of range: overflow
   SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
   ERROR:  result is out of range
   SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
--- 247,254 ----
      SET f1 = FLOAT8_TBL.f1 * '-1'
      WHERE FLOAT8_TBL.f1 > '0.0';
   SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
! ERROR:  floating-point exception
! DETAIL:  An invalid floating-point operation was signaled. This
probably means an out-of-range result or an invalid operation, suc
h as division by zero.
   SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
   ERROR:  result is out of range
   SELECT '' AS bad, ln(f.f1) from FLOAT8_TBL f where f.f1 = '0.0' ;
***************
*** 270,276 ****

   -- test for over- and underflow
   INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
! ERROR:  "10e400" is out of range for type double precision
   INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
   ERROR:  "-10e400" is out of range for type double precision
   INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
--- 271,277 ----

   -- test for over- and underflow
   INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
! ERROR:  invalid input syntax for type double precision: "10e400"
   INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
   ERROR:  "-10e400" is out of range for type double precision
   INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');

======================================================================

Any comments?

Nix.

pgsql-general by date:

Previous
From: Greg Stark
Date:
Subject: Re: fsync = true beneficial on ext3?
Next
From: "Bruno BAGUETTE"
Date:
Subject: SQL norm views to describes tables (and probably some other things) of a database ?