On 2016/12/27 22:03, Ashutosh Bapat wrote: You wrote:
3. Talking about saving some CPU cycles - if a clauseless full join can be implemented only using merge join, probably that's the only path available in the list of paths for the given relation. Instead of building the same path anew, should we use the existing path like GetExistingLocalJoinPath() for that case?
Hm, that might be an idea, but my concern about that is: the existing path wouldn't always be guaranteed to be unprameterized.
Why? We retain all the parameterizations (including no parameterization) available in the pathlist, so if it's possible to create an unparameterized path, there will be one.
OK, but another concern is: in cases when we consider parameterized paths, it might be inefficient to search the pathlist because the unparameterized path might be at the rear of the lengthy pathlist. Note that patameterized paths would produce fewer rows and have reduced transfer and hence total cost, so they would be in the more front of the pathlist, and the unparameterized path would be in the more rear. (Note that the pathlist is kept sorted by total cost.)
Best regards, Etsuro Fujita -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers