From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Cache the result of converting now() to a struct pg_tm. |
Date: | 2020-09-28 16:05:19 |
Message-ID: | E1kMveR-0003pU-P6@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Cache the result of converting now() to a struct pg_tm.
SQL operations such as CURRENT_DATE, CURRENT_TIME, LOCALTIME, and
conversion of "now" in a datetime input string have to obtain the
transaction start timestamp ("now()") as a broken-down struct pg_tm.
This is a remarkably expensive conversion, and since now() does not
change intra-transaction, it doesn't really need to be done more than
once per transaction. Introducing a simple cache provides visible
speedups in queries that compute these values many times, for example
insertion of many rows that use a default value of CURRENT_DATE.
Peter Smith, with a bit of kibitzing by me
Discussion: https://postgr.es/m/CAHut+Pu89TWjq530V2gY5O6SWi=OEJMQ_VHMt8bdZB_9JFna5A@mail.gmail.com
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/0a87ddff5c83589e90de236bd55e6a19b017fe9a
Modified Files
--------------
src/backend/utils/adt/date.c | 49 ++++++++++++++---------------
src/backend/utils/adt/datetime.c | 67 +++++++++++++++++++++++++++++++++-------
2 files changed, 80 insertions(+), 36 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2020-09-28 16:49:29 | Re: __pg_log_level in anonynous enum should be initialized? (Was: pgsql: Change SHA2 implementation based on OpenSSL to use EVP digest ro) |
Previous Message | Michael Paquier | 2020-09-28 07:33:30 | __pg_log_level in anonynous enum should be initialized? (Was: pgsql: Change SHA2 implementation based on OpenSSL to use EVP digest ro) |