• Tom Lane's avatar
    Build "other rels" of appendrel baserels in a separate step. · 53bcf5e3
    Tom Lane authored
    Up to now, otherrel RelOptInfos were built at the same time as baserel
    RelOptInfos, thanks to recursion in build_simple_rel().  However,
    nothing in query_planner's preprocessing cares at all about otherrels,
    only baserels, so we don't really need to build them until just before
    we enter make_one_rel.  This has two benefits:
    
    * create_lateral_join_info did a lot of extra work to propagate
    lateral-reference information from parents to the correct children.
    But if we delay creation of the children till after that, it's
    trivial (and much harder to break, too).
    
    * Since we have all the restriction quals correctly assigned to
    parent appendrels by this point, it'll be possible to do plan-time
    pruning and never make child RelOptInfos at all for partitions that
    can be pruned away.  That's not done here, but will be later on.
    
    Amit Langote, reviewed at various times by Dilip Kumar, Jesper Pedersen,
    Yoshikazu Imai, and David Rowley
    
    Discussion: https://postgr.es/m/9d7c5112-cb99-6a47-d3be-cf1ee6862a1d@lab.ntt.co.jp
    53bcf5e3
allpaths.c 123 KB