• T
    Allow merge and hash joins to occur on arbitrary expressions (anything not · de97072e
    Tom Lane 提交于
    containing a volatile function), rather than only on 'Var = Var' clauses
    as before.  This makes it practical to do flatten_join_alias_vars at the
    start of planning, which in turn eliminates a bunch of klugery inside the
    planner to deal with alias vars.  As a free side effect, we now detect
    implied equality of non-Var expressions; for example in
    	SELECT ... WHERE a.x = b.y and b.y = 42
    we will deduce a.x = 42 and use that as a restriction qual on a.  Also,
    we can remove the restriction introduced 12/5/02 to prevent pullup of
    subqueries whose targetlists contain sublinks.
    Still TODO: make statistical estimation routines in selfuncs.c and costsize.c
    smarter about expressions that are more complex than plain Vars.  The need
    for this is considerably greater now that we have to be able to estimate
    the suitability of merge and hash join techniques on such expressions.
    de97072e
var.c 10.0 KB