> On Wed, Jul 29, 2015 at 7:32 PM, Kouhei Kaigai <kai...@ak.jp.nec.com> wrote:
> >
> > Hi Amit,
> >
> > Could you tell me the code intention around ExecInitFunnel()?
> >
> > ExecInitFunnel() calls InitFunnel() that opens the relation to be
> > scanned by the underlying PartialSeqScan and setup ss_ScanTupleSlot
> > of its scanstate.
> 
> The main need is for relation descriptor which is then required to set
> the scan tuple's slot.  Basically it is required for tuples flowing from
> worker which will use the scan tuple slot of FunnelState.
>
> > According to the comment of InitFunnel(), it open the relation and
> > takes appropriate lock on it. However, an equivalent initialization
> > is also done on InitPartialScanRelation().
> >
> > Why does it acquire the relation lock twice?
> >
> 
> I think locking twice is not required, it is just that I have used the API
> ExecOpenScanRelation() which is used during other node's initialisation
> due to which it lock's twice.  I think in general it should be harmless.
>
Thanks, I could get reason of the implementation.

It looks to me this design is not problematic even if Funnel gets capability
to have multiple sub-plans thus is not associated with a particular relation
as long as target-list and projection-info are appropriately initialized.

Best regards,
--
NEC Business Creation Division / PG-Strom Project
KaiGai Kohei <kai...@ak.jp.nec.com>

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to