66 *
77 *
88 * IDENTIFICATION
9- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.17 1998/09/01 04:31:35 momjian Exp $
9+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteManip.c,v 1.18 1998/09/11 16:39:59 momjian Exp $
1010 *
1111 *-------------------------------------------------------------------------
1212 */
@@ -614,9 +614,8 @@ nodeHandleViewRule(Node **nodePtr,
614614var -> varattno ));
615615if (n == NULL )
616616* nodePtr = make_null (((Var * )node )-> vartype );
617-
618617else
619-
618+ {
620619/*
621620 * This is a hack: The varlevelsup of the orignal
622621 * variable and the new one should be the same.
@@ -628,12 +627,16 @@ nodeHandleViewRule(Node **nodePtr,
628627 * before! (Maybe this will cause troubles with
629628 * some sophisticated queries on views?)
630629 */
631- {
632630if (this_varlevelsup > 0 )
633631* nodePtr = copyObject (n );
634632else
635633* nodePtr = n ;
636- ((Var * )* nodePtr )-> varlevelsup = this_varlevelsup ;
634+
635+ if (nodeTag (nodePtr )== T_Var )
636+ ((Var * )* nodePtr )-> varlevelsup = this_varlevelsup ;
637+ else
638+ nodeHandleViewRule (& n ,rtable ,targetlist ,
639+ rt_index ,modified ,sublevels_up );
637640}
638641* modified = TRUE;
639642}