>> 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:[email protected]] Sent: Monday, April 16, 2012 9:10 AM To: Amit Kapila Cc: [email protected] Subject: Re: [HACKERS] Improving our clauseless-join heuristics Amit Kapila <[email protected]> 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 ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
