Yes, that’s it. Next step would be to check whether the generated code is the same as previously, and if so, it is a Janino bug. Then try to create a minimal test case for Janino. Maybe we can work around by adding an explicit cast somewhere.
Thanks for reproducing this, and trying the Janino upgrade. Julian > On Apr 10, 2018, at 3:37 AM, Enrico Olivelli <[email protected]> wrote: > > This is "the" error (see below). Unfortunately just be upgrading Janino to > 3.0.8 the problem still is present. > > the only 'unwrap' word in the generated code is here > ... > public org.apache.calcite.linq4j.Enumerable bind(final > org.apache.calcite.DataContext root0) { > root = root0; > final org.apache.calcite.linq4j.Enumerable _inputEnumerable = > org.apache.calcite.linq4j.Linq4j.asEnumerable(((org.apache.calcite.test.ReflectiveSchemaTest.CatchallSchema) > ((org.apache.calcite.adapter.java.ReflectiveSchema) > root.getRootSchema().getSubSchema("s").unwrap(org.apache.calcite.adapter.java.ReflectiveSchema.class)).getTarget()).nullables); > .... > > Does any ring bell ? > > Enrico > > > Caused by: org.codehaus.commons.compiler.CompileException: Line 5, Column > 272: A method named "unwrap" is not declared in any enclosing class nor any > supertype, nor through a static import >> at > org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11821) >> at > org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8731) >> at > org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4737) >> at org.codehaus.janino.UnitCompiler.access$8300(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:4097) >> at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:4070) >> at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4902) >> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4070) >> at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5253) >> at > org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4696) >> at org.codehaus.janino.UnitCompiler.access$7800(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4092) >> at > org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4070) >> at org.codehaus.janino.Java$Cast.accept(Java.java:4727) >> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4070) >> at > org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4732) >> at org.codehaus.janino.UnitCompiler.access$7300(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$12$1.visitParenthesizedExpression(UnitCompiler.java:4083) >> at > org.codehaus.janino.UnitCompiler$12$1.visitParenthesizedExpression(UnitCompiler.java:4074) >> at > org.codehaus.janino.Java$ParenthesizedExpression.accept(Java.java:4753) >> at > org.codehaus.janino.UnitCompiler$12.visitLvalue(UnitCompiler.java:4074) >> at > org.codehaus.janino.UnitCompiler$12.visitLvalue(UnitCompiler.java:4070) >> at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977) >> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4070) >> at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5253) >> at > org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4792) >> at org.codehaus.janino.UnitCompiler.access$8300(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:4097) >> at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:4070) >> at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4902) >> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4070) >> at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5253) >> at > org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4696) >> at org.codehaus.janino.UnitCompiler.access$7800(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4092) >> at > org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4070) >> at org.codehaus.janino.Java$Cast.accept(Java.java:4727) >> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4070) >> at > org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4732) >> at org.codehaus.janino.UnitCompiler.access$7300(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$12$1.visitParenthesizedExpression(UnitCompiler.java:4083) >> at > org.codehaus.janino.UnitCompiler$12$1.visitParenthesizedExpression(UnitCompiler.java:4074) >> at > org.codehaus.janino.Java$ParenthesizedExpression.accept(Java.java:4753) >> at > org.codehaus.janino.UnitCompiler$12.visitLvalue(UnitCompiler.java:4074) >> at > org.codehaus.janino.UnitCompiler$12.visitLvalue(UnitCompiler.java:4070) >> at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977) >> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4070) >> at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5253) >> at > org.codehaus.janino.UnitCompiler.compileContext2(UnitCompiler.java:4010) >> at org.codehaus.janino.UnitCompiler.access$6100(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$11$1.visitFieldAccess(UnitCompiler.java:3947) >> at > org.codehaus.janino.UnitCompiler$11$1.visitFieldAccess(UnitCompiler.java:3942) >> at org.codehaus.janino.Java$FieldAccess.accept(Java.java:4139) >> at > org.codehaus.janino.UnitCompiler$11.visitLvalue(UnitCompiler.java:3942) >> at > org.codehaus.janino.UnitCompiler$11.visitLvalue(UnitCompiler.java:3938) >> at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977) >> at > org.codehaus.janino.UnitCompiler.compileContext(UnitCompiler.java:3938) >> at > org.codehaus.janino.UnitCompiler.compileContext2(UnitCompiler.java:4047) >> at org.codehaus.janino.UnitCompiler.access$6200(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$11$1.visitFieldAccessExpression(UnitCompiler.java:3948) >> at > org.codehaus.janino.UnitCompiler$11$1.visitFieldAccessExpression(UnitCompiler.java:3942) >> at > org.codehaus.janino.Java$FieldAccessExpression.accept(Java.java:4468) >> at > org.codehaus.janino.UnitCompiler$11.visitLvalue(UnitCompiler.java:3942) >> at > org.codehaus.janino.UnitCompiler$11.visitLvalue(UnitCompiler.java:3938) >> at org.codehaus.janino.Java$Lvalue.accept(Java.java:3977) >> at > org.codehaus.janino.UnitCompiler.compileContext(UnitCompiler.java:3938) >> at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5252) >> at > org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4842) >> at org.codehaus.janino.UnitCompiler.access$8300(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:4097) >> at > org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(UnitCompiler.java:4070) >> at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4902) >> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4070) >> at > org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5253) >> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2559) >> at org.codehaus.janino.UnitCompiler.access$2700(UnitCompiler.java:212) >> at > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1482) >> at > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1466) >> at > org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:3351) >> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1466) >> at org.cod (stack truncated) > > > 2018-04-09 23:10 GMT+02:00 Cade Markegard <[email protected]>: > >> Awesome! >> >> On Mon, Apr 9, 2018 at 1:29 PM Enrico Olivelli <[email protected]> >> wrote: >> >>> Il lun 9 apr 2018, 22:20 Cade Markegard <[email protected]> ha >>> scritto: >>> >>>> Not sure if this is related, but it seems like Janino doesn't support >>> Java8 >>>> lambdas under "Limitations" in http://janino-compiler.github. >> io/janino/ >>> >>> >>> >>> This should not be a problem, we are not generating java sources with >>> lambdas (maybe in future?). >>> I will be happy to do some trials with new Janino, but I guess that would >>> be the only way (or to drop Janino, but I think it will be harder). I >> have >>> not much time these days. >>> >>> Anyhow I am testing my apps on jdk10 and Calcite is working like a charm >> ! >>> >>> Enrico >>> >>>> >>>> >>>>> On Mon, Apr 9, 2018 at 12:54 PM Julian Hyde <[email protected]> wrote: >>>>> >>>>> I didn’t try. We’re on janino 2.7.6. The 2.x line only goes up to >>> 2.7.8. >>>>> I’m not eager to try upgrading to 3.x (latest release is 3.0.8) >>>> especially >>>>> as they don’t explicitly mention fixing a JDK 8 issue. >>>>> >>>>> http://janino-compiler.github.io/janino/changelog.html < >>>>> http://janino-compiler.github.io/janino/changelog.html> >>>>> >>>>> >>>>>> On Apr 9, 2018, at 12:42 PM, Enrico Olivelli <[email protected]> >>>>> wrote: >>>>>> >>>>>> Il lun 9 apr 2018, 21:37 Julian Hyde <[email protected] <mailto: >>>>> [email protected]>> ha scritto: >>>>>> >>>>>>> Don’t have the error stack, but janino could not compile generated >>>> code >>>>>>> because it said an “unwrap” method did not exist. >>>>>>> >>>>>>> There were no lambdas. I think perhaps that version of janino >> could >>>> not >>>>>>> fully understand the Calcite class files. >>>>>>> >>>>>>> To reproduce, change 2 lines in core/pom.xml and run “mvn test”. >>>>>>> >>>>>> >>>>>> Did you try to update to latest Janino? >>>>>> It seems to that we have an old version (2.7.6) >>>>>> >>>>>> Enrico >>>>>> >>>>>>> >>>>>>> Julian >>>>>>> >>>>>>> >>>>>>>> On Apr 9, 2018, at 12:15 PM, Enrico Olivelli < >> [email protected]> >>>>>>> wrote: >>>>>>>> >>>>>>>> Il lun 9 apr 2018, 19:05 Julian Hyde <[email protected]> ha >>> scritto: >>>>>>>> >>>>>>>>> Has anyone had any luck using JDK 8 syntax (e.g. “->” for >> lambdas) >>>> in >>>>>>>>> Calcite? >>>>>>>>> >>>>>>>>> In core/pom.xml I changed source=1.7 target=1.7 to source=8 >>> target=8 >>>>> and >>>>>>>>> it allowed the syntax but it seemed to break any tests that >> relied >>>> on >>>>>>>>> janino. >>>>>>>>> >>>>>>>> >>>>>>>> Julian, >>>>>>>> Could you please share a stacktrace of your error? >>>>>>>> As far as I know using lambdas is not only a matter of syntactic >>>> sugar >>>>>>> but >>>>>>>> they are more efficient than simple anonymous classes. >>>>>>>> >>>>>>>> Cheers >>>>>>>> Enrico >>>>>>>> >>>>>>>> >>>>>>>>> Related: https://issues.apache.org/jira/browse/CALCITE-2027 < >>>>>>>>> https://issues.apache.org/jira/browse/CALCITE-2027> >>>>>>>>> >>>>>>>>> Julian >>>>>>>>> >>>>>>>>> -- >>>>>>>> >>>>>>>> >>>>>>>> -- Enrico Olivelli >>>>>>> >>>>>>> -- >>>>>> >>>>>> >>>>>> -- Enrico Olivelli >>>>> >>>>> >>>> >>> -- >>> >>> >>> -- Enrico Olivelli >>> >>
