• Tom Lane's avatar
    Fix handling of data-modifying CTE subplans in EvalPlanQual. · 7c1719bc
    Tom Lane authored
    We can't just skip initializing such subplans, because the referencing CTE
    node will expect to find the subplan available when it initializes.  That
    in turn means that ExecInitModifyTable must allow the case (which actually
    it needed to do anyway, since there's no guarantee that ModifyTable is
    exactly at the top of the CTE plan tree).  So move the complaint about not
    being allowed in EvalPlanQual mode to execution instead of initialization.
    Testing turned up yet another problem, which is that we'd try to
    re-initialize the result relation's index list, leading to leaks and
    dangling pointers.
    
    Per report from Phil Sorber.  Back-patch to 9.1 where data-modifying CTEs
    were introduced.
    7c1719bc
nodeModifyTable.c 34.1 KB