File tree Expand file tree Collapse file tree 1 file changed +9
-6
lines changed Expand file tree Collapse file tree 1 file changed +9
-6
lines changed Original file line number Diff line number Diff line change 6
6
*
7
7
*
8
8
* IDENTIFICATION
9
- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.47 1999/06/21 01:26:56 tgl Exp $
9
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.48 1999/07/11 17:54:30 tgl Exp $
10
10
*
11
11
*-------------------------------------------------------------------------
12
12
*/
@@ -2610,25 +2610,28 @@ RewritePreprocessQuery(Query *parsetree)
2610
2610
* target relation. FixNew() depends on it when replacing
2611
2611
* *new* references in a rule action by the expressions
2612
2612
* from the rewritten query.
2613
+ * resjunk targets are somewhat arbitrarily given a resno of 0;
2614
+ * this is to prevent FixNew() from matching them to var nodes.
2613
2615
* ----------
2614
2616
*/
2615
2617
if (parsetree -> resultRelation > 0 )
2616
2618
{
2617
2619
RangeTblEntry * rte ;
2618
2620
Relation rd ;
2619
2621
List * tl ;
2620
- TargetEntry * tle ;
2621
- int resdomno ;
2622
2622
2623
2623
rte = (RangeTblEntry * ) nth (parsetree -> resultRelation - 1 ,
2624
2624
parsetree -> rtable );
2625
2625
rd = heap_openr (rte -> relname );
2626
2626
2627
2627
foreach (tl , parsetree -> targetList )
2628
2628
{
2629
- tle = (TargetEntry * ) lfirst (tl );
2630
- resdomno = attnameAttNum (rd , tle -> resdom -> resname );
2631
- tle -> resdom -> resno = resdomno ;
2629
+ TargetEntry * tle = (TargetEntry * ) lfirst (tl );
2630
+
2631
+ if (! tle -> resdom -> resjunk )
2632
+ tle -> resdom -> resno = attnameAttNum (rd , tle -> resdom -> resname );
2633
+ else
2634
+ tle -> resdom -> resno = 0 ;
2632
2635
}
2633
2636
2634
2637
heap_close (rd );
You can’t perform that action at this time.
0 commit comments