Repair oversight in recent change of dependency extraction code: when
authorTom Lane <[email protected]>
Wed, 4 Dec 2002 20:00:19 +0000 (20:00 +0000)
committerTom Lane <[email protected]>
Wed, 4 Dec 2002 20:00:19 +0000 (20:00 +0000)
recursing to handle a join alias var, the context had better be set to
be appropriate to the join var's query level.  Per report from Hristo Neshev.

src/backend/catalog/dependency.c

index d313ec22531436beb0cc75f8043a82a600a40579..5afa798d3eb48ed409d3bde188efac0ba10f4179 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.12 2002/09/22 00:37:09 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.12.2.1 2002/12/04 20:00:19 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -789,6 +789,11 @@ find_expr_references_walker(Node *node,
        else if (rte->rtekind == RTE_JOIN)
        {
            /* Scan join output column to add references to join inputs */
+           List   *save_rtables;
+
+           /* We must make the context appropriate for join's level */
+           save_rtables = context->rtables;
+           context->rtables = rtables;
            if (var->varattno <= 0 ||
                var->varattno > length(rte->joinaliasvars))
                elog(ERROR, "find_expr_references_walker: bogus varattno %d",
@@ -796,6 +801,7 @@ find_expr_references_walker(Node *node,
            find_expr_references_walker((Node *) nth(var->varattno - 1,
                                                     rte->joinaliasvars),
                                        context);
+           context->rtables = save_rtables;
        }
        return false;
    }