Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch
Date
Msg-id 1003794.1616532721@sss.pgh.pa.us
Whole thread Raw
In response to Re: Since '2001-09-09 01:46:40'::timestamp microseconds are lost when extracting epoch  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
List pgsql-hackers
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> On 19.03.21 21:06, Tom Lane wrote:
>> I guess the immediate question is how much of a performance gap there
>> is now between the float and numeric implementations.

> Attached are my test script and the full output.

OK ... I prefer to do this sort of timing in a way that's not so
dependent on client I/O speeds, along the lines of

select count(date_part('day', current_date + g * interval '1 day')) from generate_series(0, :N) g;

I applied the v5 patch and ran your test suite that way, producing
the attached results.  It looks pretty promising for me, too.
Most of the cases show about 10%-15% degradation:

# select extract, date_part, extract/date_part as ratio, unit from (select sum(msec) filter (where fn = 'extract') as
extract,sum(msec) filter (where fn = 'date_part') as date_part, unit from timings group by unit) ss order by ratio; 
  extract  | date_part |         ratio          |      unit
-----------+-----------+------------------------+-----------------
 22690.100 | 20705.402 | 1.09585411575201486066 | decade
 22810.005 | 20754.296 | 1.09904980636298142804 | century
 11238.122 | 10190.385 | 1.10281623314526389337 | timezone_minute
 20201.992 | 18303.982 |     1.1036938301184955 | doy
 20121.073 | 18206.290 |     1.1051715094069138 | dow
 23209.090 | 20915.715 | 1.10964841507928368693 | millennium
 18839.455 | 16943.063 | 1.11192734159106886399 | week
 20130.843 | 18010.011 |     1.1177585066438882 | isoyear
 19755.296 | 17668.497 | 1.11810846163089027890 | isodow
 22500.373 | 20112.264 | 1.11873894455641592612 | day
 22631.485 | 20200.266 | 1.12035579135443067928 | month
 22883.344 | 20407.733 | 1.12130749652594925659 | quarter
 22628.524 | 20172.361 | 1.12175882634660365239 | year
 26503.545 | 23493.288 | 1.12813263941598979249 | minute
 26381.817 | 23329.924 | 1.13081452815705700542 | hour
 27236.886 | 24070.860 | 1.13152940941869131390 | microseconds
 11563.820 |  9948.148 |     1.1624093248311143 | timezone_hour
 27728.212 | 23567.973 | 1.17652086583771968849 | second
 28348.328 | 23984.219 | 1.18195751965073367617 | milliseconds
 49902.129 | 30798.034 |     1.6203024193037776 | epoch
 31544.035 | 18250.745 |     1.7283697186060076 | julian
(21 rows)

The outliers are epoch and julian, which unsurprisingly are the
ones you didn't fix yet.

I think a ten-percent-ish slowdown is acceptable for this purpose,
so I think if you can address the points already raised then we're
pretty much good to go with this.

            regards, tom lane

\set ECHO all
\timing on

\set N 10000000

-- date

