On Wed, Dec 6, 2017 at 1:14 AM, Robert Haas <robertmh...@gmail.com> wrote: > On Tue, Dec 5, 2017 at 7:24 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: >> + EState *estate = gatherstate->ps.state; >> + >> + /* Install our DSA area while executing the plan. */ >> + estate->es_query_dsa = gatherstate->pei->area; >> outerTupleSlot = ExecProcNode(outerPlan); >> + estate->es_query_dsa = NULL; >> >> Won't the above coding pattern create a problem, if ExecProcNode >> throws an error and outer block catches it and continues execution >> (consider the case of execution inside PL blocks)? > > I don't see what the problem is. The query that got aborted by the > error wouldn't be sharing an EState with one that didn't. >
That's right. Ignore my comment, I got confused. Other than that, I don't see any problem with the code as such apart from that it looks slightly hacky. I think Thomas or someone needs to develop a patch on the lines you have mentioned or what Thomas was trying to describe in his email and see how it comes out. -- With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com