>> That case is handled by make_rels_by_clauseless_joins

It will be handled by make_rels_by_clauseless_joins() if given rel old_rel
doesn't have any join clause.
However if it has join clause but doesn't able to join with any other rels
like in the example you have provided for relation c, it is not able to join
with other rel d. 
In such cases it can do cross-join with d, because it has not found any
relation to join with.
Doesn't it will address the problem you mentioned?

-----Original Message-----
From: Tom Lane [mailto:t...@sss.pgh.pa.us] 
Sent: Monday, April 16, 2012 9:10 AM
To: Amit Kapila
Cc: pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] Improving our clauseless-join heuristics 

Amit Kapila <amit.kap...@huawei.com> writes:
> I want to clarify small doubt in this regard. 
> In function make_rels_by_clause_joins(..), it tries to join the given
> relation old_rel with other relations if there exist a join between them. 
> What I can understand is, it is because if there exists a join condition
its
> better to join with that relation.
> However if the given relation old_rel is not able to join any relation,
then
> why can't it try to make cross-join with other relations there itself.

Hm?  That case is handled by make_rels_by_clauseless_joins.  I suppose
we could refactor to combine those two functions, but what's the point?
If that's not what your question is about, then I don't understand.

                        regards, tom lane


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to