On Thu, Dec 10, 2020 at 3:59 PM Hou, Zhijie <houzj.f...@cn.fujitsu.com> wrote: > > Hi > > + allow = ps && IsA(ps, GatherState) && !ps->ps_ProjInfo && > + plannedstmt->parallelModeNeeded && > + plannedstmt->planTree && > + IsA(plannedstmt->planTree, Gather) && > + plannedstmt->planTree->lefttree && > + > plannedstmt->planTree->lefttree->parallel_aware && > + > plannedstmt->planTree->lefttree->parallel_safe; > > I noticed it check both IsA(ps, GatherState) and IsA(plannedstmt->planTree, > Gather). > Does it mean it is possible that IsA(ps, GatherState) is true but > IsA(plannedstmt->planTree, Gather) is false ? > > I did some test but did not find a case like that. >
This seems like an extra check. Apart from that if we combine 0001 and 0002 there should be an additional protection so that it should not happen that in cost_gather we have ignored the parallel tuple cost and now we are rejecting the parallel insert. Probably we should add an assert. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com