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)