"Jonah H. Harris" <jonah.harris@gmail.com> writes: > INSERT/UPDATE/DELETE seem to work fine in normal operation but there is an > error with DELETE RETURNING when used through PL/pgSQL.
Probably other places too. I don't see any provision here for ensuring that the variables used in the RETURNING list are actually computed by the plan. This would be masked in the INSERT and non-join UPDATE cases by the fact that the plan has to compute all columns of the target table anyway ... but in a DELETE it'd be an issue.
I think set-returning functions in the RETURNING list might give you some fits too ...
Yeah, I got to looking into the special tuple handling code in execUtils for retrieving the old (deleted) tuple and there's something definitely getting lost along the way in some cases.
I've been stewing on this and haven't yet come up with anything. Have you any thoughts on how we can accomplish this better?
-- Jonah H. Harris, Database Internals Architect EnterpriseDB Corporation 732.331.1324