pgsql: Undo mistaken tightening in join_is_legal().
От | Tom Lane |
---|---|
Тема | pgsql: Undo mistaken tightening in join_is_legal(). |
Дата | |
Msg-id | E1ZPhAw-0007vs-Ch@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Undo mistaken tightening in join_is_legal(). One of the changes I made in commit 8703059c6b55c427 turns out not to have been such a good idea: we still need the exception in join_is_legal() that allows a join if both inputs already overlap the RHS of the special join we're checking. Otherwise we can miss valid plans, and might indeed fail to find a plan at all, as in recent report from Andreas Seltenreich. That code was added way back in commit c17117649b9ae23d, but I failed to include a regression test case then; my bad. Put it back with a better explanation, and a test this time. The logic does end up a bit different than before though: I now believe it's appropriate to make this check first, thereby allowing such a case whether or not we'd consider the previous SJ(s) to commute with this one. (Presumably, we already decided they did; but it was confusing to have this consideration in the middle of the code that was handling the other case.) Back-patch to all active branches, like the previous patch. Branch ------ REL9_3_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/7950657a92d108458508eb690e0aa6322640e5e5 Modified Files -------------- src/backend/optimizer/path/joinrels.c | 29 +++++++++++++++++---- src/test/regress/expected/join.out | 46 +++++++++++++++++++++++++++++++++ src/test/regress/sql/join.sql | 19 ++++++++++++++ 3 files changed, 89 insertions(+), 5 deletions(-)
В списке pgsql-committers по дате отправления: