Commit 5b4ca671 authored by Bruce Momjian's avatar Bruce Momjian

Conditionally execute Junk filter only when ORDER BY of columns

not in target list.
parent 62cd6e7b
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.48 1998/06/15 19:28:19 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.49 1998/07/19 03:46:29 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -522,18 +522,38 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate) ...@@ -522,18 +522,38 @@ InitPlan(CmdType operation, Query *parseTree, Plan *plan, EState *estate)
* SELECT added by daveh@insightdist.com 5/20/98 to allow * SELECT added by daveh@insightdist.com 5/20/98 to allow
* ORDER/GROUP BY have an identifier missing from the target. * ORDER/GROUP BY have an identifier missing from the target.
*/ */
if (operation == CMD_UPDATE || operation == CMD_DELETE ||
operation == CMD_INSERT || operation == CMD_SELECT)
{ {
JunkFilter *j = (JunkFilter *) ExecInitJunkFilter(targetList); bool junk_filter_needed = false;
estate->es_junkFilter = j; List *tlist;
if (operation == CMD_SELECT) if (operation == CMD_SELECT)
tupType = j->jf_cleanTupType; {
} foreach(tlist, targetList)
else {
estate->es_junkFilter = NULL; TargetEntry *tle = lfirst(tlist);
if (tle->resdom->resjunk)
{
junk_filter_needed = true;
break;
}
}
}
if (operation == CMD_UPDATE || operation == CMD_DELETE ||
operation == CMD_INSERT ||
(operation == CMD_SELECT && junk_filter_needed))
{
JunkFilter *j = (JunkFilter *) ExecInitJunkFilter(targetList);
estate->es_junkFilter = j;
if (operation == CMD_SELECT)
tupType = j->jf_cleanTupType;
}
else
estate->es_junkFilter = NULL;
}
/* ---------------- /* ----------------
* initialize the "into" relation * initialize the "into" relation
* ---------------- * ----------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment