Peter Eisentraut <[email protected]> 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
--