Thread: float8 regression test failure in head

float8 regression test failure in head

From
Christopher Kings-Lynne
Date:
Attached are the test failures I'm currently getting.

-bash-2.05b$ uname -a
FreeBSD mir.internal 4.9-PRERELEASE FreeBSD 4.9-PRERELEASE #0: Mon Sep
22 14:46:18 WST 2003     adrian@mir.internal:/usr/obj/usr/src/sys/MIR  i386


Chris

parallel group (13 tests):  text name char varchar oid boolean int2 int8 int4 float4 bit float8 numeric
     boolean              ... ok
     char                 ... ok
     name                 ... ok
     varchar              ... ok
     text                 ... ok
     int2                 ... ok
     int4                 ... ok
     int8                 ... ok
     oid                  ... ok
     float4               ... ok
     float8               ... FAILED
     bit                  ... ok
     numeric              ... ok
test strings              ... ok
test numerology           ... ok
parallel group (20 tests):  comments lseg time path timetz reltime circle tinterval box abstime point polygon interval
timestampinet type_sanity date timestamptz oidjoins opr_sanity 
     point                ... ok
     lseg                 ... ok
     box                  ... ok
     path                 ... ok
     polygon              ... ok
     circle               ... ok
     date                 ... ok
     time                 ... ok
     timetz               ... ok
     timestamp            ... ok
     timestamptz          ... ok
     interval             ... ok
     abstime              ... ok
     reltime              ... ok
     tinterval            ... ok
     inet                 ... ok
     comments             ... ok
     oidjoins             ... ok
     type_sanity          ... ok
     opr_sanity           ... ok
test geometry             ... ok
test horology             ... ok
test insert               ... ok
test create_function_1    ... ok
test create_type          ... ok
test create_table         ... ok
test create_function_2    ... ok
test copy                 ... ok
parallel group (7 tests):  create_operator create_aggregate vacuum triggers create_misc inherit constraints
     constraints          ... ok
     triggers             ... ok
     create_misc          ... ok
     create_aggregate     ... ok
     create_operator      ... ok
     inherit              ... ok
     vacuum               ... ok
parallel group (2 tests):  create_view create_index
     create_index         ... ok
     create_view          ... ok
test sanity_check         ... ok
test errors               ... ok
test select               ... ok
parallel group (18 tests):  select_distinct_on select_into update random btree_index namespace select_having
select_distincthash_index aggregates case transactions select_implicit union subselect arrays portals join 
     select_into          ... ok
     select_distinct      ... ok
     select_distinct_on   ... ok
     select_implicit      ... ok
     select_having        ... ok
     subselect            ... ok
     union                ... ok
     case                 ... ok
     join                 ... ok
     aggregates           ... ok
     transactions         ... ok
     random               ... ok
     portals              ... ok
     arrays               ... ok
     btree_index          ... ok
     hash_index           ... ok
     update               ... ok
     namespace            ... ok
test privileges           ... ok
test misc                 ... ok
parallel group (5 tests):  select_views portals_p2 cluster foreign_key rules
     select_views         ... ok
     portals_p2           ... ok
     rules                ... ok
     foreign_key          ... ok
     cluster              ... ok
parallel group (13 tests):  limit prepare copy2 domain truncate sequence rangefuncs temp polymorphism without_oid
conversionplpgsql alter_table 
     limit                ... ok
     plpgsql              ... ok
     copy2                ... ok
     temp                 ... ok
     domain               ... ok
     rangefuncs           ... ok
     prepare              ... ok
     without_oid          ... ok
     conversion           ... ok
     truncate             ... ok
     alter_table          ... ok
     sequence             ... ok
     polymorphism         ... ok
