Thinking further, it seems we had better also copy down resorigtbl/resorigcol
to ensure that SubqueryScan elimination doesn't change the behavior of reporting of original column sources.
This commit is contained in:
parent
abf293e155
commit
fb30ac54e6
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.116 2005/11/03 17:34:03 tgl Exp $
|
* $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.117 2005/11/03 17:45:29 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -382,9 +382,10 @@ set_subqueryscan_references(SubqueryScan *plan, List *rtable)
|
|||||||
result->initPlan);
|
result->initPlan);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* we also have to transfer the SubqueryScan's result-column names
|
* We also have to transfer the SubqueryScan's result-column names
|
||||||
* into the subplan, else columns sent to client will be improperly
|
* into the subplan, else columns sent to client will be improperly
|
||||||
* labeled if this is the topmost plan level.
|
* labeled if this is the topmost plan level. Copy the "source
|
||||||
|
* column" information too.
|
||||||
*/
|
*/
|
||||||
forboth(lp, plan->scan.plan.targetlist, lc, result->targetlist)
|
forboth(lp, plan->scan.plan.targetlist, lc, result->targetlist)
|
||||||
{
|
{
|
||||||
@ -392,6 +393,8 @@ set_subqueryscan_references(SubqueryScan *plan, List *rtable)
|
|||||||
TargetEntry *ctle = (TargetEntry *) lfirst(lc);
|
TargetEntry *ctle = (TargetEntry *) lfirst(lc);
|
||||||
|
|
||||||
ctle->resname = ptle->resname;
|
ctle->resname = ptle->resname;
|
||||||
|
ctle->resorigtbl = ptle->resorigtbl;
|
||||||
|
ctle->resorigcol = ptle->resorigcol;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user