git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: JDK 8 syntax


Patch merged!

Welcome to java 8 !

Enrico

Il mar 17 apr 2018, 17:09 Enrico Olivelli <eolivelli@xxxxxxxxx> 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 <eolivelli@xxxxxxxxx>:
>
>> 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 <vvovyk@xxxxxxxxx>:
>>
>>> 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 <eolivelli@xxxxxxxxx>:
>>>
>>> > 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 <eolivelli@xxxxxxxxx> ha
>>> > scritto:
>>> >
>>> > >
>>> > >
>>> > > Il dom 15 apr 2018, 14:22 Vova Vysotskyi <vvovyk@xxxxxxxxx> 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 <vvovyk@xxxxxxxxx>:
>>> > >>
>>> > >> > 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 <jhyde@xxxxxxxxxx>:
>>> > >> >
>>> > >> >> 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 <
>>> > eolivelli@xxxxxxxxx>
>>> > >> >> wrote:
>>> > >> >> > Il sab 14 apr 2018, 18:20 Enrico Olivelli <eolivelli@xxxxxxxxx>
>>> ha
>>> > >> >> scritto:
>>> > >> >> >
>>> > >> >> >>
>>> > >> >> >>
>>> > >> >> >> Il sab 14 apr 2018, 17:39 Vova Vysotskyi <vvovyk@xxxxxxxxx>
>>> 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 <
>>> jhyde.apache@xxxxxxxxx>:
>>> > >> >> >>>
>>> > >> >> >>> > 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 <
>>> > >> eolivelli@xxxxxxxxx>
>>> > >> >> >>> wrote:
>>> > >> >> >>> > >
>>> > >> >> >>> > > 2018-04-10 13:48 GMT+02:00 Julian Hyde <
>>> > jhyde.apache@xxxxxxxxx
>>> > >> >:
>>> > >> >> >>> > >
>>> > >> >> >>> > >> 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 <
>>> > >> >> eolivelli@xxxxxxxxx>
>>> > >> >> >>> > >> 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 <
>>> > >> >> cademarkegard@xxxxxxxxx
>>> > >> >> >>> >:
>>> > >> >> >>> > >>>
>>> > >> >> >>> > >>>> Awesome!
>>> > >> >> >>> > >>>>
>>> > >> >> >>> > >>>> On Mon, Apr 9, 2018 at 1:29 PM Enrico Olivelli <
>>> > >> >> >>> eolivelli@xxxxxxxxx>
>>> > >> >> >>> > >>>> wrote:
>>> > >> >> >>> > >>>>
>>> > >> >> >>> > >>>>> Il lun 9 apr 2018, 22:20 Cade Markegard <
>>> > >> >> cademarkegard@xxxxxxxxx>
>>> > >> >> >>> 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 <
>>> > >> >> jhyde@xxxxxxxxxx>
>>> > >> >> >>> > >> 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 <
>>> > >> >> >>> eolivelli@xxxxxxxxx
>>> > >> >> >>> > >
>>> > >> >> >>> > >>>>>>> wrote:
>>> > >> >> >>> > >>>>>>>>
>>> > >> >> >>> > >>>>>>>> Il lun 9 apr 2018, 21:37 Julian Hyde <
>>> > jhyde@xxxxxxxxxx
>>> > >> >> >>> <mailto:
>>> > >> >> >>> > >>>>>>> jhyde@xxxxxxxxxx>> 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 <
>>> > >> >> >>> > >>>> eolivelli@xxxxxxxxx>
>>> > >> >> >>> > >>>>>>>>> wrote:
>>> > >> >> >>> > >>>>>>>>>>
>>> > >> >> >>> > >>>>>>>>>> Il lun 9 apr 2018, 19:05 Julian Hyde <
>>> > >> jhyde@xxxxxxxxxx>
>>> > >> >> 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


( ! ) Warning: include(msgfooter.php): failed to open stream: No such file or directory in /var/www/git/apache-calcite-development/msg03259.html on line 832
Call Stack
#TimeMemoryFunctionLocation
10.0018417896{main}( ).../msg03259.html:0

( ! ) Warning: include(): Failed opening 'msgfooter.php' for inclusion (include_path='.:/var/www/git') in /var/www/git/apache-calcite-development/msg03259.html on line 832
Call Stack
#TimeMemoryFunctionLocation
10.0018417896{main}( ).../msg03259.html:0