Re: foreign join error "variable not found in subplan target list"
| От | Richard Guo |
|---|---|
| Тема | Re: foreign join error "variable not found in subplan target list" |
| Дата | |
| Msg-id | CAMbWs4_8WjxO1XUN+PsW1ukfSrVfOrCHS5rbJM6dr0qPhBogkg@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: foreign join error "variable not found in subplan target list" (Richard Guo <guofenglinux@gmail.com>) |
| Ответы |
Re: foreign join error "variable not found in subplan target list"
|
| Список | pgsql-bugs |
On Mon, Aug 29, 2022 at 5:45 PM Richard Guo <guofenglinux@gmail.com> wrote:
On Mon, Aug 29, 2022 at 2:17 PM Etsuro Fujita <etsuro.fujita@gmail.com> wrote:One thing I noticed while re-reading the patch is that we should use
create_projection_path() here, to avoid modifying the epq_path in
place, as it is already used for an unsorted join-pushdown path before
we get here. So I modified the patch as such. Updated patch
attached.The new change looks reasonable to me as there is other ref to this
epq_path.
I'm looking again on how we adjust the PathTarget, and I think we may
need to update the cost and width fields if there are any new columns
added. Maybe we can leverage set_pathtarget_cost_width for that.
To be concrete, I mean something like this:
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -5808,6 +5808,10 @@ add_paths_with_pathkeys_for_rel(PlannerInfo *root, RelOptInfo *rel,
PVC_RECURSE_PLACEHOLDERS));
}
+ /* Update the cost and width fields if we have added any new columns. */
+ if (!equal(epq_path->pathtarget->exprs, target->exprs))
+ set_pathtarget_cost_width(root, target);
+
/*
* The passed-in EPQ path is a join path, so it is projection-capable,
* but we use create_projection_path() here, so as to avoid modifying
Thanks
Richard
--- a/contrib/postgres_fdw/postgres_fdw.c
+++ b/contrib/postgres_fdw/postgres_fdw.c
@@ -5808,6 +5808,10 @@ add_paths_with_pathkeys_for_rel(PlannerInfo *root, RelOptInfo *rel,
PVC_RECURSE_PLACEHOLDERS));
}
+ /* Update the cost and width fields if we have added any new columns. */
+ if (!equal(epq_path->pathtarget->exprs, target->exprs))
+ set_pathtarget_cost_width(root, target);
+
/*
* The passed-in EPQ path is a join path, so it is projection-capable,
* but we use create_projection_path() here, so as to avoid modifying
Thanks
Richard
В списке pgsql-bugs по дате отправления: