|
|
|
@ -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 |
|
|
|
|
------+---------------------- |
|
|
|
|