Re: [HACKERS] [GENERAL] PgSQL 7.4.2 - NaN on Tru64 UNIX - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] [GENERAL] PgSQL 7.4.2 - NaN on Tru64 UNIX
Date
Msg-id 200407100152.i6A1qJl19534@candle.pha.pa.us
Whole thread Raw
List pgsql-patches
OK, I will use "DBL_QNAN" for the patch.

Your patch has been added to the PostgreSQL unapplied patches list at:

    http://momjian.postgresql.org/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

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


Nikola Milutinovic wrote:
> 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.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
>                http://archives.postgresql.org
>

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

pgsql-patches by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] PgSQL 7.4.2 - NaN on Tru64 UNIX
Next
From: Bruce Momjian
Date:
Subject: Re: build infrastructure for extensions v3