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