Re: es_query_dsa is broken
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Thomas Munro <thomas.munro@enterprisedb.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2017-12-06T09:16:16Z
Lists: pgsql-hackers
On Wed, Dec 6, 2017 at 1:14 AM, Robert Haas <robertmhaas@gmail.com> wrote: > On Tue, Dec 5, 2017 at 7:24 AM, Amit Kapila <amit.kapila16@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
Commits
-
Fix crashes on plans with multiple Gather (Merge) nodes.
- b70ea4c75e5f 10.2 landed
- fd7c0fa732d9 11.0 landed
-
Teach bitmap heap scan to cope with absence of a DSA.
- c6755e233be1 11.0 cited
-
Provide a DSA area for all parallel queries.
- e13029a5ce35 10.0 cited