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.visitParenthesizedExpression(
>> UnitCompiler.java:4083)
>>>>   at
>>> org.codehaus.janino.UnitCompiler$12$1.visitParenthesizedExpression(
>> 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.visitParenthesizedExpression(
>> UnitCompiler.java:4083)
>>>>   at
>>> org.codehaus.janino.UnitCompiler$12$1.visitParenthesizedExpression(
>> 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$FieldAccess.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.visitFieldAccessExpression(
>> UnitCompiler.java:3948)
>>>>   at
>>> org.codehaus.janino.UnitCompiler$11$1.visitFieldAccessExpression(
>> 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.visitLocalVariableDeclarationS
>> tatement(UnitCompiler.java:1482)
>>>>   at
>>> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationS
>> 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
>>>>> 
>>>> 
>> 

Reply via email to