This is an automated email from the ASF dual-hosted git repository.
rongr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push:
new 985d48294a [Multistage] Pushdown explain plan queries from controller
to broker (#10505)
985d48294a is described below
commit 985d48294ae2835e38f1798d988669d3b6ad3b6c
Author: Pratik Tibrewal <[email protected]>
AuthorDate: Thu Mar 30 21:36:59 2023 +0530
[Multistage] Pushdown explain plan queries from controller to broker
(#10505)
---
.../java/org/apache/pinot/sql/parsers/CalciteSqlParser.java | 3 +++
.../org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java | 12 ++++++++++++
2 files changed, 15 insertions(+)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/sql/parsers/CalciteSqlParser.java
b/pinot-common/src/main/java/org/apache/pinot/sql/parsers/CalciteSqlParser.java
index 237f0eb496..2b51eeaa35 100644
---
a/pinot-common/src/main/java/org/apache/pinot/sql/parsers/CalciteSqlParser.java
+++
b/pinot-common/src/main/java/org/apache/pinot/sql/parsers/CalciteSqlParser.java
@@ -174,6 +174,9 @@ public class CalciteSqlParser {
}
tableNames.addAll(extractTableNamesFromNode(((SqlWith) sqlNode).body));
tableNames.removeAll(aliases);
+ } else if (sqlNode instanceof SqlExplain) {
+ SqlExplain explain = (SqlExplain) sqlNode;
+ tableNames.addAll(extractTableNamesFromNode(explain.getExplicandum()));
}
return tableNames;
}
diff --git
a/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java
b/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java
index 9ac05dd985..3ef529233f 100644
---
a/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java
+++
b/pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java
@@ -3065,6 +3065,18 @@ public class CalciteSqlCompilerTest {
Assert.assertEquals(tableNames.get(1), "tbl2");
Assert.assertEquals(tableNames.get(2), "tbl3");
Assert.assertEquals(tableNames.get(3), "tbl4");
+
+ // query with aliases, JOIN, IN/NOT-IN, group-by and explain
+ query = "explain plan for with tmp as (select col1, count(*) from tbl1
where condition1 = filter1 group by col1), "
+ + "tmp2 as (select A.col1, B.col2 from tbl2 as A JOIN tbl3 AS B on
A.key = B.key) "
+ + "select sum(col1) from tmp where col1 in (select col1 from tmp2) and
col1 not in (select col1 from tbl4)";
+ sqlNodeAndOptions = RequestUtils.parseQuery(query);
+ tableNames =
CalciteSqlParser.extractTableNamesFromNode(sqlNodeAndOptions.getSqlNode());
+ Assert.assertEquals(tableNames.size(), 4);
+ Assert.assertEquals(tableNames.get(0), "tbl1");
+ Assert.assertEquals(tableNames.get(1), "tbl2");
+ Assert.assertEquals(tableNames.get(2), "tbl3");
+ Assert.assertEquals(tableNames.get(3), "tbl4");
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]