Hi tony:

I guess there is no column in you table *test.t*.

This piece of code is generated by *JdbcToEnumerableConverter*.
In general, the logic extracts fields from *ResultSet*, and the catch
clause is necessary.
When the field count is 0, we can shot the issue.

            try {
>               final Object[] values = new Object[2];
>               values[0] = resultSet.getObject(1);
>               values[1] = resultSet.getDouble(2);
>               .........
>               return values;
>             } catch (java.sql.SQLException e) {
>               throw new RuntimeException(
>                 e);
>             }


I think it is a bug. We can log it in JIRA.

Bests,
Feng


tonytao <tonytao0...@outlook.com> 于2020年7月23日周四 下午4:05写道:

> hi Danny,
>
> Thank you for your kindly help.
>
> Attach is the generated code.but I had no idea how this file generated or fix 
> the bug.
> I'm sorry that I could not receive your reply with my work email account,so I 
> replied with my personal account.
>
> errlog:
>       at org.apache.calcite.avatica.Helper.wrap(Helper.java:37)
>       at 
> org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:128)
>       at 
> org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1111)
>       at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:309)
>       at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:208)
>       at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:632)
>       at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:498)
>       at 
> org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:468)
>       at 
> org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:231)
>       at 
> org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:552)
>       at 
> org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
>       at 
> org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
>       ... 2 more
> Caused by: org.codehaus.commons.compiler.CompileException: File 
> '/home/tony/workspace/tmp/janino7222401528383593043.java', Line 8, Column 20: 
> Catch clause is unreachable
>       at 
> org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:12211)
>       at 
> org.codehaus.janino.UnitCompiler.compileTryCatch(UnitCompiler.java:3110)
>       at 
> org.codehaus.janino.UnitCompiler.compileTryCatchFinally(UnitCompiler.java:2966)
>       at 
> org.codehaus.janino.UnitCompiler.compileTryCatchFinallyWithResources(UnitCompiler.java:2770)
>
>
> Thanks!
>
> It seems that you got some problem with the generated code, take this [1] to 
> debug the code
> and to see which line caused the compilation error.
>
> [1] 
> https://calcite.apache.org/docs/howto.html#debugging-generated-classes-in-intellij
>
> Best,
> Danny Chan
> 在 2020年7月22日 +0800 AM12:17,taojin <tao...@glodon.com> <tao...@glodon.com>,写道:
> > hi folks,
> >
> > I has met a compiler error on calcite-core:1.23.0,jdk version is
> > :openjdk version "11.0.7" 2020-04-14.
> >
> > Here is the error log,is this a bug?
> >
> > Exception in thread "main" java.sql.SQLException: Error while executing
> > SQL "select * from test.t": Error while compiling generated Java code:
> > public org.apache.calcite.linq4j.Enumerable bind(final
> > org.apache.calcite.DataContext root) {
> >   final org.apache.calcite.linq4j.function.Function1 rowBuilderFactory
> > = new org.apache.calcite.linq4j.function.Function1() {
> >     public org.apache.calcite.linq4j.function.Function0 apply(final
> > java.sql.ResultSet resultSet) {
> >       return new org.apache.calcite.linq4j.function.Function0() {
> >           public Object apply() {
> >             try {
> >               return new Object[0];
> >             } catch (java.sql.SQLException e) {
> >               throw new RuntimeException(
> >                 e);
> >             }
> >           }
> >         }
> >       ;
> >     }
> >     public Object apply(final Object resultSet) {
> >       return apply(
> >         (java.sql.ResultSet) resultSet);
> >     }
> >   }
> >   ;
> >   final org.apache.calcite.runtime.ResultSetEnumerable enumerable =
> > org.apache.calcite.runtime.ResultSetEnumerable.of((javax.sql.DataSource)
> > root.getRootSchema().getSubSchema("test").unwrap(javax.sql.DataSource.class),
> > "SELECT *\nFROM hdb.t", rowBuilderFactory);
> >   enumerable.setTimeout(root);
> >   return enumerable;
> > }
> >
> >
> > public Class getElementType() {
> >   return org.apache.calcite.runtime.FlatLists.ComparableList.class;
> > }
> >
> >
> >
> >     at org.apache.calcite.avatica.Helper.createException(Helper.java:56)
> >     at org.apache.calcite.avatica.Helper.createException(Helper.java:41)
> >     at
> > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:163)
> >     at
> > org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227)
> >     at mtest.App5.main(App5.java:45)
> > Caused by: java.lang.RuntimeException: Error while compiling generated
> > Java code:
> > public org.apache.calcite.linq4j.Enumerable bind(final
> > org.apache.calcite.DataContext root) {
> >   final org.apache.calcite.linq4j.function.Function1 rowBuilderFactory
> > = new org.apache.calcite.linq4j.function.Function1() {
> >     public org.apache.calcite.linq4j.function.Function0 apply(final
> > java.sql.ResultSet resultSet) {
> >       return new org.apache.calcite.linq4j.function.Function0() {
> >           public Object apply() {
> >             try {
> >               return new Object[0];
> >             } catch (java.sql.SQLException e) {
> >               throw new RuntimeException(
> >                 e);
> >             }
> >           }
> >         }
> >       ;
> >     }
> >     public Object apply(final Object resultSet) {
> >       return apply(
> >         (java.sql.ResultSet) resultSet);
> >     }
> >   }
> >   ;
> >   final org.apache.calcite.runtime.ResultSetEnumerable enumerable =
> > org.apache.calcite.runtime.ResultSetEnumerable.of((javax.sql.DataSource)
> > root.getRootSchema().getSubSchema("test").unwrap(javax.sql.DataSource.class),
> > "SELECT *\nFROM hdb.t", rowBuilderFactory);
> >   enumerable.setTimeout(root);
> >   return enumerable;
> > }
> >
> >
> > public Class getElementType() {
> >   return org.apache.calcite.runtime.FlatLists.ComparableList.class;
> > }
> >
> >
> >
> >     at org.apache.calcite.avatica.Helper.wrap(Helper.java:37)
> >     at
> > org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:128)
> >     at
> > org.apache.calcite.prepare.CalcitePrepareImpl$CalcitePreparingStmt.implement(CalcitePrepareImpl.java:1111)
> >     at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:309)
> >     at org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:208)
> >     at
> > org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:632)
> >     at
> > org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:498)
> >     at
> > org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:468)
> >     at
> > org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:231)
> >     at
> > org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:552)
> >     at
> > org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)
> >     at
> > org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)
> >     ... 2 more
> > Caused by: org.codehaus.commons.compiler.CompileException: Line 8,
> > Column 20: Catch clause is unreachable
> >     at
> > org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:12211)
> >     at
> > org.codehaus.janino.UnitCompiler.compileTryCatch(UnitCompiler.java:3110)
> >     at
> > org.codehaus.janino.UnitCompiler.compileTryCatchFinally(UnitCompiler.java:2966)
> >     at
> > org.codehaus.janino.UnitCompiler.compileTryCatchFinallyWithResources(UnitCompiler.java:2770)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2742)
> >     at org.codehaus.janino.UnitCompiler.access$2300(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$6.visitTryStatement(UnitCompiler.java:1499)
> >     at
> > org.codehaus.janino.UnitCompiler$6.visitTryStatement(UnitCompiler.java:1487)
> >     at org.codehaus.janino.Java$TryStatement.accept(Java.java:3241)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487)
> >     at
> > org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3388)
> >     at
> > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1357)
> >     at
> > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1330)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:822)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:981)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:951)
> >     at org.codehaus.janino.UnitCompiler.access$200(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:409)
> >     at
> > org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:406)
> >     at
> > org.codehaus.janino.Java$AnonymousClassDeclaration.accept(Java.java:1149)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406)
> >     at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:5509)
> >     at org.codehaus.janino.UnitCompiler.access$9500(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4432)
> >     at
> > org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4396)
> >     at
> > org.codehaus.janino.Java$NewAnonymousClassInstance.accept(Java.java:5238)
> >     at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4396)
> >     at
> > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5662)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2649)
> >     at org.codehaus.janino.UnitCompiler.access$2800(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$6.visitReturnStatement(UnitCompiler.java:1504)
> >     at
> > org.codehaus.janino.UnitCompiler$6.visitReturnStatement(UnitCompiler.java:1487)
> >     at org.codehaus.janino.Java$ReturnStatement.accept(Java.java:3563)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487)
> >     at
> > org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3388)
> >     at
> > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1357)
> >     at
> > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1330)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:822)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:981)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:951)
> >     at org.codehaus.janino.UnitCompiler.access$200(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:409)
> >     at
> > org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:406)
> >     at
> > org.codehaus.janino.Java$AnonymousClassDeclaration.accept(Java.java:1149)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406)
> >     at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:5509)
> >     at org.codehaus.janino.UnitCompiler.access$9500(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4432)
> >     at
> > org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4396)
> >     at
> > org.codehaus.janino.Java$NewAnonymousClassInstance.accept(Java.java:5238)
> >     at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4396)
> >     at
> > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5662)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2580)
> >     at org.codehaus.janino.UnitCompiler.access$2700(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1503)
> >     at
> > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1487)
> >     at
> > org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:3522)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487)
> >     at
> > org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3388)
> >     at
> > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1357)
> >     at
> > org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1330)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:822)
> >     at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:432)
> >     at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:215)
> >     at
> > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:411)
> >     at
> > org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:406)
> >     at
> > org.codehaus.janino.Java$PackageMemberClassDeclaration.accept(Java.java:1414)
> >     at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406)
> >     at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:378)
> >     at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:237)
> >     at
> > org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:465)
> >     at
> > org.codehaus.janino.ClassBodyEvaluator.compileToClass(ClassBodyEvaluator.java:313)
> >     at
> > org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:235)
> >     at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:207)
> >     at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:50)
> >     at
> > org.codehaus.janino.ClassBodyEvaluator.createInstance(ClassBodyEvaluator.java:347)
> >     at
> > org.apache.calcite.adapter.enumerable.EnumerableInterpretable.getBindable(EnumerableInterpretable.java:162)
> >     at
> > org.apache.calcite.adapter.enumerable.EnumerableInterpretable.toBindable(EnumerableInterpretable.java:125)
> >     ... 12 more
> >
> >
>
>

Reply via email to