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)
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 |