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)