Executor question - Mailing list pgsql-hackers

From Andrew Gierth
Subject Executor question
Date
Msg-id 87vdyssmf0.fsf@news-spur.riddles.org.uk
Whole thread Raw
Responses Re: Executor question  (Tom Lane <tgl@sss.pgh.pa.us>)
List 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 by date:

Previous
From: Stephen Frost
Date:
Subject: Re: pg_dump(all) library
Next
From: Kenneth Marshall
Date:
Subject: Re: [RFC] Unsigned integer support.