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)