You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Rish K (Jira)" <ji...@apache.org> on 2022/10/12 21:50:00 UTC
[jira] [Created] (CALCITE-5331) On using UDF, seeing java.lang.AssertionError: ANY
Rish K created CALCITE-5331:
-------------------------------
Summary: On using UDF, seeing java.lang.AssertionError: ANY
Key: CALCITE-5331
URL: https://issues.apache.org/jira/browse/CALCITE-5331
Project: Calcite
Issue Type: Bug
Components: core, extensions
Affects Versions: 1.31.0
Reporter: Rish K
I'm using Apache Beam and Calcite and have a UDF such as:
{code:java}
public static String eval(@Parameter(name = "obj") Object obj,
@Parameter(name = "isSigned", optional = true) Boolean isSigned) {
String hex = null;
if (obj instanceof Float) {
hex = Float.toHexString((Float) obj);
} else if (obj instanceof Double) {
hex = Double.toHexString((Double) obj);
}
return hex;
} {code}
In Calcite 1.20, the above code works totally fine.
After the calcite upgrade to 1.31, we are coming across the error:
{code:java}
java.lang.AssertionError: ANY at org.apache.beam.vendor.calcite.v1_31_0.org.apache.calcite.sql.type.SqlTypeExplicitPrecedenceList.compareTypePrecedence(SqlTypeExplicitPrecedenceList.java:141) {code}
+*Observation:*+
It seems like "Object" is not being recognized as the new calcite version has strict type requirements.
This change has been introduced as part of the https://issues.apache.org/jira/browse/CALCITE-2082
cc: [~julianhyde]
The main change impacting us is in SqlFunction.java:
Calcite 1.20 code:
{code:java}
SqlFunction function = (SqlFunction)SqlUtil.lookupRoutine(validator.getOperatorTable(), this.getNameAsId(), argTypes, argNames, this.getFunctionType(), SqlSyntax.FUNCTION, this.getKind(), validator.getCatalogReader().nameMatcher()); {code}
Calcite 1.31 code:
{code:java}
Object function = (SqlFunction)SqlUtil.lookupRoutine(validator.getOperatorTable(), validator.getTypeFactory(), this.getNameAsId(), argTypes, argNames, this.getFunctionType(), SqlSyntax.FUNCTION, this.getKind(), validator.getCatalogReader().nameMatcher(), false); {code}
Any idea what can be done to fix this?
--
This message was sent by Atlassian Jira
(v8.20.10#820010)