Peter Eisentraut <peter.eisentr...@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
--

Reply via email to