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").getDeclaredMethods();*
>> *    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.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
>> > >>>>>
>> > >>>>
>> > >>
>> >
>>
> --
>
>
> -- Enrico Olivelli
>
-- 


-- Enrico Olivelli

Reply via email to