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

> 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.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.visitLocalVariableDeclarationStatement(UnitCompiler.java:1482)
>>    at
> org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1466)
>>    at
> org.codehaus.janino.Java$LocalVariableDeclarationStatement.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
>>> 
>> 

Reply via email to