]> granicus.if.org Git - postgresql/commitdiff
Fix interval test, which was broken for floating-point timestamps.
authorJeff Davis <jdavis@postgresql.org>
Wed, 7 May 2014 02:35:24 +0000 (19:35 -0700)
committerJeff Davis <jdavis@postgresql.org>
Wed, 7 May 2014 04:48:43 +0000 (21:48 -0700)
Commit 4318daecc959886d001a6e79c6ea853e8b1dfb4b introduced a test that
couldn't be made consistent between integer and floating-point
timestamps.

It was designed to test the longest possible interval output length,
so removing four zeros from the number of hours, as this patch does,
is not ideal. But the test still has some utility for its original
purpose, and there aren't a lot of other good options.

Noah Misch suggested a different approach where we test that the
output either matches what we expect from integer timestamps or what
we expect from floating-point timestamps. That seemed to obscure an
otherwise simple test, however.

Reviewed by Tom Lane and Noah Misch.

src/test/regress/expected/interval.out
src/test/regress/sql/interval.sql

index 5406f97512f0e48f728d36e5698ad3b30e901fd5..bf2325a725b2232ba40282d31812c1e169e1e8e1 100644 (file)
@@ -307,10 +307,13 @@ select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31
 (1 row)
 
 -- test long interval output
-select '100000000y 10mon -1000000000d -1000000000h -10min -10.000001s ago'::interval;
-                                         interval                                          
--------------------------------------------------------------------------------------------
- @ 100000000 years 10 mons -1000000000 days -1000000000 hours -10 mins -10.000001 secs ago
+-- Note: the actual maximum length of the interval output is longer,
+-- but we need the test to work for both integer and floating-point
+-- timestamps.
+select '100000000y 10mon -1000000000d -100000h -10min -10.000001s ago'::interval;
+                                       interval                                        
+---------------------------------------------------------------------------------------
+ @ 100000000 years 10 mons -1000000000 days -100000 hours -10 mins -10.000001 secs ago
 (1 row)
 
 -- test justify_hours() and justify_days()
index 5bbd2696a4a7ece620c59c83b47706fe269e3f22..c954127186052161e3f67487f5153247c729c9b8 100644 (file)
@@ -109,7 +109,10 @@ select avg(f1) from interval_tbl;
 select '4 millenniums 5 centuries 4 decades 1 year 4 months 4 days 17 minutes 31 seconds'::interval;
 
 -- test long interval output
-select '100000000y 10mon -1000000000d -1000000000h -10min -10.000001s ago'::interval;
+-- Note: the actual maximum length of the interval output is longer,
+-- but we need the test to work for both integer and floating-point
+-- timestamps.
+select '100000000y 10mon -1000000000d -100000h -10min -10.000001s ago'::interval;
 
 -- test justify_hours() and justify_days()