Re: IN joining
| От | Tom Lane |
|---|---|
| Тема | Re: IN joining |
| Дата | |
| Msg-id | 11205.1078520699@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | IN joining (Dennis Haney <davh@diku.dk>) |
| Ответы |
Re: IN joining
|
| Список | pgsql-hackers |
Dennis Haney <davh@diku.dk> writes:
> Consider this example:
> SELECT * FROM a,b WHERE a.id = b.id AND (a.id) IN (SELECT c.id FROM c)
> the possible execution trees are {{a,b}, {c}}, {{a,c},{b}} and the code
> seems to also permit {{b,c},{a}}.
No, it does not --- as you say, that would give wrong answers. That
case is eliminated by the tests following this comment:
* JOIN_IN technique will work if outerrel includes LHS and * innerrel is exactly RHS; conversely
JOIN_REVERSE_INhandles * RHS/LHS. * * JOIN_UNIQUE_OUTER will work if outerrel is
exactlyRHS; * conversely JOIN_UNIQUE_INNER will work if innerrel is * exactly RHS.
Joining {b,c} to {a} does not meet any of those four allowed cases.
regards, tom lane
В списке pgsql-hackers по дате отправления: