pgsql: Remove an unsafe Assert, and explain join_clause_is_movable_into - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Remove an unsafe Assert, and explain join_clause_is_movable_into
Date
Msg-id E1ZK8ZE-0002L4-5d@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
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.

Branch
------
REL9_2_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/d6a8a29ac2bca06d4466e449f13d0cc52220714b

Modified Files
--------------
src/backend/optimizer/util/relnode.c      |    9 ++++++
src/backend/optimizer/util/restrictinfo.c |   31 +++++++++++++++----
src/test/regress/expected/join.out        |   48 +++++++++++++++++++++++++++++
src/test/regress/sql/join.sql             |   27 ++++++++++++++++
4 files changed, 109 insertions(+), 6 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Remove an unsafe Assert, and explain join_clause_is_movable_into
Next
From: Tom Lane
Date:
Subject: pgsql: Remove an unsafe Assert, and explain join_clause_is_movable_into