*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
* SELECT added by daveh@insightdist.com 5/20/98 to allow
* 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);
- estate->es_junkFilter = j;
-
+ bool junk_filter_needed = false;
+ List *tlist;
+
if (operation == CMD_SELECT)
- tupType = j->jf_cleanTupType;
- }
- else
- estate->es_junkFilter = NULL;
+ {
+ foreach(tlist, targetList)
+ {
+ 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
* ----------------