@ -58,7 +58,7 @@ static Node *build_subplan(PlannerInfo *root, Plan *plan, PlannerInfo *subroot,
List * plan_params ,
List * plan_params ,
SubLinkType subLinkType , int subLinkId ,
SubLinkType subLinkType , int subLinkId ,
Node * testexpr , bool adjust_testexpr ,
Node * testexpr , bool adjust_testexpr ,
bool unknownEqFalse ) ;
bool unknownEqFalse , bool parallel_safe ) ;
static List * generate_subquery_params ( PlannerInfo * root , List * tlist ,
static List * generate_subquery_params ( PlannerInfo * root , List * tlist ,
List * * paramIds ) ;
List * * paramIds ) ;
static List * generate_subquery_vars ( PlannerInfo * root , List * tlist ,
static List * generate_subquery_vars ( PlannerInfo * root , List * tlist ,
@ -551,7 +551,8 @@ make_subplan(PlannerInfo *root, Query *orig_subquery,
/* And convert to SubPlan or InitPlan format. */
/* And convert to SubPlan or InitPlan format. */
result = build_subplan ( root , plan , subroot , plan_params ,
result = build_subplan ( root , plan , subroot , plan_params ,
subLinkType , subLinkId ,
subLinkType , subLinkId ,
testexpr , true , isTopQual ) ;
testexpr , true , isTopQual ,
best_path - > parallel_safe ) ;
/*
/*
* If it ' s a correlated EXISTS with an unimportant targetlist , we might be
* If it ' s a correlated EXISTS with an unimportant targetlist , we might be
@ -604,7 +605,8 @@ make_subplan(PlannerInfo *root, Query *orig_subquery,
plan_params ,
plan_params ,
ANY_SUBLINK , 0 ,
ANY_SUBLINK , 0 ,
newtestexpr ,
newtestexpr ,
false , true ) ;
false , true ,
best_path - > parallel_safe ) ;
/* Check we got what we expected */
/* Check we got what we expected */
Assert ( IsA ( hashplan , SubPlan ) ) ;
Assert ( IsA ( hashplan , SubPlan ) ) ;
Assert ( hashplan - > parParam = = NIL ) ;
Assert ( hashplan - > parParam = = NIL ) ;
@ -634,7 +636,7 @@ build_subplan(PlannerInfo *root, Plan *plan, PlannerInfo *subroot,
List * plan_params ,
List * plan_params ,
SubLinkType subLinkType , int subLinkId ,
SubLinkType subLinkType , int subLinkId ,
Node * testexpr , bool adjust_testexpr ,
Node * testexpr , bool adjust_testexpr ,
bool unknownEqFalse )
bool unknownEqFalse , bool parallel_safe )
{
{
Node * result ;
Node * result ;
SubPlan * splan ;
SubPlan * splan ;
@ -653,6 +655,7 @@ build_subplan(PlannerInfo *root, Plan *plan, PlannerInfo *subroot,
& splan - > firstColCollation ) ;
& splan - > firstColCollation ) ;
splan - > useHashTable = false ;
splan - > useHashTable = false ;
splan - > unknownEqFalse = unknownEqFalse ;
splan - > unknownEqFalse = unknownEqFalse ;
splan - > parallel_safe = parallel_safe ;
splan - > setParam = NIL ;
splan - > setParam = NIL ;
splan - > parParam = NIL ;
splan - > parParam = NIL ;
splan - > args = NIL ;
splan - > args = NIL ;
@ -1213,6 +1216,12 @@ SS_process_ctes(PlannerInfo *root)
& splan - > firstColCollation ) ;
& splan - > firstColCollation ) ;
splan - > useHashTable = false ;
splan - > useHashTable = false ;
splan - > unknownEqFalse = false ;
splan - > unknownEqFalse = false ;
/*
* CTE scans are not considered for parallelism ( cf
* set_rel_consider_parallel ) .
*/
splan - > parallel_safe = false ;
splan - > setParam = NIL ;
splan - > setParam = NIL ;
splan - > parParam = NIL ;
splan - > parParam = NIL ;
splan - > args = NIL ;
splan - > args = NIL ;