Dmitry Sysolyatin created CALCITE-7685:
------------------------------------------

             Summary: Filter unresolved function overloads by argument count 
during early resolution
                 Key: CALCITE-7685
                 URL: https://issues.apache.org/jira/browse/CALCITE-7685
             Project: Calcite
          Issue Type: Improvement
          Components: core
    Affects Versions: 1.42.0
            Reporter: Dmitry Sysolyatin


During early resolution of a not-yet-resolved function call 
(SqlUnresolvedFunction), the validator looks up operator overloads by name 
only, without checking the number of arguments.

The lookup could also filter overloads by the call's operand count. A call 
whose arity matches no overload stays unresolved; the validator later resolves 
it as usual and reports an arity error:

{code:sql}
SELECT deptno FROM emp ORDER BY group_id(deptno);
-- before: GROUP_ID operator may only occur in an aggregate query
-- after:  Invalid number of arguments to function 'GROUP_ID'. Was expecting 0 
arguments
{code}

As part of this change, SqlUnresolvedFunction#argumentMustBeScalar must return 
false. With arity filtering, a wrong-arity call to a table function such as 
TUMBLE stays unresolved at the point where sub-queries are registered, and the 
default value (true) would wrap its TABLE argument in a scalar sub-query before 
resolution, causing the eventual arity error to lose its source position.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to