postgres.git / summary / log / commit / refs

commit    0510421ee091ee3ddabdd5bd7ed096563f6bf17f
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Mon Nov 20 17:34:06 2017 +0000
First released in: 11.0

    Tweak use of ExecContextForcesOids by Gather (Merge).
    
    Specifically, pass the outer plan's PlanState instead of our own
    PlanState.  At present, ExecContextForcesOids doesn't actually care
    which PlanState we pass; it just looks through to the underlying
    EState to find the result relation or top-level eflags.  However, in
    the future it might care.  If that happens, and if our goal is to get
    a tuple descriptor that matches that of the outer plan, then I think
    what we care about is whether the outer plan's context forces OIDs,
    rather than whether our own context forces OIDs, just as we use the
    outer node's target list rather than our own.
    
    Patch by me, reviewed by Amit Kapila.
    
    Discussion: http://postgr.es/m/CA+TgmoZ0ZL=cesZFq8c9NnfK6bqy-wwUd3_74iYGodYrSoQ7Fw@mail.gmail.com


src/backend/executor/nodeGather.c | 2 +- src/backend/executor/nodeGatherMerge.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/executor/nodeGather.c b/src/backend/executor/nodeGather.c index 07c62d2feab..30885e6f5c2 100644 --- a/src/backend/executor/nodeGather.c +++ b/src/backend/executor/nodeGather.c @@ -112,7 +112,7 @@ ExecInitGather(Gather *node, EState *estate, int eflags) /* * Initialize funnel slot to same tuple descriptor as outer plan. */ - if (!ExecContextForcesOids(&gatherstate->ps, &hasoid)) + if (!ExecContextForcesOids(outerPlanState(gatherstate), &hasoid)) hasoid = false; tupDesc = ExecTypeFromTL(outerNode->targetlist, hasoid); ExecSetSlotDescriptor(gatherstate->funnel_slot, tupDesc); diff --git a/src/backend/executor/nodeGatherMerge.c b/src/backend/executor/nodeGatherMerge.c index 7dd655c4489..d81462e72b4 100644 --- a/src/backend/executor/nodeGatherMerge.c +++ b/src/backend/executor/nodeGatherMerge.c @@ -155,7 +155,7 @@ ExecInitGatherMerge(GatherMerge *node, EState *estate, int eflags) * Store the tuple descriptor into gather merge state, so we can use it * while initializing the gather merge slots. */ - if (!ExecContextForcesOids(&gm_state->ps, &hasoid)) + if (!ExecContextForcesOids(outerPlanState(gm_state), &hasoid)) hasoid = false; tupDesc = ExecTypeFromTL(outerNode->targetlist, hasoid); gm_state->tupDesc = tupDesc; [parent: f455e1125e25]