On Aug 26, 2010, at 9:05 AM, Tom Lane wrote:
> On reflection, I think that the current system design for this is
> predicated on the theory that RECORDs really are all the same type, and
> the executor had better be prepared to cope with a series of RECORDs
> that have different tupdescs, or throw error if it cannot. We can see
> that theory at work in record_out() for example. On that theory, the
> blame for this crash should be pinned on ExecMakeTableFunctionResult(),
> which is assuming that all records returned by the SRF will have the
> same typmod. It ought to check that instead of just assuming.
>
> I like this theory mainly because it leads to a back-patchable fix in
> just one place. Trying to get the parser to enforce safety at parse
> time was turning into a horrendous mess :-(
Sorry for the pain, Tom.
David