• Tom Lane's avatar
    Refactor planner's header files. · f09346a9
    Tom Lane authored
    Create a new header optimizer/optimizer.h, which exposes just the
    planner functions that can be used "at arm's length", without need
    to access Paths or the other planner-internal data structures defined
    in nodes/relation.h.  This is intended to provide the whole planner
    API seen by most of the rest of the system; although FDWs still need
    to use additional stuff, and more thought is also needed about just
    what selfuncs.c should rely on.
    
    The main point of doing this now is to limit the amount of new
    #include baggage that will be needed by "planner support functions",
    which I expect to introduce later, and which will be in relevant
    datatype modules rather than anywhere near the planner.
    
    This commit just moves relevant declarations into optimizer.h from
    other header files (a couple of which go away because everything
    got moved), and adjusts #include lists to match.  There's further
    cleanup that could be done if we want to decide that some stuff
    being exposed by optimizer.h doesn't belong in the planner at all,
    but I'll leave that for another day.
    
    Discussion: https://postgr.es/m/11460.1548706639@sss.pgh.pa.us
    f09346a9
deparse.c 90.6 KB