Re: [sqlsmith] Failed assertion in parallel worker in ExecInitSubPlan
От | Amit Kapila |
---|---|
Тема | Re: [sqlsmith] Failed assertion in parallel worker in ExecInitSubPlan |
Дата | |
Msg-id | CAA4eK1Kcg40hZYETGPp1FmZ+ZpetLs6RUwbhXtfgCAXY7Eas+A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [sqlsmith] Failed assertion in parallel worker in ExecInitSubPlan (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
On Mon, Nov 21, 2016 at 9:30 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Amit Kapila <amit.kapila16@gmail.com> writes: >> On Mon, Nov 21, 2016 at 6:10 PM, Amit Kapila <amit.kapila16@gmail.com> wrote: >>> Here instead of checking whether top_plan has initPlan, it should >>> check whether initPlan is present anywhere in plan tree. I think one >>> simple way could be to check *glob->subplans* instead of >>> top_plan->initPlan, > >> Patch based on above suggestion is attached with this mail. > > I think this is the right fix for the moment, because the proximate cause > of the crash is that ExecSerializePlan doesn't transmit any part of the > PlannedStmt.subplans list, which glob->subplans is the preimage of. > > Now, maybe I'm missing something, but it seems to me that ordinary > subplans could be transmitted to workers just fine. The problem with > transmitting initplans is that you'd lose the expectation of single > evaluation. > Yes and I think we can handle it such that master backend evaluates initplans and share the calculated value along with paramid with all the workers. Workers will, in turn, restore it in queryDesc->estate->es_param_exec_vals (or some other place where those can be directly used, I have yet to evaluate on this matter). I am working on a patch to parallelize queries containing initplans/subplans, so I will evaluate your suggestion of passing subplans (maybe non-InitPlans) in ExecSerializePlan as part of that patch. I have yet to figure out what is the best way to share hashed subplans, do we pass them as it is and let each worker evaluate and store it's own copy of hash table or shall we try to form the hash table once in master and then share the same with workers (which could be tricky) or shall we restrict such queries which contain hashed subplans based on assumption that it will be costly for each worker to form the hash table. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: