• Tom Lane's avatar
    Remove useless entries for aggregate functions from fmgrtab.c. · f21636e5
    Tom Lane authored
    Gen_fmgrtab.pl treated aggregate functions the same as other built-in
    functions, which is wasteful because there is no real need to have
    entries for them in the fmgr_builtins[] table.  Suppressing those
    entries saves about 3KB in the compiled table on my machine; which
    is not a lot but it's not nothing either, considering that that
    table is pretty "hot".  The only outside code change needed is
    that ExecInitWindowAgg() can't be allowed to call fmgr_info_cxt()
    on a plain aggregate function.  But that saves a few cycles anyway.
    
    Having done that, the aggregate_dummy() function is unreferenced
    and might as well be dropped.  Using "aggregate_dummy" as the prosrc
    value for an aggregate is now just a documentation convention not
    something that matters.  There was some discussion of using NULL
    instead to save a few bytes in pg_proc, but we'd have to remove
    prosrc's BKI_FORCE_NOT_NULL marking which doesn't seem a great idea.
    Anyway, it's possible there's client-side code that expects to
    see "aggregate_dummy" there, so I'm loath to change it without a
    strong reason.
    
    Discussion: https://postgr.es/m/533989.1604263665@sss.pgh.pa.us
    f21636e5
nodeAgg.c 155 KB