Search Postgresql Archives

are the 2 if-statements in join_is_legal() removable?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi:
In join_is_legal(), there are 2 decision-making statements based on match_sjinfo. I    wonder wether their conditions can ever test possitive.

            /*
             * If one input contains min_lefthand and the other contains
             * min_righthand, then we can perform the SJ at this join.
             *
             * Reject if we get matches to more than one SJ; that implies we're
             * considering something that's not really valid.
             */
            if (bms_is_subset(sjinfo->min_lefthand, rel1->relids) &&
                  bms_is_subset(sjinfo->min_righthand, rel2->relids))
            {
                  if (match_sjinfo)
                        return false;     /* invalid join path */
                  match_sjinfo = sjinfo;
                  reversed = false;
            }
            else if (bms_is_subset(sjinfo->min_lefthand, rel2->relids) &&
                         bms_is_subset(sjinfo->min_righthand, rel1->relids))
            {
                  if (match_sjinfo)
                        return false;     /* invalid join path */
                  match_sjinfo = sjinfo;
                  reversed = true;
            }
There is no query in regression test suite that can render the 2 decision-makings based on match_sjinfo true, nor can i figure out one. Can these conditions ever be true? If they can be true, what queries can make them true? On the contrary,if the conditions can never be true, then the 2 "if (match_sjinfo) return false" statements can be safely removed.
Any feedback is welcome.

--
Best Regards
Geng




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux