Uploaded image for project: 'Kylin'
  1. Kylin
  2. KYLIN-4755

Error while compiling generated Java code when using Kylin UDF in "case when"

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • v3.1.0
    • v3.1.1
    • Query Engine
    • None

    Description

      SQL:

      select case when TRANS_ID > 0 then concat('a','b') 
      else version() 
      end
      from KYLIN_SALES
      

      Error message:

      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()

      Unknown macro: { inputEnumerator.reset(); }

      public boolean moveNext()

      Unknown macro: { return inputEnumerator.moveNext(); }

      public void close()

      Unknown macro: { inputEnumerator.close(); }

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

      };
      }

      };
      return child.take(5);
      }

      public Class getElementType()

      Unknown macro: { 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
      Caused by: org.codehaus.commons.compiler.CompileException: Line 24, Column 104: Instance method "eval" cannot be invoked in static context

      Attachments

        Activity

          People

            gxcheng Guangxu Cheng
            gxcheng Guangxu Cheng
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: