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