> 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