• Tom Lane's avatar
    Standardize some more loops that chase down parallel lists. · c94fb8e8
    Tom Lane authored
    We have forboth() and forthree() macros that simplify iterating
    through several parallel lists, but not everyplace that could
    reasonably use those was doing so.  Also invent forfour() and
    forfive() macros to do the same for four or five parallel lists,
    and use those where applicable.
    
    The immediate motivation for doing this is to reduce the number
    of ad-hoc lnext() calls, to reduce the footprint of a WIP patch.
    However, it seems like good cleanup and error-proofing anyway;
    the places that were combining forthree() with a manually iterated
    loop seem particularly illegible and bug-prone.
    
    There was some speculation about restructuring related parsetree
    representations to reduce the need for parallel list chasing of
    this sort.  Perhaps that's a win, or perhaps not, but in any case
    it would be considerably more invasive than this patch; and it's
    not particularly related to my immediate goal of improving the
    List infrastructure.  So I'll leave that question for another day.
    
    Patch by me; thanks to David Rowley for review.
    
    Discussion: https://postgr.es/m/11587.1550975080@sss.pgh.pa.us
    c94fb8e8
pg_list.h 13.3 KB