99 *
1010 *
1111 * IDENTIFICATION
12- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.87 2003/01/10 21:08:11 tgl Exp $
12+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.88 2003/01/13 18:10:53 tgl Exp $
1313 *
1414 *-------------------------------------------------------------------------
1515 */
@@ -42,7 +42,6 @@ typedef struct
4242
4343static void fix_expr_references (Plan * plan ,Node * node );
4444static bool fix_expr_references_walker (Node * node ,void * context );
45- static void mark_qual_expressions (List * quals );
4645static void set_join_references (Join * join ,List * rtable );
4746static void set_uppernode_references (Plan * plan ,Index subvarno );
4847static Node * join_references_mutator (Node * node ,
@@ -89,12 +88,10 @@ set_plan_references(Plan *plan, List *rtable)
8988case T_SeqScan :
9089fix_expr_references (plan , (Node * )plan -> targetlist );
9190fix_expr_references (plan , (Node * )plan -> qual );
92- mark_qual_expressions (plan -> qual );
9391break ;
9492case T_IndexScan :
9593fix_expr_references (plan , (Node * )plan -> targetlist );
9694fix_expr_references (plan , (Node * )plan -> qual );
97- mark_qual_expressions (plan -> qual );
9895fix_expr_references (plan ,
9996(Node * ) ((IndexScan * )plan )-> indxqual );
10097fix_expr_references (plan ,
@@ -103,7 +100,6 @@ set_plan_references(Plan *plan, List *rtable)
103100case T_TidScan :
104101fix_expr_references (plan , (Node * )plan -> targetlist );
105102fix_expr_references (plan , (Node * )plan -> qual );
106- mark_qual_expressions (plan -> qual );
107103fix_expr_references (plan ,
108104(Node * ) ((TidScan * )plan )-> tideval );
109105break ;
@@ -118,7 +114,6 @@ set_plan_references(Plan *plan, List *rtable)
118114 */
119115fix_expr_references (plan , (Node * )plan -> targetlist );
120116fix_expr_references (plan , (Node * )plan -> qual );
121- mark_qual_expressions (plan -> qual );
122117
123118/* Recurse into subplan too */
124119rte = rt_fetch (((SubqueryScan * )plan )-> scan .scanrelid ,
@@ -134,7 +129,6 @@ set_plan_references(Plan *plan, List *rtable)
134129
135130fix_expr_references (plan , (Node * )plan -> targetlist );
136131fix_expr_references (plan , (Node * )plan -> qual );
137- mark_qual_expressions (plan -> qual );
138132rte = rt_fetch (((FunctionScan * )plan )-> scan .scanrelid ,
139133rtable );
140134Assert (rte -> rtekind == RTE_FUNCTION );
@@ -145,27 +139,21 @@ set_plan_references(Plan *plan, List *rtable)
145139set_join_references ((Join * )plan ,rtable );
146140fix_expr_references (plan , (Node * )plan -> targetlist );
147141fix_expr_references (plan , (Node * )plan -> qual );
148- mark_qual_expressions (plan -> qual );
149142fix_expr_references (plan , (Node * ) ((Join * )plan )-> joinqual );
150- mark_qual_expressions (((Join * )plan )-> joinqual );
151143break ;
152144case T_MergeJoin :
153145set_join_references ((Join * )plan ,rtable );
154146fix_expr_references (plan , (Node * )plan -> targetlist );
155147fix_expr_references (plan , (Node * )plan -> qual );
156- mark_qual_expressions (plan -> qual );
157148fix_expr_references (plan , (Node * ) ((Join * )plan )-> joinqual );
158- mark_qual_expressions (((Join * )plan )-> joinqual );
159149fix_expr_references (plan ,
160150(Node * ) ((MergeJoin * )plan )-> mergeclauses );
161151break ;
162152case T_HashJoin :
163153set_join_references ((Join * )plan ,rtable );
164154fix_expr_references (plan , (Node * )plan -> targetlist );
165155fix_expr_references (plan , (Node * )plan -> qual );
166- mark_qual_expressions (plan -> qual );
167156fix_expr_references (plan , (Node * ) ((Join * )plan )-> joinqual );
168- mark_qual_expressions (((Join * )plan )-> joinqual );
169157fix_expr_references (plan ,
170158 (Node * ) ((HashJoin * )plan )-> hashclauses );
171159break ;
@@ -192,7 +180,6 @@ set_plan_references(Plan *plan, List *rtable)
192180set_uppernode_references (plan , (Index )0 );
193181fix_expr_references (plan , (Node * )plan -> targetlist );
194182fix_expr_references (plan , (Node * )plan -> qual );
195- mark_qual_expressions (plan -> qual );
196183break ;
197184case T_Result :
198185
@@ -206,9 +193,7 @@ set_plan_references(Plan *plan, List *rtable)
206193set_uppernode_references (plan , (Index )OUTER );
207194fix_expr_references (plan , (Node * )plan -> targetlist );
208195fix_expr_references (plan , (Node * )plan -> qual );
209- mark_qual_expressions (plan -> qual );
210196fix_expr_references (plan , ((Result * )plan )-> resconstantqual );
211- mark_qual_expressions ((List * ) ((Result * )plan )-> resconstantqual );
212197break ;
213198case T_Append :
214199
@@ -283,28 +268,6 @@ fix_expr_references_walker(Node *node, void *context)
283268return expression_tree_walker (node ,fix_expr_references_walker ,context );
284269}
285270
286- /*
287- * mark_qual_expressions
288- * Do final cleanup on qualifier expressions (not targetlists!)
289- *
290- * SubPlans appearing at the top level of a qual expression are marked
291- * to indicate that they need not distinguish UNKNOWN (null) from FALSE
292- * results; this can save processing time in some cases.
293- */
294- static void
295- mark_qual_expressions (List * quals )
296- {
297- List * qual ;
298-
299- foreach (qual ,quals )
300- {
301- Node * node = lfirst (qual );
302-
303- if (IsA (node ,SubPlan ))
304- ((SubPlan * )node )-> unknownEqFalse = true;
305- }
306- }
307-
308271/*
309272 * set_join_references
310273 * Modifies the target list of a join node to reference its subplans,