Executor question

From: Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Executor question
Date: 2008-07-26 15:19:31
Message-ID: 87vdyssmf0.fsf@news-spur.riddles.org.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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 scribbling on 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)

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kenneth Marshall 2008-07-26 16:06:21 Re: [RFC] Unsigned integer support.
Previous Message Stephen Frost 2008-07-26 15:13:27 Re: pg_dump(all) library