diff options
author | Bruce Momjian | 1998-09-11 16:39:59 +0000 |
---|---|---|
committer | Bruce Momjian | 1998-09-11 16:39:59 +0000 |
commit | 13b6f724c188a07213739ef5f499eb8b8a858441 (patch) | |
tree | 5e024b3d1b1f73f7ff5d3a4d45b7595c045b4647 | |
parent | a752e322a3ae3b1fab76bc25d69e31770234fbd1 (diff) |
Tatsuo Ishii fix for pg_user crash, with slight modification.
-rw-r--r-- | src/backend/rewrite/rewriteManip.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/backend/rewrite/rewriteManip.c b/src/backend/rewrite/rewriteManip.c index 14e1c796569..15c68064a6a 100644 --- a/src/backend/rewrite/rewriteManip.c +++ b/src/backend/rewrite/rewriteManip.c @@ -6,7 +6,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.17 1998/09/01 04:31:35 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.18 1998/09/11 16:39:59 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -614,9 +614,8 @@ nodeHandleViewRule(Node **nodePtr, var->varattno)); if (n == NULL) *nodePtr = make_null(((Var *) node)->vartype); - else - + { /* * This is a hack: The varlevelsup of the orignal * variable and the new one should be the same. @@ -628,12 +627,16 @@ nodeHandleViewRule(Node **nodePtr, * before! (Maybe this will cause troubles with * some sophisticated queries on views?) */ - { if (this_varlevelsup > 0) *nodePtr = copyObject(n); else *nodePtr = n; - ((Var *) *nodePtr)->varlevelsup = this_varlevelsup; + + if (nodeTag(nodePtr) == T_Var) + ((Var *) *nodePtr)->varlevelsup = this_varlevelsup; + else + nodeHandleViewRule(&n, rtable, targetlist, + rt_index, modified, sublevels_up); } *modified = TRUE; } |