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)

Reply via email to