• Tom Lane's avatar
    Fix use of uninitialized variable in inline_function(). · e30e3fde
    Tom Lane authored
    Commit e717a9a1 introduced a code path that bypassed the call of
    get_expr_result_type, which is not good because we need its rettupdesc
    result to pass to check_sql_fn_retval.  We'd failed to notice right
    away because the code path in which check_sql_fn_retval uses that
    argument is fairly hard to reach in this context.  It's not impossible
    though, and in any case inline_function would have no business
    assuming that check_sql_fn_retval doesn't need that value.
    
    To fix, move get_expr_result_type out of the if-block, which in
    turn requires moving the construction of the dummy FuncExpr
    out of it.
    
    Per report from Ranier Vilela.  (I'm bemused by the lack of any
    compiler complaints...)
    
    Discussion: https://postgr.es/m/CAEudQAqBqQpQ3HruWAGU_7WaMJ7tntpk0T8k_dVtNB46DqdBgw@mail.gmail.com
    e30e3fde
clauses.c 156 KB