You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ro...@apache.org on 2023/03/30 16:07:10 UTC
[pinot] branch master updated: [Multistage] Pushdown explain plan queries from controller to broker (#10505)
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 <ti...@uber.com>
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: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org