• Tom Lane's avatar
    Rethink the generation rule for fmgroids.h macros. · 8e1f37c0
    Tom Lane authored
    Traditionally, the names of fmgroids.h macros for pg_proc OIDs
    have been constructed from the prosrc field.  But sometimes the
    same C function underlies multiple pg_proc entries, forcing us
    to make an arbitrary choice of which OID to reference; the other
    entries are then not namable via fmgroids.h.  Moreover, we could
    not have macros at all for pg_proc entries that aren't for
    C-coded functions.
    
    Instead, use the proname field, and append the proargtypes field
    (replacing inter-argument spaces with underscores) if proname is
    not unique.  Special-casing unique entries such as F_OIDEQ removes
    the need to change a lot of code.  Indeed, I can only find two
    places in the tree that need to be adjusted; while this changes
    quite a few existing entries in fmgroids.h, few of them are
    referenced from C code.
    
    With this patch, all entries in pg_proc.dat have macros in fmgroids.h.
    
    Discussion: https://postgr.es/m/472274.1604258384@sss.pgh.pa.us
    8e1f37c0
Gen_fmgrtab.pl 7.6 KB