• Tom Lane's avatar
    Cache the result of converting now() to a struct pg_tm. · 0a87ddff
    Tom Lane authored
    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
    0a87ddff
datetime.c 122 KB