Patch merged! Welcome to java 8 !
Enrico Il mar 17 apr 2018, 17:09 Enrico Olivelli <[email protected]> ha scritto: > Issue > https://issues.apache.org/jira/browse/CALCITE-2261 > > Patch > https://github.com/apache/calcite/pull/667 > > Cheers > Enrico > > > 2018-04-17 16:51 GMT+02:00 Enrico Olivelli <[email protected]>: > >> Vova, >> I tried to add some "default" methods and all tests are passing (maybe >> you already saw this). >> Thank you ! >> >> I will be happy to contribute my patch as it is really simple and I have >> it on my laptop >> >> Enrico >> >> >> 2018-04-17 15:49 GMT+02:00 Vova Vysotskyi <[email protected]>: >> >>> Taking a step to the side of a workaround, the current version of Janino >>> prefers default methods instead of "abstract", so we may declare >>> *SchemaPlus.getSubSchema()* method as default and it will help to choose >>> this method instead of the method from the parent interface :) >>> >>> Kind regards, >>> Volodymyr Vysotskyi >>> >>> 2018-04-17 15:10 GMT+03:00 Enrico Olivelli <[email protected]>: >>> >>> > I have tried to add an 'unwrap' method to Schema but then Janino keeps >>> > breaking for other similar reasons about method overriding with >>> narrower >>> > return types. >>> > >>> > I guess it will be an hard task to adapt Calcite code. >>> > The approach of working on Janino is better. >>> > >>> > Enrico >>> > >>> > Il dom 15 apr 2018, 14:43 Enrico Olivelli <[email protected]> ha >>> > scritto: >>> > >>> > > >>> > > >>> > > Il dom 15 apr 2018, 14:22 Vova Vysotskyi <[email protected]> ha >>> scritto: >>> > > >>> > >> I have reproduced it in Janino only and created the issue: >>> > >> https://github.com/janino-compiler/janino/issues/47 >>> > > >>> > > >>> > > Great work Vova, >>> > > Thank you >>> > > >>> > > Enrico >>> > > >>> > > >>> > > >>> > >> >>> > >> >>> > >> >>> > >> Kind regards, >>> > >> Volodymyr Vysotskyi >>> > >> >>> > >> 2018-04-14 20:15 GMT+03:00 Vova Vysotskyi <[email protected]>: >>> > >> >>> > >> > Ok, I will try to prepare a test case and will log a bug on Janino >>> > soon. >>> > >> > >>> > >> > Kind regards, >>> > >> > Volodymyr Vysotskyi >>> > >> > >>> > >> > 2018-04-14 20:02 GMT+03:00 Julian Hyde <[email protected]>: >>> > >> > >>> > >> >> Vova, >>> > >> >> >>> > >> >> Thanks for doing the research. Your explanation sounds very >>> plausible >>> > >> >> (I suspected default methods, too). Can you please log a bug on >>> > >> >> JANINO? https://github.com/janino-compiler/janino/issues Arno, >>> the >>> > >> >> project maintainer, has been very good to us over the years. >>> > >> >> >>> > >> >> Julian >>> > >> >> >>> > >> >> >>> > >> >> On Sat, Apr 14, 2018 at 9:28 AM, Enrico Olivelli < >>> > [email protected]> >>> > >> >> wrote: >>> > >> >> > Il sab 14 apr 2018, 18:20 Enrico Olivelli <[email protected]> >>> ha >>> > >> >> scritto: >>> > >> >> > >>> > >> >> >> >>> > >> >> >> >>> > >> >> >> Il sab 14 apr 2018, 17:39 Vova Vysotskyi <[email protected]> >>> ha >>> > >> >> scritto: >>> > >> >> >> >>> > >> >> >>> Hi all, >>> > >> >> >>> >>> > >> >> >>> I think the reason for this issue is that at the compile >>> stage >>> > was >>> > >> >> assumed >>> > >> >> >>> that *getSubSchema()* method returns *Schema *inheritor, but >>> not >>> > >> >> >>> *SchemaPlus*. >>> > >> >> >>> But the interesting thing is that with Java 8, methods list >>> of >>> > >> >> >>> *SchemaPlus *interface >>> > >> >> >>> contains default *getSubSchema()* method. >>> > >> >> >>> It may be observed by executing this code: >>> > >> >> >>> * Method[] declaredMethods = >>> > >> >> >>> >>> > >> >> >>> Class.forName("org.apache.calcite.schema.SchemaPlus").getDec >>> > >> >> laredMethods();* >>> > >> >> >>> * for (Method m : declaredMethods) {* >>> > >> >> >>> * if (m.getName().equals("getSubSchema")) {* >>> > >> >> >>> * System.out.println(m);* >>> > >> >> >>> * }* >>> > >> >> >>> * }* >>> > >> >> >>> >>> > >> >> >>> Its output: >>> > >> >> >>> >>> > >> >> >>> *public default org.apache.calcite.schema.Schema >>> > >> >> >>> >>> > >> org.apache.calcite.schema.SchemaPlus.getSubSchema(java.lang.String)* >>> > >> >> >>> *public abstract org.apache.calcite.schema.SchemaPlus >>> > >> >> >>> >>> > >> org.apache.calcite.schema.SchemaPlus.getSubSchema(java.lang.String)* >>> > >> >> >>> >>> > >> >> >>> The output of the same code for Java 7: >>> > >> >> >>> >>> > >> >> >>> *public abstract org.apache.calcite.schema.SchemaPlus >>> > >> >> >>> >>> > >> org.apache.calcite.schema.SchemaPlus.getSubSchema(java.lang.String)* >>> > >> >> >>> >>> > >> >> >>> Kind regards, >>> > >> >> >>> Volodymyr Vysotskyi >>> > >> >> >>> >>> > >> >> >> >>> > >> >> >> Good catch! >>> > >> >> >> It would be useful to look into that 'default' method by >>> > >> disassembling >>> > >> >> >> .class file. >>> > >> >> >> Enrico >>> > >> >> >> >>> > >> >> > >>> > >> >> > Anyway a fix would be to add an unwrap method to Schema >>> > >> >> > Cheers >>> > >> >> > Enrico >>> > >> >> > >>> > >> >> > >>> > >> >> >> >>> > >> >> >> >>> > >> >> >>> 2018-04-10 18:43 GMT+03:00 Julian Hyde < >>> [email protected]>: >>> > >> >> >>> >>> > >> >> >>> > 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 < >>> > >> [email protected]> >>> > >> >> >>> wrote: >>> > >> >> >>> > > >>> > >> >> >>> > > 2018-04-10 13:48 GMT+02:00 Julian Hyde < >>> > [email protected] >>> > >> >: >>> > >> >> >>> > > >>> > >> >> >>> > >> 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 < >>> > >> >> [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. >>> > visitParenthesizedExpr >>> > >> >> ession( >>> > >> >> >>> > >> UnitCompiler.java:4083) >>> > >> >> >>> > >>>> at >>> > >> >> >>> > >>> org.codehaus.janino.UnitCompiler$12$1. >>> > visitParenthesizedExpr >>> > >> >> ession( >>> > >> >> >>> > >> 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. >>> > visitParenthesizedExpr >>> > >> >> ession( >>> > >> >> >>> > >> UnitCompiler.java:4083) >>> > >> >> >>> > >>>> at >>> > >> >> >>> > >>> org.codehaus.janino.UnitCompiler$12$1. >>> > visitParenthesizedExpr >>> > >> >> ession( >>> > >> >> >>> > >> 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$Field >>> > >> >> Access.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. >>> > visitFieldAccessExpres >>> > >> >> sion( >>> > >> >> >>> > >> UnitCompiler.java:3948) >>> > >> >> >>> > >>>> at >>> > >> >> >>> > >>> org.codehaus.janino.UnitCompiler$11$1. >>> > visitFieldAccessExpres >>> > >> >> sion( >>> > >> >> >>> > >> 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. >>> > visitLocalVariableDeclara >>> > >> >> tionS >>> > >> >> >>> > >> tatement(UnitCompiler.java:1482) >>> > >> >> >>> > >>>> at >>> > >> >> >>> > >>> org.codehaus.janino.UnitCompiler$6. >>> > visitLocalVariableDeclara >>> > >> >> tionS >>> > >> >> >>> > >> 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 < >>> > >> >> [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 >>> > >> >> >>> > >>>>> >>> > >> >> >>> > >>>> >>> > >> >> >>> > >> >>> > >> >> >>> > >>> > >> >> >>> >>> > >> >> >> -- >>> > >> >> >> >>> > >> >> >> >>> > >> >> >> -- Enrico Olivelli >>> > >> >> >> >>> > >> >> > -- >>> > >> >> > >>> > >> >> > >>> > >> >> > -- Enrico Olivelli >>> > >> >> >>> > >> > >>> > >> > >>> > >> >>> > > -- >>> > > >>> > > >>> > > -- Enrico Olivelli >>> > > >>> > -- >>> > >>> > >>> > -- Enrico Olivelli >>> > >>> >> >> > -- -- Enrico Olivelli
