I don’t think you need to debug the code, Tony. It’s not your fault, it is a bug in the code generation. So, two actions:
1. Please log a bug with a repro case. (It sounds as if the key factor is a table with zero columns.) 2. There is a workaround. Add at least one column to your table. Julian > On Jul 23, 2020, at 2:18 AM, tonytao <[email protected]> wrote: > > Thanks again,danny! > > It's hard to set the appropriate breakpoint position.:-). I'll check the jdbc > api whether it returned correct results. > > > Best regards! > > On 7/23/20 4:44 PM, Danny Chan wrote: >> In general, Calcite use janino to compile the generated Java string codes >> into real instances during the query execution, you error throws because the >> code generation generates java file with invalid syntax. >> >> Things are not bad now, you can set up a break point in the debugger, and >> all the generated code would be in the directory you have configured, here, >> you can see the error file path is: >> >>> File '/home/tony/workspace/tmp/janino7222401528383593043.java', Line 8, >>> Column 20: >> The generated files names may change each time you debug it, and disappear >> when you stop debugging, so you need to copy the files out and past it into >> the IDEA again to see which file has the Java syntax error. >> >> Best, >> Danny Chan >> 在 2020年7月23日 +0800 PM4:05,tonytao <[email protected]>,写道: >>> 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 <[email protected]>,写道: >>>> 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 >>>> >>>> >
