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.UnitCompil >> er.findIMethod(UnitCompiler. >> > >> >> java:8731) >> > >> >> >>> > >>>> at >> > >> >> >>> > >>> org.codehaus.janino.UnitCompil >> er.compileGet2(UnitCompiler. >> > >> >> java:4737) >> > >> >> >>> > >>>> at org.codehaus.janino.UnitCompiler.access$8300( >> > >> >> >>> > >> UnitCompiler.java:212) >> > >> >> >>> > >>>> at >> > >> >> >>> > >>> org.codehaus.janino.UnitCompil >> er$12.visitMethodInvocation( >> > >> >> >>> > >> UnitCompiler.java:4097) >> > >> >> >>> > >>>> at >> > >> >> >>> > >>> org.codehaus.janino.UnitCompil >> er$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.UnitCompil >> er.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.UnitCompil >> er.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.UnitCompil >> er.compileGet2(UnitCompiler. >> > >> >> java:4792) >> > >> >> >>> > >>>> at org.codehaus.janino.UnitCompiler.access$8300( >> > >> >> >>> > >> UnitCompiler.java:212) >> > >> >> >>> > >>>> at >> > >> >> >>> > >>> org.codehaus.janino.UnitCompil >> er$12.visitMethodInvocation( >> > >> >> >>> > >> UnitCompiler.java:4097) >> > >> >> >>> > >>>> at >> > >> >> >>> > >>> org.codehaus.janino.UnitCompil >> er$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.UnitCompil >> er.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.UnitCompil >> er.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.UnitCompil >> er.compileGet2(UnitCompiler. >> > >> >> java:4842) >> > >> >> >>> > >>>> at org.codehaus.janino.UnitCompiler.access$8300( >> > >> >> >>> > >> UnitCompiler.java:212) >> > >> >> >>> > >>>> at >> > >> >> >>> > >>> org.codehaus.janino.UnitCompil >> er$12.visitMethodInvocation( >> > >> >> >>> > >> UnitCompiler.java:4097) >> > >> >> >>> > >>>> at >> > >> >> >>> > >>> org.codehaus.janino.UnitCompil >> er$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 >> > >> > >