]> granicus.if.org Git - postgresql/commit
Remove an unsafe Assert, and explain join_clause_is_movable_into() better.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 28 Jul 2015 17:20:39 +0000 (13:20 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 28 Jul 2015 17:21:13 +0000 (13:21 -0400)
commitf7cdc518e613b08831ccd798257df3ba3556ea21
treec6b685dbc2406b19ed14d60a24ee4fde8ada3b58
parentfa4a4df93c8c28d5684cacb1677fbd13f58bb9f2
Remove an unsafe Assert, and explain join_clause_is_movable_into() better.

join_clause_is_movable_into() is approximate, in the sense that it might
sometimes return "false" when actually it would be valid to push the given
join clause down to the specified level.  This is okay ... but there was
an Assert in get_joinrel_parampathinfo() that's only safe if the answers
are always exact.  Comment out the Assert, and add a bunch of commentary
to clarify what's going on.

Per fuzz testing by Andreas Seltenreich.  The added regression test is
a pretty silly query, but it's based on his crasher example.

Back-patch to 9.2 where the faulty logic was introduced.
src/backend/optimizer/util/relnode.c
src/backend/optimizer/util/restrictinfo.c
src/test/regress/expected/join.out
src/test/regress/sql/join.sql