• T
    Make LATERAL implicit for functions in FROM. · 2378d79a
    Tom Lane 提交于
    The SQL standard does not have general functions-in-FROM, but it does
    allow UNNEST() there (see the <collection derived table> production),
    and the semantics of that are defined to include lateral references.
    So spec compliance requires allowing lateral references within UNNEST()
    even without an explicit LATERAL keyword.  Rather than making UNNEST()
    a special case, it seems best to extend this flexibility to any
    function-in-FROM.  We'll still allow LATERAL to be written explicitly
    for clarity's sake, but it's now a noise word in this context.
    
    In theory this change could result in a change in behavior of existing
    queries, by allowing what had been an outer reference in a function-in-FROM
    to be captured by an earlier FROM-item at the same level.  However, all
    pre-9.3 PG releases have a bug that causes them to match variable
    references to earlier FROM-items in preference to outer references (and
    then throw an error).  So no previously-working query could contain the
    type of ambiguity that would risk a change of behavior.
    
    Per a suggestion from Andrew Gierth, though I didn't use his patch.
    2378d79a
rangefuncs.out 24.4 KB