[
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)