• Tom Lane's avatar
    Propagate xactStartTimestamp and stmtStartTimestamp to parallel workers. · 07ee62ce
    Tom Lane authored
    Previously, a worker process would establish values for these based on
    its own start time.  In v10 and up, this can trivially be shown to cause
    misbehavior of transaction_timestamp(), timestamp_in(), and related
    functions which are (perhaps unwisely?) marked parallel-safe.  It seems
    likely that other behaviors might diverge from what happens in the parent
    as well.
    
    It's not as trivial to demonstrate problems in 9.6 or 9.5, but I'm sure
    it's still possible, so back-patch to all branches containing parallel
    worker infrastructure.
    
    In HEAD only, mark now() and statement_timestamp() as parallel-safe
    (other affected functions already were).  While in theory we could
    still squeeze that change into v11, it doesn't seem important enough
    to force a last-minute catversion bump.
    
    Konstantin Knizhnik, whacked around a bit by me
    
    Discussion: https://postgr.es/m/6406dbd2-5d37-4cb6-6eb2-9c44172c7e7c@postgrespro.ru
    07ee62ce
xact.h 14.1 KB