From 533d0915cfeef2f8e89d73c685e7d9ab1b5e2047 Mon Sep 17 00:00:00 2001 From: Neil Conway Date: Wed, 24 Mar 2004 02:02:27 +0000 Subject: [PATCH] Update the float8 regression tests: they should now pass on FreeBSD 4.x and (in theory) QNX. Thanks to Chris KL for the report. --- .../float8-exp-three-digits-win32.out | 10 +-- .../expected/float8-exp-three-digits.out | 81 ++++++++++++++++- .../regress/expected/float8-small-is-zero.out | 90 ++++++++++++++++++- src/test/regress/expected/float8.out | 10 +-- src/test/regress/sql/float8.sql | 10 +-- 5 files changed, 180 insertions(+), 21 deletions(-) diff --git a/src/test/regress/expected/float8-exp-three-digits-win32.out b/src/test/regress/expected/float8-exp-three-digits-win32.out index db72898ba71..e64a46399ae 100644 --- a/src/test/regress/expected/float8-exp-three-digits-win32.out +++ b/src/test/regress/expected/float8-exp-three-digits-win32.out @@ -7,14 +7,14 @@ 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 -INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); +-- test for underflow and overflow handling +SELECT '10e400'::float8; ERROR: "10e400" is out of range for type double precision -INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); +SELECT '-10e400'::float8; ERROR: "-10e400" is out of range for type double precision -INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); +SELECT '10e-400'::float8; ERROR: "10e-400" is out of range for type double precision -INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); +SELECT '-10e-400'::float8; ERROR: "-10e-400" is out of range for type double precision -- bad input INSERT INTO FLOAT8_TBL(f1) VALUES (' '); diff --git a/src/test/regress/expected/float8-exp-three-digits.out b/src/test/regress/expected/float8-exp-three-digits.out index 8113a3bda87..7cfa2bec168 100644 --- a/src/test/regress/expected/float8-exp-three-digits.out +++ b/src/test/regress/expected/float8-exp-three-digits.out @@ -2,11 +2,86 @@ -- 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 (' 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 ------+---------------------- diff --git a/src/test/regress/expected/float8-small-is-zero.out b/src/test/regress/expected/float8-small-is-zero.out index 618d4decb6d..11eefa230b7 100644 --- a/src/test/regress/expected/float8-small-is-zero.out +++ b/src/test/regress/expected/float8-small-is-zero.out @@ -2,11 +2,95 @@ -- 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 (' 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 ------+---------------------- diff --git a/src/test/regress/expected/float8.out b/src/test/regress/expected/float8.out index 798a67c04fe..03a493aaa4e 100644 --- a/src/test/regress/expected/float8.out +++ b/src/test/regress/expected/float8.out @@ -7,14 +7,14 @@ 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 -INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400'); +-- test for underflow and overflow handling +SELECT '10e400'::float8; ERROR: "10e400" is out of range for type double precision -INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); +SELECT '-10e400'::float8; ERROR: "-10e400" is out of range for type double precision -INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); +SELECT '10e-400'::float8; ERROR: "10e-400" is out of range for type double precision -INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); +SELECT '-10e-400'::float8; ERROR: "-10e-400" is out of range for type double precision -- bad input INSERT INTO FLOAT8_TBL(f1) VALUES (' '); diff --git a/src/test/regress/sql/float8.sql b/src/test/regress/sql/float8.sql index 593df68a326..4c706099cdd 100644 --- a/src/test/regress/sql/float8.sql +++ b/src/test/regress/sql/float8.sql @@ -10,11 +10,11 @@ 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'); -INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400'); -INSERT INTO FLOAT8_TBL(f1) VALUES ('10e-400'); -INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e-400'); +-- 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 (' ');