• Tom Lane's avatar
    Speed up plpgsql function startup by doing fewer pallocs. · 40301c1c
    Tom Lane authored
    Previously, copy_plpgsql_datum did a separate palloc for each variable
    needing instance-local storage.  In simple benchmarks this made for a
    noticeable fraction of the total runtime.  Improve it by precalculating
    the space needed for all of a function's variables and doing just one
    palloc for all of them.
    
    In passing, remove PLPGSQL_DTYPE_EXPR from the list of plpgsql "datum"
    types, since in fact it has nothing in common with the others, and there
    is noplace that needs to discriminate on the basis of dtype between an
    expression and any type of datum.  And add comments clarifying which
    datum struct fields are generic and which aren't.
    
    Tom Lane, reviewed by Pavel Stehule
    
    Discussion: https://postgr.es/m/11986.1514407114@sss.pgh.pa.us
    40301c1c
pl_comp.c 66.4 KB