Excellent. Can you commit the fix please, Vova?

> On Aug 28, 2018, at 10:34 AM, Vova Vysotskyi <vvo...@gmail.com> 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 <eolive...@gmail.com>
> wrote:
> 
>> Patch merged!
>> 
>> Welcome to java 8 !
>> 
>> Enrico
>> 
>> Il mar 17 apr 2018, 17:09 Enrico Olivelli <eolive...@gmail.com> 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 <eolive...@gmail.com>:
>>> 
>>>> 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 <vvo...@gmail.com>:
>>>> 
>>>>> 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 <eolive...@gmail.com>:
>>>>> 
>>>>>> 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 <eolive...@gmail.com> ha
>>>>>> scritto:
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Il dom 15 apr 2018, 14:22 Vova Vysotskyi <vvo...@gmail.com> 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 <vvo...@gmail.com>:
>>>>>>>> 
>>>>>>>>> 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 <jh...@apache.org>:
>>>>>>>>> 
>>>>>>>>>> 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 <
>>>>>> eolive...@gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>>> Il sab 14 apr 2018, 18:20 Enrico Olivelli <
>> eolive...@gmail.com>
>>>>> ha
>>>>>>>>>> scritto:
>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> Il sab 14 apr 2018, 17:39 Vova Vysotskyi <vvo...@gmail.com>
>>>>> 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.apa...@gmail.com>:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> I’d really appreciate that.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Can you please log a JIRA case, and record your
>>>>>>>>>> observations/progress
>>>>>>>>>>>>>> there.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> There’s no particular hurry on this one.
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Julian
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> On Apr 10, 2018, at 06:32, Enrico Olivelli <
>>>>>>>> eolive...@gmail.com>
>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 2018-04-10 13:48 GMT+02:00 Julian Hyde <
>>>>>> jhyde.apa...@gmail.com
>>>>>>>>> :
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Yes, that’s it.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Next step would be to check whether the generated code
>>>>> is
>>>>>> the
>>>>>>>>>> same as
>>>>>>>>>>>>>>>> previously, and if so, it is a Janino bug. Then try to
>>>>>> create
>>>>>>>> a
>>>>>>>>>>>>> minimal
>>>>>>>>>>>>>>>> test case for Janino. Maybe we can work around by
>>>>> adding an
>>>>>>>>>> explicit
>>>>>>>>>>>>>> cast
>>>>>>>>>>>>>>>> somewhere.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Thanks for reproducing this, and trying the Janino
>>>>> upgrade.
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Julian,
>>>>>>>>>>>>>>> If you have no hurry for this I will be happy to spend
>>>>> some
>>>>>>>> time
>>>>>>>>>> in
>>>>>>>>>>>>> order
>>>>>>>>>>>>>>> to figure out the root cause.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> I will follow the discussion and jump in when I have
>> some
>>>>>> idea.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> It will be great to have Calcite really built on jdk8
>> and
>>>>>>>> leverage
>>>>>>>>>>>>>> lambdas
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Cheers
>>>>>>>>>>>>>>> Enrico
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> Julian
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> On Apr 10, 2018, at 3:37 AM, Enrico Olivelli <
>>>>>>>>>> eolive...@gmail.com>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> This is "the" error (see below). Unfortunately just
>> be
>>>>>>>> upgrading
>>>>>>>>>>>>> Janino
>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>> 3.0.8 the problem still is present.
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> the only 'unwrap'  word in the generated code is here
>>>>>>>>>>>>>>>>> ...
>>>>>>>>>>>>>>>>> public org.apache.calcite.linq4j.Enumerable
>> bind(final
>>>>>>>>>>>>>>>>> org.apache.calcite.DataContext root0) {
>>>>>>>>>>>>>>>>> root = root0;
>>>>>>>>>>>>>>>>> final org.apache.calcite.linq4j.Enumerable
>>>>>> _inputEnumerable =
>>>>>>>>>>>>>>>>> org.apache.calcite.linq4j.Linq4j.asEnumerable(((org.
>>>>>>>>>>>>>> apache.calcite.test.
>>>>>>>>>>>>>>>> ReflectiveSchemaTest.CatchallSchema)
>>>>>>>>>>>>>>>>> ((org.apache.calcite.adapter.java.ReflectiveSchema)
>>>>>>>>>>>>>>>>> root.getRootSchema().getSubSchema("s").unwrap(org.
>>>>>>>>>>>>>>>> apache.calcite.adapter.java.ReflectiveSchema.class)).
>>>>>>>>>>>>>>>> getTarget()).nullables);
>>>>>>>>>>>>>>>>> ....
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Does any ring bell ?
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Enrico
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>> Caused by:
>>>>> org.codehaus.commons.compiler.CompileException:
>>>>>>>>>> Line 5,
>>>>>>>>>>>>>>>> Column
>>>>>>>>>>>>>>>>> 272: A method named "unwrap" is not declared in any
>>>>>> enclosing
>>>>>>>>>> class
>>>>>>>>>>>>> nor
>>>>>>>>>>>>>>>> any
>>>>>>>>>>>>>>>>> supertype, nor through a static import
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.
>>>>>>>>>> java:11821)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.
>>>>>>>>>> java:8731)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.
>>>>>>>>>> java:4737)
>>>>>>>>>>>>>>>>>>  at org.codehaus.janino.UnitCompiler.access$8300(
>>>>>>>>>>>>>>>> UnitCompiler.java:212)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
>>>>>>>>>>>>>>>> UnitCompiler.java:4097)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler$12.visitMethodInvocation(
>>>>>>>>>>>>>>>> UnitCompiler.java:4070)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>> 
>>>>> org.codehaus.janino.Java$MethodInvocation.accept(Java.java:4902)
>>>>>>>>>>>>>>>>>>  at org.codehaus.janino.UnitCompiler.compileGet(
>>>>>>>>>>>>>>>> UnitCompiler.java:4070)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> org.codehaus.janino.UnitCompiler.compileGetValue(
>>>>>>>>>>>>>> UnitCompiler.java:5253)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.
>>>>>>>>>> java:4696)
>>>>>>>>>>>>>>>>>>  at org.codehaus.janino.UnitCompiler.access$7800(
>>>>>>>>>>>>>>>> UnitCompiler.java:212)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4092)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler$12.visitCast(UnitCompiler.java:4070)
>>>>>>>>>>>>>>>>>>  at
>>>>> org.codehaus.janino.Java$Cast.accept(Java.java:4727)
>>>>>>>>>>>>>>>>>>  at org.codehaus.janino.UnitCompiler.compileGet(
>>>>>>>>>>>>>>>> UnitCompiler.java:4070)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> 
>>>>> org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.
>>>>>>>>>> java:4732)
>>>>>>>>>>>>>>>>>>  at org.codehaus.janino.UnitCompiler.access$7300(
>>>>>>>>>>>>>>>> UnitCompiler.java:212)
>>>>>>>>>>>>>>>>>>  at
>>>>>>>>>>>>>>>>> org.codehaus.janino.UnitCompiler$12$1.
>>>>>> 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 <
>>>>>>>>>> cademarkeg...@gmail.com
>>>>>>>>>>>>>> :
>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> Awesome!
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> On Mon, Apr 9, 2018 at 1:29 PM Enrico Olivelli <
>>>>>>>>>>>>> eolive...@gmail.com>
>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Il lun 9 apr 2018, 22:20 Cade Markegard <
>>>>>>>>>> cademarkeg...@gmail.com>
>>>>>>>>>>>>> ha
>>>>>>>>>>>>>>>>>>> scritto:
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> Not sure if this is related, but it seems like
>>>>> Janino
>>>>>>>> doesn't
>>>>>>>>>>>>>> support
>>>>>>>>>>>>>>>>>>> Java8
>>>>>>>>>>>>>>>>>>>> lambdas under "Limitations" in
>>>>>>>> http://janino-compiler.github
>>>>>>>>>> .
>>>>>>>>>>>>>>>>>> io/janino/
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> This should not be a problem, we are not generating
>>>>> java
>>>>>>>>>> sources
>>>>>>>>>>>>> with
>>>>>>>>>>>>>>>>>>> lambdas (maybe in future?).
>>>>>>>>>>>>>>>>>>> I will be happy to do some trials with new Janino,
>>>>> but I
>>>>>>>> guess
>>>>>>>>>>>>> that
>>>>>>>>>>>>>>>> would
>>>>>>>>>>>>>>>>>>> be the only way (or to drop Janino, but I think it
>>>>> will
>>>>>> be
>>>>>>>>>>>>> harder). I
>>>>>>>>>>>>>>>>>> have
>>>>>>>>>>>>>>>>>>> not much time these days.
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Anyhow I am testing my apps on jdk10 and Calcite is
>>>>>> working
>>>>>>>>>> like a
>>>>>>>>>>>>>>>> charm
>>>>>>>>>>>>>>>>>> !
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> Enrico
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> On Mon, Apr 9, 2018 at 12:54 PM Julian Hyde <
>>>>>>>>>> jh...@apache.org>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> I didn’t try. We’re on janino 2.7.6. The 2.x line
>>>>> only
>>>>>>>> goes
>>>>>>>>>> up
>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>>> 2.7.8.
>>>>>>>>>>>>>>>>>>>>> I’m not eager to try upgrading to 3.x (latest
>>>>> release
>>>>>> is
>>>>>>>>>> 3.0.8)
>>>>>>>>>>>>>>>>>>>> especially
>>>>>>>>>>>>>>>>>>>>> as they don’t explicitly mention fixing a JDK 8
>>>>> issue.
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>> http://janino-compiler.github.io/janino/changelog.html
>>>>>> <
>>>>>>>>>>>>>>>>>>>>> 
>>>>> http://janino-compiler.github.io/janino/changelog.html
>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> On Apr 9, 2018, at 12:42 PM, Enrico Olivelli <
>>>>>>>>>>>>> eolive...@gmail.com
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Il lun 9 apr 2018, 21:37 Julian Hyde <
>>>>>> jh...@apache.org
>>>>>>>>>>>>> <mailto:
>>>>>>>>>>>>>>>>>>>>> jh...@apache.org>> ha scritto:
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Don’t have the error stack, but janino could
>> not
>>>>>>>> compile
>>>>>>>>>>>>>> generated
>>>>>>>>>>>>>>>>>>>> code
>>>>>>>>>>>>>>>>>>>>>>> because it said an “unwrap” method did not
>> exist.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> There were no lambdas. I think perhaps that
>>>>> version
>>>>>> of
>>>>>>>>>> janino
>>>>>>>>>>>>>>>>>> could
>>>>>>>>>>>>>>>>>>>> not
>>>>>>>>>>>>>>>>>>>>>>> fully understand the Calcite class files.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> To reproduce, change 2 lines in core/pom.xml
>> and
>>>>> run
>>>>>>>> “mvn
>>>>>>>>>>>>> test”.
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Did you try to update to latest Janino?
>>>>>>>>>>>>>>>>>>>>>> It seems to that we have an old version (2.7.6)
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> Enrico
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> Julian
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> On Apr 9, 2018, at 12:15 PM, Enrico Olivelli <
>>>>>>>>>>>>>>>>>> eolive...@gmail.com>
>>>>>>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Il lun 9 apr 2018, 19:05 Julian Hyde <
>>>>>>>> jh...@apache.org>
>>>>>>>>>> ha
>>>>>>>>>>>>>>>>>>> scritto:
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Has anyone had any luck using JDK 8 syntax
>>>>> (e.g.
>>>>>> “->”
>>>>>>>>>> for
>>>>>>>>>>>>>>>>>> lambdas)
>>>>>>>>>>>>>>>>>>>> in
>>>>>>>>>>>>>>>>>>>>>>>>> Calcite?
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> In core/pom.xml I changed source=1.7
>>>>> target=1.7 to
>>>>>>>>>> source=8
>>>>>>>>>>>>>>>>>>> target=8
>>>>>>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>>>>>>>>> it allowed the syntax but it seemed to break
>>>>> any
>>>>>>>> tests
>>>>>>>>>> that
>>>>>>>>>>>>>>>>>> relied
>>>>>>>>>>>>>>>>>>>> on
>>>>>>>>>>>>>>>>>>>>>>>>> janino.
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Julian,
>>>>>>>>>>>>>>>>>>>>>>>> Could you please share a stacktrace of your
>>>>> error?
>>>>>>>>>>>>>>>>>>>>>>>> As far as I know using lambdas is not only a
>>>>> matter
>>>>>> of
>>>>>>>>>>>>> syntactic
>>>>>>>>>>>>>>>>>>>> sugar
>>>>>>>>>>>>>>>>>>>>>>> but
>>>>>>>>>>>>>>>>>>>>>>>> they are more efficient than simple anonymous
>>>>>> classes.
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> Cheers
>>>>>>>>>>>>>>>>>>>>>>>> Enrico
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Related: https://issues.apache.org/jira
>>>>>>>>>> /browse/CALCITE-2027
>>>>>>>>>>>>> <
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>> https://issues.apache.org/jira/browse/CALCITE-2027
>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> Julian
>>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>>> -- Enrico Olivelli
>>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>>> -- Enrico Olivelli
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>>> -- Enrico Olivelli
>>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>> --
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> -- Enrico Olivelli
>>>>>>>>>>>> 
>>>>>>>>>>> --
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> -- Enrico Olivelli
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> --
>>>>>>> 
>>>>>>> 
>>>>>>> -- Enrico Olivelli
>>>>>>> 
>>>>>> --
>>>>>> 
>>>>>> 
>>>>>> -- Enrico Olivelli
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>> --
>> 
>> 
>> -- Enrico Olivelli
>> 

Reply via email to