• Tom Lane's avatar
    Remove inadequate assertion check in CTE inlining. · da22ef38
    Tom Lane authored
    inline_cte() expected to find exactly as many references to the
    target CTE as its cterefcount indicates.  While that should be
    accurate for the tree as emitted by the parser, there are some
    optimizations that occur upstream of here that could falsify it,
    notably removal of unused subquery output expressions.
    
    Trying to make the accounting 100% accurate seems expensive and
    doomed to future breakage.  It's not really worth it, because
    all this code is protecting is downstream assumptions that every
    referenced CTE has a plan.  Let's convert those assertions to
    regular test-and-elog just in case there's some actual problem,
    and then drop the failing assertion.
    
    Per report from Tomas Vondra (thanks also to Richard Guo for
    analysis).  Back-patch to v12 where the faulty code came in.
    
    Discussion: https://postgr.es/m/29196a1e-ed47-c7ca-9be2-b1c636816183@enterprisedb.com
    da22ef38
with.sql 36 KB