select count(date_part('day', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('month', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('quarter', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('week', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('year', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('decade', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('century', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('millennium', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('julian', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('isoyear', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('dow', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('isodow', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('doy', current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(date_part('epoch', current_date + g * interval '1 day')) from generate_series(0, :N) g;

select count(extract(day from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(month from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(quarter from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(week from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(year from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(decade from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(century from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(millennium from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(julian from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(isoyear from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(dow from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(isodow from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(doy from current_date + g * interval '1 day')) from generate_series(0, :N) g;
select count(extract(epoch from current_date + g * interval '1 day')) from generate_series(0, :N) g;

-- time

select count(date_part('microseconds', localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('milliseconds', localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('second', localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('minute', localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('hour', localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('epoch', localtime + g * interval '1 second')) from generate_series(0, :N) g;

select count(extract(microseconds from localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(milliseconds from localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(second from localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(minute from localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(hour from localtime + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(epoch from localtime + g * interval '1 second')) from generate_series(0, :N) g;

-- timetz

select count(date_part('microseconds', current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('milliseconds', current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('second', current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('minute', current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('hour', current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('timezone_minute', current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('timezone_hour', current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('epoch', current_time + g * interval '1 second')) from generate_series(0, :N) g;

select count(extract(microseconds from current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(milliseconds from current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(second from current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(minute from current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(hour from current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(timezone_minute from current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(timezone_hour from current_time + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(epoch from current_time + g * interval '1 second')) from generate_series(0, :N) g;

-- timestamp

select count(date_part('microseconds', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('milliseconds', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('second', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('minute', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('hour', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('day', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('month', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('quarter', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('week', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('year', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('decade', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('century', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('millennium', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('julian', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('isoyear', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('dow', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('isodow', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('doy', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('epoch', localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;

select count(extract(microseconds from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(milliseconds from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(second from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(minute from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(hour from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(day from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(month from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(quarter from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(week from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(year from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(decade from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(century from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(millennium from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(julian from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(isoyear from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(dow from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(isodow from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(doy from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(epoch from localtimestamp + g * interval '1 second')) from generate_series(0, :N) g;

-- timestamptz

select count(date_part('microseconds', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('milliseconds', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('second', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('minute', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('hour', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('day', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('month', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('quarter', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('week', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('year', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('decade', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('century', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('millennium', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('julian', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('isoyear', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('dow', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('isodow', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('doy', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('timezone_minute', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('timezone_hour', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('epoch', current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;

select count(extract(microseconds from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(milliseconds from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(second from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(minute from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(hour from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(day from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(month from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(quarter from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(week from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(year from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(decade from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(century from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(millennium from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(julian from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(isoyear from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(dow from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(isodow from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(doy from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(timezone_minute from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(timezone_hour from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(epoch from current_timestamp + g * interval '1 second')) from generate_series(0, :N) g;

-- interval

select count(date_part('microseconds', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('milliseconds', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('second', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('minute', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('hour', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('day', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('month', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('quarter', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('year', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('decade', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('century', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('millennium', g * interval '1 second')) from generate_series(0, :N) g;
select count(date_part('epoch', g * interval '1 second')) from generate_series(0, :N) g;

select count(extract(microseconds from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(milliseconds from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(second from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(minute from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(hour from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(day from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(month from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(quarter from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(year from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(decade from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(century from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(millennium from g * interval '1 second')) from generate_series(0, :N) g;
select count(extract(epoch from g * interval '1 second')) from generate_series(0, :N) g;
--
-- PostgreSQL database dump
--

-- Dumped from database version 14devel
-- Dumped by pg_dump version 14devel

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'SQL_ASCII';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET default_toast_compression = 'pglz';
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

SET default_tablespace = '';

SET default_table_access_method = heap;

--
-- Name: timings; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.timings (
    msec numeric,
    fn text,
    unit text,
    value text
);


ALTER TABLE public.timings OWNER TO postgres;

--
-- Data for Name: timings; Type: TABLE DATA; Schema: public; Owner: postgres
--

COPY public.timings (msec, fn, unit, value) FROM stdin;
5180.515    date_part    day    current_date + g * interval '1 day'
5203.787    date_part    month    current_date + g * interval '1 day'
5306.675    date_part    quarter    current_date + g * interval '1 day'
5414.957    date_part    week    current_date + g * interval '1 day'
5197.415    date_part    year    current_date + g * interval '1 day'
5233.880    date_part    decade    current_date + g * interval '1 day'
5259.760    date_part    century    current_date + g * interval '1 day'
5377.774    date_part    millennium    current_date + g * interval '1 day'
5917.525    date_part    julian    current_date + g * interval '1 day'
5759.533    date_part    isoyear    current_date + g * interval '1 day'
5754.813    date_part    dow    current_date + g * interval '1 day'
5655.134    date_part    isodow    current_date + g * interval '1 day'
6028.292    date_part    doy    current_date + g * interval '1 day'
5991.237    date_part    epoch    current_date + g * interval '1 day'
5771.943    extract    day    current_date + g * interval '1 day'
5776.346    extract    month    current_date + g * interval '1 day'
5838.696    extract    quarter    current_date + g * interval '1 day'
6017.475    extract    week    current_date + g * interval '1 day'
5797.537    extract    year    current_date + g * interval '1 day'
5810.704    extract    decade    current_date + g * interval '1 day'
5838.451    extract    century    current_date + g * interval '1 day'
5881.487    extract    millennium    current_date + g * interval '1 day'
9049.921    extract    julian    current_date + g * interval '1 day'
6353.854    extract    isoyear    current_date + g * interval '1 day'
6330.941    extract    dow    current_date + g * interval '1 day'
6202.410    extract    isodow    current_date + g * interval '1 day'
6348.026    extract    doy    current_date + g * interval '1 day'
10145.366    extract    epoch    current_date + g * interval '1 day'
4283.332    date_part    microseconds    localtime + g * interval '1 second'
4206.173    date_part    milliseconds    localtime + g * interval '1 second'
4111.950    date_part    second    localtime + g * interval '1 second'
4091.874    date_part    minute    localtime + g * interval '1 second'
4120.468    date_part    hour    localtime + g * interval '1 second'
4323.501    date_part    epoch    localtime + g * interval '1 second'
4786.541    extract    microseconds    localtime + g * interval '1 second'
4999.648    extract    milliseconds    localtime + g * interval '1 second'
4892.576    extract    second    localtime + g * interval '1 second'
4681.172    extract    minute    localtime + g * interval '1 second'
4605.876    extract    hour    localtime + g * interval '1 second'
5136.200    extract    epoch    localtime + g * interval '1 second'
4411.680    date_part    microseconds    current_time + g * interval '1 second'
4432.563    date_part    milliseconds    current_time + g * interval '1 second'
4374.950    date_part    second    current_time + g * interval '1 second'
4294.787    date_part    minute    current_time + g * interval '1 second'
4258.783    date_part    hour    current_time + g * interval '1 second'
4563.066    date_part    timezone_minute    current_time + g * interval '1 second'
4457.659    date_part    timezone_hour    current_time + g * interval '1 second'
4647.430    date_part    epoch    current_time + g * interval '1 second'
5075.710    extract    microseconds    current_time + g * interval '1 second'
5233.760    extract    milliseconds    current_time + g * interval '1 second'
5126.352    extract    second    current_time + g * interval '1 second'
4872.501    extract    minute    current_time + g * interval '1 second'
4889.788    extract    hour    current_time + g * interval '1 second'
4955.501    extract    timezone_minute    current_time + g * interval '1 second'
5015.217    extract    timezone_hour    current_time + g * interval '1 second'
5377.584    extract    epoch    current_time + g * interval '1 second'
5955.346    date_part    microseconds    localtimestamp + g * interval '1 second'
5935.035    date_part    milliseconds    localtimestamp + g * interval '1 second'
5848.145    date_part    second    localtimestamp + g * interval '1 second'
5831.416    date_part    minute    localtimestamp + g * interval '1 second'
5803.652    date_part    hour    localtimestamp + g * interval '1 second'
5769.468    date_part    day    localtimestamp + g * interval '1 second'
5819.778    date_part    month    localtimestamp + g * interval '1 second'
5849.743    date_part    quarter    localtimestamp + g * interval '1 second'
6014.519    date_part    week    localtimestamp + g * interval '1 second'
5784.959    date_part    year    localtimestamp + g * interval '1 second'
6172.807    date_part    decade    localtimestamp + g * interval '1 second'
6222.657    date_part    century    localtimestamp + g * interval '1 second'
6182.300    date_part    millennium    localtimestamp + g * interval '1 second'
6583.064    date_part    julian    localtimestamp + g * interval '1 second'
6367.773    date_part    isoyear    localtimestamp + g * interval '1 second'
6344.974    date_part    dow    localtimestamp + g * interval '1 second'
6246.871    date_part    isodow    localtimestamp + g * interval '1 second'
6382.862    date_part    doy    localtimestamp + g * interval '1 second'
6596.429    date_part    epoch    localtimestamp + g * interval '1 second'
6496.251    extract    microseconds    localtimestamp + g * interval '1 second'
6761.816    extract    milliseconds    localtimestamp + g * interval '1 second'
6631.913    extract    second    localtimestamp + g * interval '1 second'
6392.654    extract    minute    localtimestamp + g * interval '1 second'
6354.535    extract    hour    localtimestamp + g * interval '1 second'
6346.387    extract    day    localtimestamp + g * interval '1 second'
6360.977    extract    month    localtimestamp + g * interval '1 second'
6434.271    extract    quarter    localtimestamp + g * interval '1 second'
6542.497    extract    week    localtimestamp + g * interval '1 second'
6362.930    extract    year    localtimestamp + g * interval '1 second'
6387.618    extract    decade    localtimestamp + g * interval '1 second'
6434.422    extract    century    localtimestamp + g * interval '1 second'
6466.045    extract    millennium    localtimestamp + g * interval '1 second'
11359.495    extract    julian    localtimestamp + g * interval '1 second'
6919.297    extract    isoyear    localtimestamp + g * interval '1 second'
6910.778    extract    dow    localtimestamp + g * interval '1 second'
6787.230    extract    isodow    localtimestamp + g * interval '1 second'
6948.939    extract    doy    localtimestamp + g * interval '1 second'
10450.228    extract    epoch    localtimestamp + g * interval '1 second'
5453.363    date_part    microseconds    current_timestamp + g * interval '1 second'
5450.235    date_part    milliseconds    current_timestamp + g * interval '1 second'
5346.234    date_part    second    current_timestamp + g * interval '1 second'
5324.099    date_part    minute    current_timestamp + g * interval '1 second'
5302.169    date_part    hour    current_timestamp + g * interval '1 second'
5328.442    date_part    day    current_timestamp + g * interval '1 second'
5319.765    date_part    month    current_timestamp + g * interval '1 second'
5351.117    date_part    quarter    current_timestamp + g * interval '1 second'
5513.587    date_part    week    current_timestamp + g * interval '1 second'
5290.259    date_part    year    current_timestamp + g * interval '1 second'
5406.541    date_part    decade    current_timestamp + g * interval '1 second'
5370.052    date_part    century    current_timestamp + g * interval '1 second'
5417.243    date_part    millennium    current_timestamp + g * interval '1 second'
5750.156    date_part    julian    current_timestamp + g * interval '1 second'
5882.705    date_part    isoyear    current_timestamp + g * interval '1 second'
6106.503    date_part    dow    current_timestamp + g * interval '1 second'
5766.492    date_part    isodow    current_timestamp + g * interval '1 second'
5892.828    date_part    doy    current_timestamp + g * interval '1 second'
5627.319    date_part    timezone_minute    current_timestamp + g * interval '1 second'
5490.489    date_part    timezone_hour    current_timestamp + g * interval '1 second'
5187.254    date_part    epoch    current_timestamp + g * interval '1 second'
6291.630    extract    microseconds    current_timestamp + g * interval '1 second'
6442.536    extract    milliseconds    current_timestamp + g * interval '1 second'
6336.514    extract    second    current_timestamp + g * interval '1 second'
6102.246    extract    minute    current_timestamp + g * interval '1 second'
6104.173    extract    hour    current_timestamp + g * interval '1 second'
6060.887    extract    day    current_timestamp + g * interval '1 second'
6096.743    extract    month    current_timestamp + g * interval '1 second'
6130.391    extract    quarter    current_timestamp + g * interval '1 second'
6279.483    extract    week    current_timestamp + g * interval '1 second'
6132.714    extract    year    current_timestamp + g * interval '1 second'
6123.841    extract    decade    current_timestamp + g * interval '1 second'
6131.588    extract    century    current_timestamp + g * interval '1 second'
6173.388    extract    millennium    current_timestamp + g * interval '1 second'
11134.619    extract    julian    current_timestamp + g * interval '1 second'
6857.692    extract    isoyear    current_timestamp + g * interval '1 second'
6879.354    extract    dow    current_timestamp + g * interval '1 second'
6765.656    extract    isodow    current_timestamp + g * interval '1 second'
6905.027    extract    doy    current_timestamp + g * interval '1 second'
6282.621    extract    timezone_minute    current_timestamp + g * interval '1 second'
6548.603    extract    timezone_hour    current_timestamp + g * interval '1 second'
9169.715    extract    epoch    current_timestamp + g * interval '1 second'
3967.139    date_part    microseconds    g * interval '1 second'
3960.213    date_part    milliseconds    g * interval '1 second'
3886.694    date_part    second    g * interval '1 second'
3951.112    date_part    minute    g * interval '1 second'
3844.852    date_part    hour    g * interval '1 second'
3833.839    date_part    day    g * interval '1 second'
3856.936    date_part    month    g * interval '1 second'
3900.198    date_part    quarter    g * interval '1 second'
3899.728    date_part    year    g * interval '1 second'
3892.174    date_part    decade    g * interval '1 second'
3901.827    date_part    century    g * interval '1 second'
3938.398    date_part    millennium    g * interval '1 second'
4052.183    date_part    epoch    g * interval '1 second'
4586.754    extract    microseconds    g * interval '1 second'
4910.568    extract    milliseconds    g * interval '1 second'
4740.857    extract    second    g * interval '1 second'
4454.972    extract    minute    g * interval '1 second'
4427.445    extract    hour    g * interval '1 second'
4321.156    extract    day    g * interval '1 second'
4397.419    extract    month    g * interval '1 second'
4479.986    extract    quarter    g * interval '1 second'
4335.343    extract    year    g * interval '1 second'
4367.937    extract    decade    g * interval '1 second'
4405.544    extract    century    g * interval '1 second'
4688.170    extract    millennium    g * interval '1 second'
9623.036    extract    epoch    g * interval '1 second'
\.


--
-- PostgreSQL database dump complete
--


pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: [PATCH] pg_permissions
Next
From: Tom Lane
Date:
Subject: Re: pg_upgrade failing for 200+ million Large Objects