Guangxu Cheng created KYLIN-4755:
------------------------------------

             Summary: Error while compiling generated Java code when using 
Kylin UDF in "case when"
                 Key: KYLIN-4755
                 URL: https://issues.apache.org/jira/browse/KYLIN-4755
             Project: Kylin
          Issue Type: Bug
          Components: Query Engine
    Affects Versions: v3.1.0
            Reporter: Guangxu Cheng
            Assignee: Guangxu Cheng


SQL:
{code:sql}
select case when TRANS_ID > 0 then concat('a','b') 
else version() 
end
from KYLIN_SALES
{code}

Error message:
{panel}
Error while compiling generated Java code:
org.apache.calcite.DataContext root;

public org.apache.calcite.linq4j.Enumerable bind(final 
org.apache.calcite.DataContext root0) {
  root = root0;
  final org.apache.calcite.linq4j.Enumerable _inputEnumerable = 
((org.apache.kylin.query.schema.OLAPTable) 
root.getRootSchema().getSubSchema("DEFAULT").getTable("KYLIN_SALES")).executeOLAPQuery(root,
 0);
  final org.apache.calcite.linq4j.AbstractEnumerable child = new 
org.apache.calcite.linq4j.AbstractEnumerable(){
    public org.apache.calcite.linq4j.Enumerator enumerator() {
      return new org.apache.calcite.linq4j.Enumerator(){
          public final org.apache.calcite.linq4j.Enumerator inputEnumerator = 
_inputEnumerable.enumerator();
          public void reset() {
            inputEnumerator.reset();
          }

          public boolean moveNext() {
            return inputEnumerator.moveNext();
          }

          public void close() {
            inputEnumerator.close();
          }

          public Object current() {
            final Long inp0_ = (Long) ((Object[]) inputEnumerator.current())[0];
            {color:red}return inp0_ != null && inp0_.longValue() > 0L ? 
org.apache.kylin.query.udf.ConcatUDF.eval("a", "b") : 
org.apache.kylin.query.udf.VersionUDF.eval();{color}
          }

        };
    }

  };
  return child.take(5);
}


public Class getElementType() {
  return java.lang.String.class;
}
        at org.apache.calcite.avatica.Helper.wrap(Helper.java:37)
        at 
org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:108)
        at 
org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1278)
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:331)
        at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:230)
        at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:796)
        at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:655)
        at 
org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:618)
        at 
org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:221)
        at 
org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:603)
        at 
org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
        at 
org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
        ... 83 more
 {color:red}Caused by: org.codehaus.commons.compiler.CompileException: Line 24, 
Column 104: Instance method "eval" cannot be invoked in static context {color}
{panel}




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to