Re: join removal

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Greg Stark <stark@mit.edu>, "<pgsql-hackers@postgresql.org>" <pgsql-hackers@postgresql.org>
Date: 2010-03-28T15:56:28Z
Lists: pgsql-hackers
Robert Haas <robertmhaas@gmail.com> writes:
> I'm alarmed by your follow-on statement that the current code can't
> handle the two-levels of removable join case.  Seems like it ought to
> form {B C} as a path over {B} and then {A B C} as a path over {A}.

Actually I think it ought to form {A B} as a no-op join and then be able
to join {A B} to {C} as a no-op join.  It won't recognize joining A to
{B C} as a no-op because the RHS isn't a baserel.  But yeah, I was quite
surprised at the failure too.  We should take the time to understand why
it's failing before we go further.  I ran out of steam last night but
will have a look into that today.

			regards, tom lane