test stats                ... ok
*** ./expected/float8-small-is-zero.out    Fri Sep 26 00:16:34 2003
--- ./results/float8.out    Thu Mar 18 11:26:20 2004
***************
*** 7,12 ****
--- 7,86 ----
  INSERT INTO FLOAT8_TBL(f1) VALUES ('   -34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
+ -- test for underflow and overflow
+ 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');
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
+ -- bad input
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
+ ERROR:  invalid input syntax for type double precision: "     "
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
+ ERROR:  invalid input syntax for type double precision: "xyz"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
+ ERROR:  invalid input syntax for type double precision: "5.0.0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
+ ERROR:  invalid input syntax for type double precision: "5 . 0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.   0');
+ ERROR:  invalid input syntax for type double precision: "5.   0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('    - 3');
+ ERROR:  invalid input syntax for type double precision: "    - 3"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('123           5');
+ ERROR:  invalid input syntax for type double precision: "123           5"
+ -- special inputs
+ SELECT 'NaN'::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT 'nan'::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT '   NAN  '::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT 'infinity'::float8;
+   float8
+ ----------
+  Infinity
+ (1 row)
+
+ SELECT '          -INFINiTY   '::float8;
+   float8
+ -----------
+  -Infinity
+ (1 row)
+
+ -- bad special inputs
+ SELECT 'N A N'::float8;
+ ERROR:  invalid input syntax for type double precision: "N A N"
+ SELECT 'NaN x'::float8;
+ ERROR:  invalid input syntax for type double precision: "NaN x"
+ SELECT ' INFINITY    x'::float8;
+ ERROR:  invalid input syntax for type double precision: " INFINITY    x"
+ SELECT 'Infinity'::float8 + 100.0;
+ ERROR:  type "double precision" value out of range: overflow
+ SELECT 'Infinity'::float8 / 'Infinity'::float8;
+  ?column?
+ ----------
+       NaN
+ (1 row)
+
+ SELECT 'nan'::float8 / 'nan'::float8;
+  ?column?
+ ----------
+       NaN
+ (1 row)
+
  SELECT '' AS five, FLOAT8_TBL.*;
   five |          f1
  ------+----------------------
***************
*** 15,21 ****
        |               -34.84
        | 1.2345678901234e+200
        | 1.2345678901234e-200
! (5 rows)

  SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
   four |          f1
--- 89,97 ----
        |               -34.84
        | 1.2345678901234e+200
        | 1.2345678901234e-200
!       |                    0
!       |                   -0
! (7 rows)

  SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE f.f1 <> '1004.3';
   four |          f1
***************
*** 24,30 ****
        |               -34.84
        | 1.2345678901234e+200
        | 1.2345678901234e-200
! (4 rows)

  SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
   one |   f1
--- 100,108 ----
        |               -34.84
        | 1.2345678901234e+200
        | 1.2345678901234e-200
!       |                    0
!       |                   -0
! (6 rows)

  SELECT '' AS one, f.* FROM FLOAT8_TBL f WHERE f.f1 = '1004.3';
   one |   f1
***************
*** 38,44 ****
         |                    0
         |               -34.84
         | 1.2345678901234e-200
! (3 rows)

  SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE  f.f1 < '1004.3';
   three |          f1
--- 116,124 ----
         |                    0
         |               -34.84
         | 1.2345678901234e-200
!        |                    0
!        |                   -0
! (5 rows)

  SELECT '' AS three, f.* FROM FLOAT8_TBL f WHERE  f.f1 < '1004.3';
   three |          f1
***************
*** 46,52 ****
         |                    0
         |               -34.84
         | 1.2345678901234e-200
! (3 rows)

  SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
   four |          f1
--- 126,134 ----
         |                    0
         |               -34.84
         | 1.2345678901234e-200
!        |                    0
!        |                   -0
! (5 rows)

  SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE '1004.3' >= f.f1;
   four |          f1
***************
*** 55,61 ****
        |               1004.3
        |               -34.84
        | 1.2345678901234e-200
! (4 rows)

  SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE  f.f1 <= '1004.3';
   four |          f1
--- 137,145 ----
        |               1004.3
        |               -34.84
        | 1.2345678901234e-200
!       |                    0
!       |                   -0
! (6 rows)

  SELECT '' AS four, f.* FROM FLOAT8_TBL f WHERE  f.f1 <= '1004.3';
   four |          f1
***************
*** 64,70 ****
        |               1004.3
        |               -34.84
        | 1.2345678901234e-200
! (4 rows)

  SELECT '' AS three, f.f1, f.f1 * '-10' AS x
     FROM FLOAT8_TBL f
--- 148,156 ----
        |               1004.3
        |               -34.84
        | 1.2345678901234e-200
!       |                    0
!       |                   -0
! (6 rows)

  SELECT '' AS three, f.f1, f.f1 * '-10' AS x
     FROM FLOAT8_TBL f
***************
*** 123,129 ****
        |               -34.84 |                34.84
        | 1.2345678901234e+200 | 1.2345678901234e+200
        | 1.2345678901234e-200 | 1.2345678901234e-200
! (5 rows)

  -- truncate
  SELECT '' AS five, f.f1, %f.f1 AS trunc_f1
--- 209,217 ----
        |               -34.84 |                34.84
        | 1.2345678901234e+200 | 1.2345678901234e+200
        | 1.2345678901234e-200 | 1.2345678901234e-200
!       |                    0 |                    0
!       |                   -0 |                    0
! (7 rows)

  -- truncate
  SELECT '' AS five, f.f1, %f.f1 AS trunc_f1
***************
*** 135,141 ****
        |               -34.84 |                  -34
        | 1.2345678901234e+200 | 1.2345678901234e+200
        | 1.2345678901234e-200 |                    0
! (5 rows)

  -- round
  SELECT '' AS five, f.f1, f.f1 % AS round_f1
--- 223,231 ----
        |               -34.84 |                  -34
        | 1.2345678901234e+200 | 1.2345678901234e+200
        | 1.2345678901234e-200 |                    0
!       |                    0 |                    0
!       |                   -0 |                   -0
! (7 rows)

  -- round
  SELECT '' AS five, f.f1, f.f1 % AS round_f1
***************
*** 147,153 ****
        |               -34.84 |                  -35
        | 1.2345678901234e+200 | 1.2345678901234e+200
        | 1.2345678901234e-200 |                    0
! (5 rows)

  -- ceil
  select ceil(f1) as ceil_f1 from float8_tbl f;
--- 237,245 ----
        |               -34.84 |                  -35
        | 1.2345678901234e+200 | 1.2345678901234e+200
        | 1.2345678901234e-200 |                    0
!       |                    0 |                    0
!       |                   -0 |                   -0
! (7 rows)

  -- ceil
  select ceil(f1) as ceil_f1 from float8_tbl f;
***************
*** 158,164 ****
                    -34
   1.2345678901234e+200
                      1
! (5 rows)

  -- floor
  select floor(f1) as floor_f1 from float8_tbl f;
--- 250,258 ----
                    -34
   1.2345678901234e+200
                      1
!                     0
!                    -0
! (7 rows)

  -- floor
  select floor(f1) as floor_f1 from float8_tbl f;
***************
*** 169,175 ****
                    -35
   1.2345678901234e+200
                      0
! (5 rows)

  -- sign
  select sign(f1) as sign_f1 from float8_tbl f;
--- 263,271 ----
                    -35
   1.2345678901234e+200
                      0
!                     0
!                    -0
! (7 rows)

  -- sign
  select sign(f1) as sign_f1 from float8_tbl f;
***************
*** 180,186 ****
        -1
         1
         1
! (5 rows)

  -- square root
  SELECT sqrt(float8 '64') AS eight;
--- 276,284 ----
        -1
         1
         1
!        0
!        0
! (7 rows)

  -- square root
  SELECT sqrt(float8 '64') AS eight;
***************
*** 231,237 ****
        |               -34.84 |    -3.26607421344208
        | 1.2345678901234e+200 | 4.97933859234765e+66
        | 1.2345678901234e-200 |  2.3112042409018e-67
! (5 rows)

  SELECT '' AS five, FLOAT8_TBL.*;
   five |          f1
--- 329,337 ----
        |               -34.84 |    -3.26607421344208
        | 1.2345678901234e+200 | 4.97933859234765e+66
        | 1.2345678901234e-200 |  2.3112042409018e-67
!       |                    0 |                    0
!       |                   -0 |                   -0
! (7 rows)

  SELECT '' AS five, FLOAT8_TBL.*;
   five |          f1
***************
*** 241,247 ****
        |               -34.84
        | 1.2345678901234e+200
        | 1.2345678901234e-200
! (5 rows)

  UPDATE FLOAT8_TBL
     SET f1 = FLOAT8_TBL.f1 * '-1'
--- 341,349 ----
        |               -34.84
        | 1.2345678901234e+200
        | 1.2345678901234e-200
!       |                    0
!       |                   -0
! (7 rows)

  UPDATE FLOAT8_TBL
     SET f1 = FLOAT8_TBL.f1 * '-1'
***************
*** 263,272 ****
  ------+-----------------------
        |                     0
        |                -34.84
        |               -1004.3
        | -1.2345678901234e+200
        | -1.2345678901234e-200
! (5 rows)

  -- test for over- and underflow
  INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
--- 365,376 ----
  ------+-----------------------
        |                     0
        |                -34.84
+       |                     0
+       |                    -0
        |               -1004.3
        | -1.2345678901234e+200
        | -1.2345678901234e-200
! (7 rows)

  -- test for over- and underflow
  INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');

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


Re: float8 regression test failure in head

From
Tom Lane
Date:
Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
> Attached are the test failures I'm currently getting.

It looks like Neil didn't update expected/float8-small-is-zero.out
for his recent changes (for which, shame on him).  Would you get
together to verify the correct regression outputs for your platform
and commit the updated expected file?
        regards, tom lane


Re: float8 regression test failure in head

From
Christopher Kings-Lynne
Date:
This has not yet been fixed...

Chris

Tom Lane wrote:

> Christopher Kings-Lynne <chriskl@familyhealth.com.au> writes:
> 
>>Attached are the test failures I'm currently getting.
> 
> 
> It looks like Neil didn't update expected/float8-small-is-zero.out
> for his recent changes (for which, shame on him).  Would you get
> together to verify the correct regression outputs for your platform
> and commit the updated expected file?
> 
>             regards, tom lane


Re: float8 regression test failure in head

From
Neil Conway
Date:
Christopher Kings-Lynne wrote:
> This has not yet been fixed...

Attached is a patch for this issue. I've checked with Chris, and this
patch allows the regression tests to pass on his machine. I also
updated float8-exp-three-digits expected file, but I wasn't able to
test these changes (I don't have access to a QNX machine).

I intend to apply this patch tomorrow.

Cheers,

Neil
Index: src/test/regress/expected/float8-exp-three-digits-win32.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/float8-exp-three-digits-win32.out,v
retrieving revision 1.2
diff -c -r1.2 float8-exp-three-digits-win32.out
*** a/src/test/regress/expected/float8-exp-three-digits-win32.out    15 Mar 2004 16:20:52 -0000    1.2
--- b/src/test/regress/expected/float8-exp-three-digits-win32.out    23 Mar 2004 03:13:54 -0000
***************
*** 7,20 ****
  INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
! -- test for underflow and overflow
! 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');
  ERROR:  "10e-400" is out of range for type double precision
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
  ERROR:  "-10e-400" is out of range for type double precision
  -- bad input
  INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
--- 7,20 ----
  INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
! -- test for underflow and overflow handling
! SELECT '10e400'::float8;
  ERROR:  "10e400" is out of range for type double precision
! SELECT '-10e400'::float8;
  ERROR:  "-10e400" is out of range for type double precision
! SELECT '10e-400'::float8;
  ERROR:  "10e-400" is out of range for type double precision
! SELECT '-10e-400'::float8;
  ERROR:  "-10e-400" is out of range for type double precision
  -- bad input
  INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
Index: src/test/regress/expected/float8-exp-three-digits.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/float8-exp-three-digits.out,v
retrieving revision 1.7
diff -c -r1.7 float8-exp-three-digits.out
*** a/src/test/regress/expected/float8-exp-three-digits.out    25 Sep 2003 16:16:34 -0000    1.7
--- b/src/test/regress/expected/float8-exp-three-digits.out    23 Mar 2004 03:20:50 -0000
***************
*** 2,12 ****
  -- FLOAT8
  --
  CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
  SELECT '' AS five, FLOAT8_TBL.*;
   five |          f1
  ------+----------------------
--- 2,87 ----
  -- FLOAT8
  --
  CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES ('    0.0   ');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30  ');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('   -34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
+ -- test for underflow and overflow handling
+ SELECT '10e400'::float8;
+ ERROR:  "10e400" is out of range for type double precision
+ SELECT '-10e400'::float8;
+ ERROR:  "-10e400" is out of range for type double precision
+ SELECT '10e-400'::float8;
+ ERROR:  "10e-400" is out of range for type double precision
+ SELECT '-10e-400'::float8;
+ ERROR:  "-10e-400" is out of range for type double precision
+ -- bad input
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
+ ERROR:  invalid input syntax for type double precision: "     "
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
+ ERROR:  invalid input syntax for type double precision: "xyz"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
+ ERROR:  invalid input syntax for type double precision: "5.0.0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
+ ERROR:  invalid input syntax for type double precision: "5 . 0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.   0');
+ ERROR:  invalid input syntax for type double precision: "5.   0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('    - 3');
+ ERROR:  invalid input syntax for type double precision: "    - 3"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('123           5');
+ ERROR:  invalid input syntax for type double precision: "123           5"
+ -- special inputs
+ SELECT 'NaN'::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+ SELECT 'nan'::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT '   NAN  '::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT 'infinity'::float8;
+  float8
+ ----------
+  Infinity
+ (1 row)
+
+ SELECT '          -INFINiTY   '::float8;
+   float8
+ -----------
+  -Infinity
+ (1 row)
+
+ -- bad special inputs
+ SELECT 'N A N'::float8;
+ ERROR:  invalid input syntax for type double precision: "N A N"
+ SELECT 'NaN x'::float8;
+ ERROR:  invalid input syntax for type double precision: "NaN x"
+ SELECT ' INFINITY    x'::float8;
+ ERROR:  invalid input syntax for type double precision: " INFINITY    x"
+ SELECT 'Infinity'::float8 + 100.0;
+ ERROR:  type "double precision" value out of range: overflow
+ SELECT 'Infinity'::float8 / 'Infinity'::float8;
+  ?column?
+ ----------
+       NaN
+ (1 row)
+
+ SELECT 'nan'::float8 / 'nan'::float8;
+  ?column?
+ ----------
+       NaN
+ (1 row)
+
  SELECT '' AS five, FLOAT8_TBL.*;
   five |          f1
  ------+----------------------
Index: src/test/regress/expected/float8-small-is-zero.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/float8-small-is-zero.out,v
retrieving revision 1.5
diff -c -r1.5 float8-small-is-zero.out
*** a/src/test/regress/expected/float8-small-is-zero.out    25 Sep 2003 16:16:34 -0000    1.5
--- b/src/test/regress/expected/float8-small-is-zero.out    23 Mar 2004 03:36:37 -0000
***************
*** 2,12 ****
  -- FLOAT8
  --
  CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES ('0.0');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
  SELECT '' AS five, FLOAT8_TBL.*;
   five |          f1
  ------+----------------------
--- 2,96 ----
  -- FLOAT8
  --
  CREATE TABLE FLOAT8_TBL(f1 float8);
! INSERT INTO FLOAT8_TBL(f1) VALUES ('    0.0   ');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('1004.30  ');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('   -34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
+ -- test for underflow and overflow handling
+ SELECT '10e400'::float8;
+ ERROR:  "10e400" is out of range for type double precision
+ SELECT '-10e400'::float8;
+ ERROR:  "-10e400" is out of range for type double precision
+ SELECT '10e-400'::float8;
+  float8
+ --------
+      0
+ (1 row)
+
+ SELECT '-10e-400'::float8;
+  float8
+ --------
+     -0
+ (1 row)
+
+ -- bad input
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
+ ERROR:  invalid input syntax for type double precision: "     "
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('xyz');
+ ERROR:  invalid input syntax for type double precision: "xyz"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.0.0');
+ ERROR:  invalid input syntax for type double precision: "5.0.0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5 . 0');
+ ERROR:  invalid input syntax for type double precision: "5 . 0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('5.   0');
+ ERROR:  invalid input syntax for type double precision: "5.   0"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('    - 3');
+ ERROR:  invalid input syntax for type double precision: "    - 3"
+ INSERT INTO FLOAT8_TBL(f1) VALUES ('123           5');
+ ERROR:  invalid input syntax for type double precision: "123           5"
+ -- special inputs
+ SELECT 'NaN'::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT 'nan'::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT '   NAN  '::float8;
+  float8
+ --------
+     NaN
+ (1 row)
+
+ SELECT 'infinity'::float8;
+   float8
+ ----------
+  Infinity
+ (1 row)
+
+ SELECT '          -INFINiTY   '::float8;
+   float8
+ -----------
+  -Infinity
+ (1 row)
+
+ -- bad special inputs
+ SELECT 'N A N'::float8;
+ ERROR:  invalid input syntax for type double precision: "N A N"
+ SELECT 'NaN x'::float8;
+ ERROR:  invalid input syntax for type double precision: "NaN x"
+ SELECT ' INFINITY    x'::float8;
+ ERROR:  invalid input syntax for type double precision: " INFINITY    x"
+ SELECT 'Infinity'::float8 + 100.0;
+ ERROR:  type "double precision" value out of range: overflow
+ SELECT 'Infinity'::float8 / 'Infinity'::float8;
+  ?column?
+ ----------
+       NaN
+ (1 row)
+
+ SELECT 'nan'::float8 / 'nan'::float8;
+  ?column?
+ ----------
+       NaN
+ (1 row)
+
  SELECT '' AS five, FLOAT8_TBL.*;
   five |          f1
  ------+----------------------
Index: src/test/regress/expected/float8.out
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/expected/float8.out,v
retrieving revision 1.19
diff -c -r1.19 float8.out
*** a/src/test/regress/expected/float8.out    12 Mar 2004 00:25:40 -0000    1.19
--- b/src/test/regress/expected/float8.out    23 Mar 2004 03:12:28 -0000
***************
*** 7,20 ****
  INSERT INTO FLOAT8_TBL(f1) VALUES ('   -34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
! -- test for underflow and overflow
! 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');
  ERROR:  "10e-400" is out of range for type double precision
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');
  ERROR:  "-10e-400" is out of range for type double precision
  -- bad input
  INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
--- 7,20 ----
  INSERT INTO FLOAT8_TBL(f1) VALUES ('   -34.84');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');
! -- test for underflow and overflow handling
! SELECT '10e400'::float8;
  ERROR:  "10e400" is out of range for type double precision
! SELECT '-10e400'::float8;
  ERROR:  "-10e400" is out of range for type double precision
! SELECT '10e-400'::float8;
  ERROR:  "10e-400" is out of range for type double precision
! SELECT '-10e-400'::float8;
  ERROR:  "-10e-400" is out of range for type double precision
  -- bad input
  INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
Index: src/test/regress/sql/float8.sql
===================================================================
RCS file: /var/lib/cvs/pgsql-server/src/test/regress/sql/float8.sql,v
retrieving revision 1.10
diff -c -r1.10 float8.sql
*** a/src/test/regress/sql/float8.sql    12 Mar 2004 00:25:43 -0000    1.10
--- b/src/test/regress/sql/float8.sql    23 Mar 2004 03:08:01 -0000
***************
*** 10,20 ****
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');

! -- test for underflow and overflow
! INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400');
! INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400');

  -- bad input
  INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');
--- 10,20 ----
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e+200');
  INSERT INTO FLOAT8_TBL(f1) VALUES ('1.2345678901234e-200');

! -- test for underflow and overflow handling
! SELECT '10e400'::float8;
! SELECT '-10e400'::float8;
! SELECT '10e-400'::float8;
! SELECT '-10e-400'::float8;

  -- bad input
  INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');

Re: float8 regression test failure in head

From
Tom Lane
Date:
Neil Conway <neilc@samurai.com> writes:
> Attached is a patch for this issue. I've checked with Chris, and this 
> patch allows the regression tests to pass on his machine. I also 
> updated float8-exp-three-digits expected file, but I wasn't able to 
> test these changes (I don't have access to a QNX machine).

FWIW, my procedure for handling updates in regression tests that have
multiple expected variants is to apply the same diff that occurs on the
machines I can test to the variants I can't test.  It's possible that
this will be wrong, but 99% of the time it's right and it saves followup
work.

An easy way to apply such changes is to feed a default-format diff
output to patch(1):

diff test.myplatform.orig test.myplatform | patch

patch then bleats about not knowing which file to patch, and you
tell it "test.otherplatform".  Works every time ...
        regards, tom lane


Re: float8 regression test failure in head

From
Neil Conway
Date:
On 22-Mar-04, at 11:03 PM, Neil Conway wrote:
> Attached is a patch for this issue.

Patch applied to CVS HEAD.

-Neil



Re: float8 regression test failure in head

From
Patrick Welche
Date:
On Mon, Mar 22, 2004 at 11:03:38PM -0500, Neil Conway wrote:
> Christopher Kings-Lynne wrote:
> >This has not yet been fixed...
>
> Attached is a patch for this issue. I've checked with Chris, and this
> patch allows the regression tests to pass on his machine. I also
> updated float8-exp-three-digits expected file, but I wasn't able to
> test these changes (I don't have access to a QNX machine).

Mystery: why I haven't I seen this problem before in the last 2 years...
Anyway, on NetBSD-3.99.17/i386, I need the included patch to pass float8.
float8-small-is-zero_1.out probably needs it too, float8.out and
float8-exp-three-digits-win32.out already look OK.

Cheers,

Patrick

Attachment

Re: float8 regression test failure in head

From
Bruce Momjian
Date:
Patrick Welche wrote:
> On Mon, Mar 22, 2004 at 11:03:38PM -0500, Neil Conway wrote:
> > Christopher Kings-Lynne wrote:
> > >This has not yet been fixed...
> > 
> > Attached is a patch for this issue. I've checked with Chris, and this 
> > patch allows the regression tests to pass on his machine. I also 
> > updated float8-exp-three-digits expected file, but I wasn't able to 
> > test these changes (I don't have access to a QNX machine).
> 
> Mystery: why I haven't I seen this problem before in the last 2 years...
> Anyway, on NetBSD-3.99.17/i386, I need the included patch to pass float8.
> float8-small-is-zero_1.out probably needs it too, float8.out and
> float8-exp-three-digits-win32.out already look OK.

You realize that all these platforms use the same file:

float8/i.86-.*-freebsd[234]=float8-small-is-zerofloat8/i.86-.*-openbsd=float8-small-is-zerofloat8/i.86-.*-netbsd=float8-small-is-zerofloat8/m68k-.*-netbsd=float8-small-is-zero

Are we going to have to make a NetBSD/i386-specific file to fix this?
Don't we have some of these platforms on the build farm.  Are they
failing?

--  Bruce Momjian   http://candle.pha.pa.us EnterpriseDB    http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: float8 regression test failure in head

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Don't we have some of these platforms on the build farm.  Are they
> failing?

canary, gazelle, and osprey all pass this test just fine.  Before
accepting any patches in this area we'd better find out the difference
between the OP's netbsd system and those machines.
        regards, tom lane


Re: float8 regression test failure in head

From
Bruce Momjian
Date:
Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Don't we have some of these platforms on the build farm.  Are they
> > failing?
> 
> canary, gazelle, and osprey all pass this test just fine.  Before
> accepting any patches in this area we'd better find out the difference
> between the OP's netbsd system and those machines.

Agreed.

--  Bruce Momjian   http://candle.pha.pa.us EnterpriseDB    http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


Re: float8 regression test failure in head

From
Patrick Welche
Date:
On Thu, Apr 20, 2006 at 11:56:29AM -0400, Bruce Momjian wrote:
> Tom Lane wrote:
> > Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > > Don't we have some of these platforms on the build farm.  Are they
> > > failing?
> > 
> > canary, gazelle, and osprey all pass this test just fine.  Before
> > accepting any patches in this area we'd better find out the difference
> > between the OP's netbsd system and those machines.
> 
> Agreed.

Quoting from my original post "NetBSD-3.99.17/i386" - so what are you
running?

.. and just to check:

patrimoine=# select '1e-400'::float;
ERROR:  "1e-400" is out of range for type double precision
patrimoine=# select version();                                                  version
                 
 
-------------------------------------------------------------------------------------------------------------PostgreSQL
8.2develon i386-unknown-netbsdelf3.99.17, compiled by GCC gcc (GCC) 3.3.3 (NetBSD nb3 20040520)
 
(1 row)


1e-400 wasn't rounded down to 0.



Cheers,

Patrick


Re: float8 regression test failure in head

From
Tom Lane
Date:
Patrick Welche <prlw1@newn.cam.ac.uk> writes:
>>> canary, gazelle, and osprey all pass this test just fine.  Before
>>> accepting any patches in this area we'd better find out the difference
>>> between the OP's netbsd system and those machines.

> Quoting from my original post "NetBSD-3.99.17/i386" - so what are you
> running?

http://www.pgbuildfarm.org/cgi-bin/show_members.pl

The entries in the buildfarm list say things like "NetBSD 3.0".  Is 3.99
newer?  If so, has its underflow handling changed?
        regards, tom lane