2018-04-10 13:48 GMT+02:00 Julian Hyde <jhyde.apa...@gmail.com>: > 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, If you have no hurry for this I will be happy to spend some time in order to figure out the root cause. I will follow the discussion and jump in when I have some idea. It will be great to have Calcite really built on jdk8 and leverage lambdas Cheers Enrico > > Julian > > > On Apr 10, 2018, at 3:37 AM, Enrico Olivelli <eolive...@gmail.com> > 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.visitLocalVariableDeclarationS > tatement(UnitCompiler.java:1482) > >> at > > org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationS > tatement(UnitCompiler.java:1466) > >> at > > org.codehaus.janino.Java$LocalVariableDeclarationStatem > ent.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 <cademarkeg...@gmail.com>: > > > >> Awesome! > >> > >> On Mon, Apr 9, 2018 at 1:29 PM Enrico Olivelli <eolive...@gmail.com> > >> wrote: > >> > >>> Il lun 9 apr 2018, 22:20 Cade Markegard <cademarkeg...@gmail.com> 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 <jh...@apache.org> > 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 <eolive...@gmail.com> > >>>>> wrote: > >>>>>> > >>>>>> Il lun 9 apr 2018, 21:37 Julian Hyde <jh...@apache.org <mailto: > >>>>> jh...@apache.org>> 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 < > >> eolive...@gmail.com> > >>>>>>> wrote: > >>>>>>>> > >>>>>>>> Il lun 9 apr 2018, 19:05 Julian Hyde <jh...@apache.org> 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 > >>> > >> >