Re: \timing interval - Mailing list pgsql-hackers

From Corey Huinker
Subject Re: \timing interval
Date
Msg-id CADkLM=cdWod1M_2_8H1PjPxxF0qZ+-prmrs2BTT8Y6nbyXUhUw@mail.gmail.com
Whole thread
In response to Re: \timing interval  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: \timing interval
List pgsql-hackers
On Thu, Sep 1, 2016 at 2:43 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
I wrote:
> Sorry, that probably added no clarity at all, I was confusing
> seconds with milliseconds in the example values :-(

After a bit of further fooling with sample values, I propose this
progression:

Time: 0.100 ms
Time: 1.200 ms
Time: 1001.200 ms (0:01.001)
Time: 12001.200 ms (0:12.001)
Time: 60001.200 ms (1:00.001)
Time: 720001.200 ms (12:00.001)
Time: 3660001.200 ms (1:01:00.001)
Time: 43920001.200 ms (12:12:00.001)
Time: 176460001.200 ms (2 01:01:00.001)
Time: 216720001.200 ms (2 12:12:00.001)
Time: 10000000000000000000.000 ms (115740740740 17:46:40.000)

Note that times from 1 second to 1 hour all get the nn:nn.nnn
treatment.  I experimented with these variants for sub-minute times:

Time: 1001.200 ms (1.001)
Time: 12001.200 ms (12.001)
Time: 1001.200 ms (1.001 s)
Time: 12001.200 ms (12.001 s)

but it seems like the first variant is not terribly intelligible and
the second variant is inconsistent with what happens for longer times.
Adding a zero minutes field is a subtler way of cueing the reader that
it's mm:ss.

                        regards, tom lane

Well, if we're looking to be consistent, here's what interval does now:

# select '1 second 1 millisecond'::interval, '1 minute 2 milliseconds'::interval, '1 hour 30 milliseconds'::interval, '1 day 1 hour 999 milliseconds'::interval, '1 week 1 day 1 hour'::interval;
   interval   |   interval   |  interval   |      interval      |    interval
--------------+--------------+-------------+--------------------+-----------------
 00:00:01.001 | 00:01:00.002 | 01:00:00.03 | 1 day 01:00:00.999 | 8 days 01:00:00
(1 row)


Should we just plug into whatever code that uses? It's slightly different:

# select interval '10000000000000000000.001 milliseconds'::interval;
ERROR:  interval field value out of range: "10000000000000000000.001 milliseconds"
LINE 1: select interval '10000000000000000000.001 milliseconds'::int...
                        ^
# select interval '216720001.200 milliseconds';
   interval
---------------
 60:12:00.0012
(1 row)

# select interval '176460001.200 ms';
   interval
---------------
 49:01:00.0012
(1 row)

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: \timing interval
Next
From: Tom Lane
Date:
Subject: Re: \timing interval