summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian1998-09-11 16:39:59 +0000
committerBruce Momjian1998-09-11 16:39:59 +0000
commit13b6f724c188a07213739ef5f499eb8b8a858441 (patch)
tree5e024b3d1b1f73f7ff5d3a4d45b7595c045b4647
parenta752e322a3ae3b1fab76bc25d69e31770234fbd1 (diff)
Tatsuo Ishii fix for pg_user crash, with slight modification.
-rw-r--r--src/backend/rewrite/rewriteManip.c13
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;
}