Sure, I'll prepare the fix, just wanted to share good news :) Kind regards, Volodymyr Vysotskyi
On Tue, Aug 28, 2018 at 8:41 PM Julian Hyde <[email protected]> wrote: > Excellent. Can you commit the fix please, Vova? > > > On Aug 28, 2018, at 10:34 AM, Vova Vysotskyi <[email protected]> wrote: > > > > Hi all, > > > > Janino issue <https://github.com/janino-compiler/janino/issues/47> with > > this "strange" default method was fixed, so now we can revert the > temporary > > fix made in CALCITE-2261 > > <https://issues.apache.org/jira/browse/CALCITE-2261> and update Janino > > version to 3.0.9. > > > > Kind regards, > > Volodymyr Vysotskyi > > > > > > On Sat, Apr 21, 2018 at 11:27 AM Enrico Olivelli <[email protected]> > > wrote: > > > >> 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 > >> > >
