Kirill Tkalenko created CALCITE-7845:
----------------------------------------
Summary: Fix UDF/UDTF overload resolution with generic parameter
types
Key: CALCITE-7845
URL: https://issues.apache.org/jira/browse/CALCITE-7845
Project: Calcite
Issue Type: Bug
Reporter: Kirill Tkalenko
Assignee: Kirill Tkalenko
Calcite may throw an {{AssertionError}} when resolving overloaded user-defined
functions that combine concrete parameter types with {{Object}} ({{{}ANY{}}}).
Example:
{code:java}
public static String foo(String value) { return "String"; }
public static String foo(Timestamp value) { return "Timestamp"; }
public static String foo(Object value) { return "Object"; } {code}
After registering these overloads under the same SQL name:
{code:java}
SELECT foo('text'); -- expected: String
SELECT foo(TIMESTAMP '2024-01-02 03:04:05'); -- expected: Timestamp
SELECT foo(TRUE); -- expected: Object {code}
Expected behavior: prefer a compatible concrete overload and use Object as a
fallback, regardless of registration order. Apply the same behavior to scalar
UDFs and table functions (UDTFs).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)