9
9
*
10
10
*
11
11
* IDENTIFICATION
12
- * $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.134 2007/04/06 22:57:20 tgl Exp $
12
+ * $PostgreSQL: pgsql/src/backend/optimizer/plan/setrefs.c,v 1.135 2007/04/30 00:16:43 tgl Exp $
13
13
*
14
14
*-------------------------------------------------------------------------
15
15
*/
@@ -565,6 +565,22 @@ trivial_subqueryscan(SubqueryScan *plan)
565
565
return true;
566
566
}
567
567
568
+ /*
569
+ * copyVar
570
+ * Copy a Var node.
571
+ *
572
+ * fix_scan_expr and friends do this enough times that it's worth having
573
+ * a bespoke routine instead of using the generic copyObject() function.
574
+ */
575
+ static inline Var *
576
+ copyVar (Var * var )
577
+ {
578
+ Var * newvar = (Var * ) palloc (sizeof (Var ));
579
+
580
+ * newvar = * var ;
581
+ return newvar ;
582
+ }
583
+
568
584
/*
569
585
* fix_scan_expr
570
586
* Do set_plan_references processing on a scan-level expression
@@ -588,7 +604,7 @@ fix_scan_expr_mutator(Node *node, fix_scan_expr_context *context)
588
604
return NULL ;
589
605
if (IsA (node , Var ))
590
606
{
591
- Var * var = ( Var * ) copyObject ( node );
607
+ Var * var = copyVar (( Var * ) node );
592
608
593
609
Assert (var -> varlevelsup == 0 );
594
610
/*
@@ -1091,7 +1107,7 @@ search_indexed_tlist_for_var(Var *var, indexed_tlist *itlist,
1091
1107
if (vinfo -> varno == varno && vinfo -> varattno == varattno )
1092
1108
{
1093
1109
/* Found a match */
1094
- Var * newvar = ( Var * ) copyObject (var );
1110
+ Var * newvar = copyVar (var );
1095
1111
1096
1112
newvar -> varno = newvarno ;
1097
1113
newvar -> varattno = vinfo -> resno ;
@@ -1213,7 +1229,7 @@ fix_join_expr_mutator(Node *node, fix_join_expr_context *context)
1213
1229
/* If it's for acceptable_rel, adjust and return it */
1214
1230
if (var -> varno == context -> acceptable_rel )
1215
1231
{
1216
- var = ( Var * ) copyObject (var );
1232
+ var = copyVar (var );
1217
1233
var -> varno += context -> rtoffset ;
1218
1234
var -> varnoold += context -> rtoffset ;
1219
1235
return (Node * ) var ;
0 commit comments