Tom Lane wrote: > Andres Freund <andres@anarazel.de> writes: > > On 2017-01-24 21:32:56 -0300, Alvaro Herrera wrote: > >> XMLTABLE is specified by the standard to return multiple rows ... but > >> then as far as my reading goes, it is only supposed to be supported in > >> the range table (FROM clause) not in the target list. I wonder if > >> this would end up better if we only tried to support it in RT. I asked > >> Pavel to implement it like that a few weeks ago, but ... > > > Right - it makes sense in the FROM list - but then it should be an > > executor node, instead of some expression thingy. > > +1 --- we're out of the business of having simple expressions that > return rowsets.
Well, that's it. I'm not committing this patch against two other committers' opinion, plus I was already on the fence about the implementation anyway. I think you should just go with the flow and implement this by creating nodeTableexprscan.c. It's not even difficult.
I am sending new version - it is based on own executor scan node and tuplestore.
Some now obsolete regress tests removed, some new added.
The executor code (memory context usage) should be cleaned little bit - but other code should be good.