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 fa3a5037552c450ee3a94f350c4d21c48a075ea3..c9abc26df0619762677f563f293a50459c5f481c 100644 (file)
@@ -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;
        }