[ 
https://issues.apache.org/jira/browse/CALCITE-4695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

duan xiong reassigned CALCITE-4695:
-----------------------------------

    Assignee: duan xiong

> The method of RelToSqlConverter.visit(Join e) throw NullPointerException
> ------------------------------------------------------------------------
>
>                 Key: CALCITE-4695
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4695
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.27.0
>         Environment: centos: Win10
> JDK: hostspot 1.8.0_291 
>            Reporter: jhkcool
>            Assignee: duan xiong
>            Priority: Major
>
> test sql:
> {code:java}
> select *
>  from "sales_fact_1997" as s
>  join "customer" as c
>  on s."customer_id" = c."customer_id"
>  join "product" as p
>  on s."product_id" = p."product_id"
>  where c."city" = 'San Francisco'
>  and p."brand_name" = 'Washington'{code}
> (from JdbcTest.testAlmostBushy())
> when I try to convert relnode to sql, throw NullPointerException, the code is 
> as follows:
> {quote}{{RelToSqlConverter relToSqlConverter = new 
> RelToSqlConverter(SqlDialect.DatabaseProduct.CALCITE.getDialect());}}
> {{ SqlImplementor.Result joinResult = 
> relToSqlConverter.visit((EnumerableMergeJoin)rootRel4);}}
> {quote}
>  
> And NullPointerException stackTrace is as follows:
>  
> {code:java}
> 0 = {StackTraceElement@7031} 
> "java.util.Objects.requireNonNull(Objects.java:203)"
>  1 = {StackTraceElement@7032} 
> "org.apache.calcite.rel.rel2sql.RelToSqlConverter.result(RelToSqlConverter.java:160)"
>  2 = {StackTraceElement@7033} 
> "org.apache.calcite.rel.rel2sql.SqlImplementor.result(SqlImplementor.java:453)"
>  3 = {StackTraceElement@7034} 
> "org.apache.calcite.rel.rel2sql.RelToSqlConverter.visit(RelToSqlConverter.java:239)"
>  4 = {StackTraceElement@7035} 
> "org.apache.calcite.prepare.Prepare.optimize(Prepare.java:179)"
>  5 = {StackTraceElement@7036} 
> "org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:300)"
>  6 = {StackTraceElement@7037} 
> "org.apache.calcite.prepare.Prepare.prepareSql(Prepare.java:215)"
>  7 = {StackTraceElement@7038} 
> "org.apache.calcite.prepare.CalcitePrepareImpl.prepare2_(CalcitePrepareImpl.java:647)"
>  8 = {StackTraceElement@7039} 
> "org.apache.calcite.prepare.CalcitePrepareImpl.prepare_(CalcitePrepareImpl.java:513)"
>  9 = {StackTraceElement@7040} 
> "org.apache.calcite.prepare.CalcitePrepareImpl.prepareSql(CalcitePrepareImpl.java:483)"
>  10 = {StackTraceElement@7041} 
> "org.apache.calcite.jdbc.CalciteConnectionImpl.parseQuery(CalciteConnectionImpl.java:249)"
>  11 = {StackTraceElement@7042} 
> "org.apache.calcite.jdbc.CalciteMetaImpl.prepareAndExecute(CalciteMetaImpl.java:623)"
>  12 = {StackTraceElement@7043} 
> "org.apache.calcite.avatica.AvaticaConnection.prepareAndExecuteInternal(AvaticaConnection.java:675)"
>  13 = {StackTraceElement@7044} 
> "org.apache.calcite.avatica.AvaticaStatement.executeInternal(AvaticaStatement.java:156)"
>  14 = {StackTraceElement@7045} 
> "org.apache.calcite.avatica.AvaticaStatement.executeQuery(AvaticaStatement.java:227)"
>  15 = {StackTraceElement@7046} 
> "org.apache.calcite.test.CalciteAssert.assertQuery(CalciteAssert.java:535)"
>  16 = {StackTraceElement@7047} 
> "org.apache.calcite.test.CalciteAssert$AssertQuery.lambda$returns$1(CalciteAssert.java:1547)"
>  17 = {StackTraceElement@7048} 
> "org.apache.calcite.test.CalciteAssert$AssertQuery.withConnection(CalciteAssert.java:1486)"
>  18 = {StackTraceElement@7049} 
> "org.apache.calcite.test.CalciteAssert$AssertQuery.returns(CalciteAssert.java:1545)"
>  19 = {StackTraceElement@7050} 
> "org.apache.calcite.test.CalciteAssert$AssertQuery.explainMatches(CalciteAssert.java:1739)"
>  20 = {StackTraceElement@7051} 
> "org.apache.calcite.test.JdbcTest.testAlmostBushy(JdbcTest.java:1179)"
>  21 = {StackTraceElement@7052} 
> "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"
>  22 = {StackTraceElement@7053} 
> "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"
>  23 = {StackTraceElement@7054} 
> "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
>  24 = {StackTraceElement@7055} 
> "java.lang.reflect.Method.invoke(Method.java:498)"
>  25 = {StackTraceElement@7056} 
> "org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:675)"
>  26 = {StackTraceElement@7057} 
> "org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)"
>  27 = {StackTraceElement@7058} 
> "org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:125)"
>  28 = {StackTraceElement@7059} 
> "org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:139)"
>  29 = {StackTraceElement@7060} 
> "org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:131)"
>  30 = {StackTraceElement@7061} 
> "org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:81)"
>  31 = {StackTraceElement@7062} 
> "org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)"
>  32 = {StackTraceElement@7063} 
> "org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)"
>  33 = {StackTraceElement@7064} 
> "org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:104)"
>  34 = {StackTraceElement@7065} 
> "org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:62)"
>  35 = {StackTraceElement@7066} 
> "org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:43)"
>  36 = {StackTraceElement@7067} 
> "org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:35)"
>  37 = {StackTraceElement@7068} 
> "org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)"
>  38 = {StackTraceElement@7069} 
> "org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)"
>  39 = {StackTraceElement@7070} 
> "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:202)"
>  40 = {StackTraceElement@7071} 
> "org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)"
>  41 = {StackTraceElement@7072} 
> "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:198)"
>  42 = {StackTraceElement@7073} 
> "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:135)"
>  43 = {StackTraceElement@7074} 
> "org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)"
>  44 = {StackTraceElement@7075} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:135)"
>  45 = {StackTraceElement@7076} 
> "org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)"
>  46 = {StackTraceElement@7077} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)"
>  47 = {StackTraceElement@7078} 
> "org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)"
>  48 = {StackTraceElement@7079} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)"
>  49 = {StackTraceElement@7080} 
> "org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)"
>  50 = {StackTraceElement@7081} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)"
>  51 = {StackTraceElement@7082} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)"
>  52 = {StackTraceElement@7083} 
> "java.util.ArrayList.forEach(ArrayList.java:1259)"
>  53 = {StackTraceElement@7084} 
> "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)"
>  54 = {StackTraceElement@7085} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)"
>  55 = {StackTraceElement@7086} 
> "org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)"
>  56 = {StackTraceElement@7087} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)"
>  57 = {StackTraceElement@7088} 
> "org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)"
>  58 = {StackTraceElement@7089} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)"
>  59 = {StackTraceElement@7090} 
> "org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)"
>  60 = {StackTraceElement@7091} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)"
>  61 = {StackTraceElement@7092} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)"
>  62 = {StackTraceElement@7093} 
> "java.util.ArrayList.forEach(ArrayList.java:1259)"
>  63 = {StackTraceElement@7094} 
> "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)"
>  64 = {StackTraceElement@7095} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)"
>  65 = {StackTraceElement@7096} 
> "org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)"
>  66 = {StackTraceElement@7097} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)"
>  67 = {StackTraceElement@7098} 
> "org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)"
>  68 = {StackTraceElement@7099} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)"
>  69 = {StackTraceElement@7100} 
> "org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)"
>  70 = {StackTraceElement@7101} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)"
>  71 = {StackTraceElement@7102} 
> "org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)"
>  72 = {StackTraceElement@7103} 
> "org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)"
>  73 = {StackTraceElement@7104} 
> "org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)"
>  74 = {StackTraceElement@7105} 
> "org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)"
>  75 = {StackTraceElement@7106} 
> "org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)"
>  76 = {StackTraceElement@7107} 
> "org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)"
>  77 = {StackTraceElement@7108} 
> "org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)"
>  78 = {StackTraceElement@7109} 
> "org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)"
>  79 = {StackTraceElement@7110} 
> "org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)"
>  80 = {StackTraceElement@7111} 
> "com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71)"
>  81 = {StackTraceElement@7112} 
> "com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)"
>  82 = {StackTraceElement@7113} 
> "com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)"
>  83 = {StackTraceElement@7114} 
> "com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)"
>  
> {code}
>  



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

Reply via email to