Fix for rules system from Jan.
authorBruce Momjian <[email protected]>
Tue, 20 Oct 1998 17:21:44 +0000 (17:21 +0000)
committerBruce Momjian <[email protected]>
Tue, 20 Oct 1998 17:21:44 +0000 (17:21 +0000)
src/backend/rewrite/rewriteHandler.c
src/backend/rewrite/rewriteManip.c

index 690c2593c972b55e34a1677e54ed104f8fbc8962..431cbc7c92c2419d1560e2111f0de53cd3df31be 100644 (file)
@@ -1789,11 +1789,11 @@ apply_RIR_view(Node **nodePtr, int rt_index, RangeTblEntry *rte, List *tlist, in
                                                return;
                                        }
 
+                                       exp = copyObject(exp);
                                        if (var->varlevelsup > 0 &&
                                                        nodeTag(exp) == T_Var) {
-                                               exp = copyObject(exp);
                                                ((Var *)exp)->varlevelsup = var->varlevelsup;
-                                       }
+                                       } 
                                        *nodePtr = exp;
                                        *modified = TRUE;
                                }
index 52c50723c4f41fb9b37f278a6ba919f6d5b27769..16907433b25af2f4f15e2e14b388c14a0bb13c6a 100644 (file)
@@ -418,14 +418,15 @@ ResolveNew(RewriteInfo *info, List *targetlist, Node **nodePtr,
                                        {
                                                if (info->event == CMD_UPDATE)
                                                {
-                                                       ((Var *) node)->varno = info->current_varno;
-                                                       ((Var *) node)->varnoold = info->current_varno;
+                                                       *nodePtr = n = copyObject(node);
+                                                       ((Var *) n)->varno = info->current_varno;
+                                                       ((Var *) n)->varnoold = info->current_varno;
                                                }
                                                else
                                                        *nodePtr = make_null(((Var *) node)->vartype);
                                        }
                                        else
-                                               *nodePtr = n;
+                                               *nodePtr = copyObject(n);
                                }
                                break;
                        }