Executor question
От | Andrew Gierth |
---|---|
Тема | Executor question |
Дата | |
Msg-id | 87vdyssmf0.fsf@news-spur.riddles.org.uk обсуждение исходный текст |
Ответы |
Re: Executor question
|
Список | pgsql-hackers |
While trying to construct testcases for a patch, I ran into this: execAmi.c has a function ExecMayReturnRawTuples which indicates whether a given plan might return tuples that come straight from a table rather than having been projected. InitPlan() uses this to force the addition of a junk filter to INSERT or SELECT INTO queries that return raw tuples, with this comment: * Initialize the junk filter if needed. SELECT and INSERT queries need a* filter if there are any junk attrs in the tlist. INSERT and SELECT* INTO also need a filter if the plan may return raw disk tuples (else* heap_insert will be scribblingon the source relation!). UPDATE and However, tracing through the code suggests that neither ExecInsert not intorel_receive will modify a passed raw tuple - ExecInsert calls ExecMaterializeSlot before heap_insert, and intorel_receive calls ExecCopySlotTuple before heap_insert. So is the ExecMayReturnRawTuples and corresponding ExecFilterJunk needed at all? Or am I missing something? -- Andrew (irc:RhodiumToad)
В списке pgsql-hackers по дате отправления: