Tom Lane wrote:
> Marko Tiikkaja <marko.tiikkaja@cs.helsinki.fi> writes:
>> I wouldn't care for this at all, but with things the way they are right
>> now, the writeable CTE patch has to do quite a few of these:
>
> [ shrug... ] How many is "quite a few"? In a quick search for existing
> references to targetList in the planner, it looked to me like the
> majority were places that wouldn't be relevant for writable CTEs anyway.
> For example, none of the references in allpaths.c are, because they have
> to do with deciding whether quals can be pushed down into the subquery.
> And the answer to that, for a non-SELECT CTE, is always "no".
It appears we have four of those at the moment (hmm.. I thought there
were more).
> Just a thought ... where you do need this, would it be better to phrase
> it as
>
> if (query->returningList)
> cteList = query->returningList;
> else
> cteList = query->targetList;
>
> ? I'm not sure myself, but it's something to consider.
My initial thought is that this won't work because there might not be a
RETURNING clause, but I'm not sure.
Regards,
Marko Tiikkaja