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
> >>
>
>

Reply via email to