[
https://issues.apache.org/jira/browse/CALCITE-4695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jhkcool updated CALCITE-4695:
-----------------------------
Description:
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}
was:
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}
> 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)