Re: [HACKERS] parallelize queries containing subplans
От | Dilip Kumar |
---|---|
Тема | Re: [HACKERS] parallelize queries containing subplans |
Дата | |
Msg-id | CAFiTN-vycAZf8AjccdPZqLHDj9n+LwHmNrZF4qFYYCHtNSwTNA@mail.gmail.com обсуждение исходный текст |
Ответ на | [HACKERS] parallelize queries containing subplans (Amit Kapila <amit.kapila16@gmail.com>) |
Ответы |
Re: [HACKERS] parallelize queries containing subplans
|
Список | pgsql-hackers |
On Wed, Dec 28, 2016 at 11:47 AM, Amit Kapila <amit.kapila16@gmail.com> wrote: > Attached patch implements the above idea. This will enable > parallelism for queries containing un-correlated subplans, an example > of which is as follows: I have reviewed the patch (pq_pushdown_subplan_v1.patch), Mostly patch looks clean to me. I have also done some basic functional testing and it's working fine. I have one comment. + else if (IsA(node, AlternativeSubPlan)) + { + AlternativeSubPlan *asplan = (AlternativeSubPlan *) node; + ListCell *lc; + + Assert(context->root); + + foreach(lc, asplan->subplans) + { + SubPlan *splan = (SubPlan *) lfirst(lc); + Plan *plan; + + Assert(IsA(splan, SubPlan)); + + plan = planner_subplan_get_plan(context->root, splan); + if (!plan->parallel_safe) + return true; + } } I see no reason why we need to process the subplan list of AlternativeSubPlan here, Anyway expression_tree_walker will take care of processing each subplan of AlternativeSubPlan. Now in the case where all the subplans in AlternativeSubPlan are parallel_safe we will process this list twice. But, more than that it will be cleaner to not handle AlternativeSubPlan here unless there is some strong reason? -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: