(2018/01/16 11:17), Tom Lane wrote:
Etsuro Fujita<fujita.ets...@lab.ntt.co.jp>  writes:
(2018/01/16 1:47), Robert Haas wrote:
Hmm, I was thinking that bar and baz wouldn't be constrained to return
just one tuple in that case, but I'm wrong: there would just be one
tuple per relation in that case.  However, that would also be true for
a full join, wouldn't it?

Consider:

postgres=# create table bar (a int, b text);
postgres=# create table baz (a int, b text);
postgres=# insert into bar values (1, 'bar');
postgres=# insert into baz values (2, 'baz');
postgres=# select * from bar full join baz on bar.a = baz.a;
   a |  b  | a |  b
---+-----+---+-----
   1 | bar |   |
     |     | 2 | baz
(2 rows)

Both relations have one tuple, but the full join produces two join
tuples.  I think it would be possible that something like this happens
when executing a local join plan for a foreign join that performs a full
join remotely.

Doesn't really matter though, does it?  Each of those join rows will
be processed as a separate EPQ event.

I assume that such a local join plan is executed as part of a FOR UPDATE query like the one shown by Robert (the bar/baz foreign join part in that query), so I am thinking that those join rows will be processed as a single event.

Best regards,
Etsuro Fujita

Reply via email to