I’d really appreciate that. Can you please log a JIRA case, and record your observations/progress there.
There’s no particular hurry on this one. Julian > On Apr 10, 2018, at 06:32, Enrico Olivelli <eolive...@gmail.com> wrote: > > 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 >>>>> >>>> >>