• Tom Lane's avatar
    Ensure casting to typmod -1 generates a RelabelType. · f9a8bc9f
    Tom Lane authored
    Fix the code changed by commit 5c056b0c2 so that we always generate
    RelabelType, not something else, for a cast to unspecified typmod.
    Otherwise planner optimizations might not happen.
    
    It appears we missed this point because the previous experiments were
    done on type numeric: the parser undesirably generates a call on the
    numeric() length-coercion function, but then numeric_support()
    optimizes that down to a RelabelType, so that everything seems fine.
    It misbehaves for types that have a non-optimized length coercion
    function, such as bpchar.
    
    Per report from John Naylor.  Back-patch to all supported branches,
    as the previous patch eventually was.  Unfortunately, that no longer
    includes 9.6 ... we really shouldn't put this type of change into a
    nearly-EOL branch.
    
    Discussion: https://postgr.es/m/CAFBsxsEfbFHEkouc+FSj+3K1sHipLPbEC67L0SAe-9-da8QtYg@mail.gmail.com
    f9a8bc9f
expressions.sql 5.08 KB