SHEN KAI created CALCITE-3745:
---------------------------------

             Summary: UnitCompiler can not find required class information.
                 Key: CALCITE-3745
                 URL: https://issues.apache.org/jira/browse/CALCITE-3745
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.21.0
         Environment:  

stacktrace:
{code:java}
Caused by: org.codehaus.commons.compiler.CompileException: Line 687, Column 40: 
Cannot determine simple type name "com"Caused by: 
org.codehaus.commons.compiler.CompileException: Line 687, Column 40: Cannot 
determine simple type name "com" at 
org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:12124) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6746) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6507) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6520) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6520) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6520) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6520) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6520) at 
org.codehaus.janino.UnitCompiler.getReferenceType(UnitCompiler.java:6520) at 
org.codehaus.janino.UnitCompiler.getType2(UnitCompiler.java:6486) at 
org.codehaus.janino.UnitCompiler.access$13800(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$21$1.visitReferenceType(UnitCompiler.java:6394)
 at 
org.codehaus.janino.UnitCompiler$21$1.visitReferenceType(UnitCompiler.java:6389)
 at org.codehaus.janino.Java$ReferenceType.accept(Java.java:3917) at 
org.codehaus.janino.UnitCompiler$21.visitType(UnitCompiler.java:6389) at 
org.codehaus.janino.UnitCompiler$21.visitType(UnitCompiler.java:6382) at 
org.codehaus.janino.Java$ReferenceType.accept(Java.java:3916) at 
org.codehaus.janino.UnitCompiler.getType(UnitCompiler.java:6382) at 
org.codehaus.janino.UnitCompiler.getType2(UnitCompiler.java:7034) at 
org.codehaus.janino.UnitCompiler.access$16900(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$21$2.visitNewClassInstance(UnitCompiler.java:6442)
 at 
org.codehaus.janino.UnitCompiler$21$2.visitNewClassInstance(UnitCompiler.java:6403)
 at org.codehaus.janino.Java$NewClassInstance.accept(Java.java:5179) at 
org.codehaus.janino.UnitCompiler$21.visitRvalue(UnitCompiler.java:6403) at 
org.codehaus.janino.UnitCompiler$21.visitRvalue(UnitCompiler.java:6382) at 
org.codehaus.janino.Java$Rvalue.accept(Java.java:4105) at 
org.codehaus.janino.UnitCompiler.getType(UnitCompiler.java:6382) at 
org.codehaus.janino.UnitCompiler.findIMethod(UnitCompiler.java:8939) at 
org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:5060) at 
org.codehaus.janino.UnitCompiler.access$9100(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$16.visitMethodInvocation(UnitCompiler.java:4421)
 at 
org.codehaus.janino.UnitCompiler$16.visitMethodInvocation(UnitCompiler.java:4394)
 at org.codehaus.janino.Java$MethodInvocation.accept(Java.java:5062) at 
org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4394) at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5575) at 
org.codehaus.janino.UnitCompiler.compileBoolean2(UnitCompiler.java:4147) at 
org.codehaus.janino.UnitCompiler.access$6600(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$14.visitBinaryOperation(UnitCompiler.java:3955)
 at 
org.codehaus.janino.UnitCompiler$14.visitBinaryOperation(UnitCompiler.java:3933)
 at org.codehaus.janino.Java$BinaryOperation.accept(Java.java:4853) at 
org.codehaus.janino.UnitCompiler.compileBoolean(UnitCompiler.java:3933) at 
org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4709) at 
org.codehaus.janino.UnitCompiler.access$8800(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$16.visitConditionalExpression(UnitCompiler.java:4418)
 at 
org.codehaus.janino.UnitCompiler$16.visitConditionalExpression(UnitCompiler.java:4394)
 at org.codehaus.janino.Java$ConditionalExpression.accept(Java.java:4504) at 
org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4394) at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5575) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2580) at 
org.codehaus.janino.UnitCompiler.access$2700(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1503)
 at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1487)
 at 
org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:3511)
 at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487) at 
org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567) at 
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3388) at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1357) 
at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1330) 
at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:822) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:981) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:951) at 
org.codehaus.janino.UnitCompiler.access$200(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:409)
 at 
org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:406)
 at org.codehaus.janino.Java$AnonymousClassDeclaration.accept(Java.java:1149) 
at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406) at 
org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:5422) at 
org.codehaus.janino.UnitCompiler.access$9500(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4430)
 at 
org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4394)
 at org.codehaus.janino.Java$NewAnonymousClassInstance.accept(Java.java:5227) 
at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4394) at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5575) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2649) at 
org.codehaus.janino.UnitCompiler.access$2800(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$6.visitReturnStatement(UnitCompiler.java:1504) 
at 
org.codehaus.janino.UnitCompiler$6.visitReturnStatement(UnitCompiler.java:1487) 
at org.codehaus.janino.Java$ReturnStatement.accept(Java.java:3552) at 
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487) at 
org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567) at 
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3388) at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1357) 
at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1330) 
at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:822) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:981) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:951) at 
org.codehaus.janino.UnitCompiler.access$200(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:409)
 at 
org.codehaus.janino.UnitCompiler$2.visitAnonymousClassDeclaration(UnitCompiler.java:406)
 at org.codehaus.janino.Java$AnonymousClassDeclaration.accept(Java.java:1149) 
at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406) at 
org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:5422) at 
org.codehaus.janino.UnitCompiler.access$9500(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4430)
 at 
org.codehaus.janino.UnitCompiler$16.visitNewAnonymousClassInstance(UnitCompiler.java:4394)
 at org.codehaus.janino.Java$NewAnonymousClassInstance.accept(Java.java:5227) 
at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4394) at 
org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5575) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2580) at 
org.codehaus.janino.UnitCompiler.access$2700(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1503)
 at 
org.codehaus.janino.UnitCompiler$6.visitLocalVariableDeclarationStatement(UnitCompiler.java:1487)
 at 
org.codehaus.janino.Java$LocalVariableDeclarationStatement.accept(Java.java:3511)
 at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487) at 
org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567) at 
org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3388) at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1357) 
at 
org.codehaus.janino.UnitCompiler.compileDeclaredMethods(UnitCompiler.java:1330) 
at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:822) at 
org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:432) at 
org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:215) at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:411)
 at 
org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:406)
 at 
org.codehaus.janino.Java$PackageMemberClassDeclaration.accept(Java.java:1414) 
at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406) at 
org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:378) at 
org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:237) at 
org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:465)
 at 
org.codehaus.janino.ClassBodyEvaluator.compileToClass(ClassBodyEvaluator.java:313)
 at org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java:235) at 
org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:207) at 
org.codehaus.commons.compiler.Cookable.cook(Cookable.java:50) at 
org.codehaus.janino.ClassBodyEvaluator.createInstance(ClassBodyEvaluator.java:347)
{code}
            Reporter: SHEN KAI


calcite uses specific classloader in  Unitcompiler, Usually is the launcher's 
default class loader. If user run sql with UDF, and the UDF class is loaded by 
a child classloader,  calcite's janino compiler throw a CompileException error.

can calcite uses Thread.currentThread().getContextClassloader() to get the 
classloader in compiler? 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to