Re: join pushdown and issue with foreign update

Поиск
Список
Период
Сортировка
От Amit Langote
Тема Re: join pushdown and issue with foreign update
Дата
Msg-id CA+HiwqFKLFQoDB4kBhbexh08dfRoFvhQme6Yxw=hhmN6ECn8gg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: join pushdown and issue with foreign update  (Andrey Lepikhov <a.lepikhov@postgrespro.ru>)
Ответы Re: join pushdown and issue with foreign update  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Wed, Jun 2, 2021 at 4:39 PM Andrey Lepikhov
<a.lepikhov@postgrespro.ru> wrote:
> On 2/6/21 02:32, Tom Lane wrote:
> > I wrote:
> >> I think a preferable fix involves making sure that the correct
> >> record-type typmod is propagated to record_in in this context.
> >> Alternatively, maybe we could insert the foreign table's rowtype
> >> during execution of the input operation, without touching the
> >> plan as such.
> >
> > Here's a draft-quality patch based on that idea.  It resolves
> > the offered test case, but I haven't beat on it beyond that.
> >
> I played with your patch and couldn't find any errors. But what if ROW
> operation were allowed to be pushed to a foreign server?
>
> Potentially, I can imagine pushed-down JOIN with arbitrary ROW function
> in its target list.

Are you saying that a pushed down ROW() expression may not correspond
with the Var chosen by the following code?

+       /*
+        * If we can't identify the referenced table, do nothing.  This'll
+        * likely lead to failure later, but perhaps we can muddle through.
+        */
+       var = (Var *) list_nth_node(TargetEntry, fsplan->fdw_scan_tlist,
+                                   i)->expr;
+       if (!IsA(var, Var))
+           continue;
+       rte = list_nth(estate->es_range_table, var->varno - 1);
+       if (rte->rtekind != RTE_RELATION)
+           continue;
+       reltype = get_rel_type_id(rte->relid);
+       if (!OidIsValid(reltype))
+           continue;
+       att->atttypid = reltype;

That may be a valid concern.  I wonder if it would make sense to also
check varattno == 0 here somewhere for good measure.
--
Amit Langote
EDB: http://www.enterprisedb.com



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Daniel Gustafsson
Дата:
Сообщение: Re: TAP tests still sensitive to various PG* environment variables
Следующее
От: "tanghy.fnst@fujitsu.com"
Дата:
Сообщение: RE: [BUG]Update Toast data failure in logical replication