• Tom Lane's avatar
    Fix create_scan_plan's handling of sortgrouprefs for physical tlists. · 57cd2b6e
    Tom Lane authored
    We should only run apply_pathtarget_labeling_to_tlist if CP_LABEL_TLIST
    was specified, because only in that case has use_physical_tlist checked
    that the labeling will succeed; otherwise we may get an "ORDER/GROUP BY
    expression not found in targetlist" error.  (This subsumes the previous
    test about gating_clauses, because we reset "flags" to zero earlier
    if there are gating clauses to apply.)
    
    The only known case in which a failure can occur is with a ProjectSet
    path directly atop a table scan path, although it seems likely that there
    are other cases or will be such in future.  This means that the failure
    is currently only visible in the v10 branch: 9.6 didn't have ProjectSet,
    while in v11 and HEAD, apply_scanjoin_target_to_paths for some weird
    reason is using create_projection_path not apply_projection_to_path,
    masking the problem because there's a ProjectionPath in between.
    
    Nonetheless this code is clearly wrong on its own terms, so back-patch
    to 9.6 where this logic was introduced.
    
    Per report from Regina Obe.
    
    Discussion: https://postgr.es/m/001501d40f88$75186950$5f493bf0$@pcorp.us
    57cd2b6e
tsrf.out 18.4 KB