]> granicus.if.org Git - postgresql/commitdiff
Add some regression test cases for denormalized float8 input.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 1 Feb 2012 18:13:54 +0000 (13:13 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 1 Feb 2012 18:13:54 +0000 (13:13 -0500)
This was submitted with the previous patch, but I'm committing it
separately to ease backing it out if these results prove too unportable.

Marti Raudsepp, after a proposal by Jeroen Vermeulen

src/test/regress/expected/float8-exp-three-digits-win32.out
src/test/regress/expected/float8-small-is-zero.out
src/test/regress/expected/float8-small-is-zero_1.out
src/test/regress/expected/float8.out
src/test/regress/sql/float8.sql

index 2dd648d6b9221058cdfa1c2702b6d4a84d1c1ce5..fe97af0029b58c8693da47fa0600b352196ca296 100644 (file)
@@ -24,6 +24,25 @@ SELECT '-10e-400'::float8;
 ERROR:  "-10e-400" is out of range for type double precision
 LINE 1: SELECT '-10e-400'::float8;
                ^
+-- test whether denormalized values are accepted
+SELECT '4.95e-324'::float8 < '1.49e-323'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT '4.95e-324'::float8 > '0'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT substr('-4.95e-324'::float8::text, 1, 4);
+ substr 
+--------
+ -4.9
+(1 row)
+
 -- bad input
 INSERT INTO FLOAT8_TBL(f1) VALUES ('');
 ERROR:  invalid input syntax for type double precision: ""
index 5da743374c9174112fd7bfcaff2b17f25bd1d3a3..2bf2e6ce607127557ceb22fd6f38ca730888195c 100644 (file)
@@ -24,6 +24,25 @@ SELECT '10e-400'::float8;
 
 SELECT '-10e-400'::float8;
  float8 
+-- test whether denormalized values are accepted
+SELECT '4.95e-324'::float8 < '1.49e-323'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT '4.95e-324'::float8 > '0'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT substr('-4.95e-324'::float8::text, 1, 4);
+ substr 
+--------
+ -4.9
+(1 row)
+
 --------
      -0
 (1 row)
index 530842e10233f096b22f371d2dd597e0fd376743..b276eeca4f20856c3665ba58c706f056f0b89e10 100644 (file)
@@ -24,6 +24,25 @@ SELECT '10e-400'::float8;
 
 SELECT '-10e-400'::float8;
  float8 
+-- test whether denormalized values are accepted
+SELECT '4.95e-324'::float8 < '1.49e-323'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT '4.95e-324'::float8 > '0'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT substr('-4.95e-324'::float8::text, 1, 4);
+ substr 
+--------
+ -4.9
+(1 row)
+
 --------
       0
 (1 row)
index 6221538af5c9b8f8adcbd3755eda467e94cc254d..df6ec9c58c7aba0f4006bc6ff9ae43c76ee98b8a 100644 (file)
@@ -24,6 +24,25 @@ SELECT '-10e-400'::float8;
 ERROR:  "-10e-400" is out of range for type double precision
 LINE 1: SELECT '-10e-400'::float8;
                ^
+-- test whether denormalized values are accepted
+SELECT '4.95e-324'::float8 < '1.49e-323'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT '4.95e-324'::float8 > '0'::float8;
+ ?column? 
+----------
+ t
+(1 row)
+
+SELECT substr('-4.95e-324'::float8::text, 1, 4);
+ substr 
+--------
+ -4.9
+(1 row)
+
 -- bad input
 INSERT INTO FLOAT8_TBL(f1) VALUES ('');
 ERROR:  invalid input syntax for type double precision: ""
index 92a574ab7bff24aa688d265cee98b4631cc19bc5..1f24556fed416198103ad3fb1c28658307648afa 100644 (file)
@@ -16,6 +16,11 @@ SELECT '-10e400'::float8;
 SELECT '10e-400'::float8;
 SELECT '-10e-400'::float8;
 
+-- test whether denormalized values are accepted
+SELECT '4.95e-324'::float8 < '1.49e-323'::float8;
+SELECT '4.95e-324'::float8 > '0'::float8;
+SELECT substr('-4.95e-324'::float8::text, 1, 4);
+
 -- bad input
 INSERT INTO FLOAT8_TBL(f1) VALUES ('');
 INSERT INTO FLOAT8_TBL(f1) VALUES ('     ');