You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by xi...@apache.org on 2023/06/20 22:01:36 UTC
[pinot] branch master updated: Fixing table name extraction for lateral join queries (#10933)
This is an automated email from the ASF dual-hosted git repository.
xiangfu 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 84bc45f713 Fixing table name extraction for lateral join queries (#10933)
84bc45f713 is described below
commit 84bc45f713daa2bdde80f30bd3e2cf0c3dc7fa95
Author: Xiang Fu <xi...@gmail.com>
AuthorDate: Tue Jun 20 15:01:29 2023 -0700
Fixing table name extraction for lateral join queries (#10933)
---
.../org/apache/pinot/sql/parsers/CalciteSqlParser.java | 2 ++
.../src/test/resources/queries/JoinPlans.json | 18 ++++++++++++++++++
.../src/test/resources/queries/BasicQuery.json | 5 +++++
3 files changed, 25 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 3103ae8ccc..4ad162fe2a 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
@@ -180,6 +180,8 @@ public class CalciteSqlParser {
SqlNode firstOperand = ((SqlBasicCall) sqlNode).getOperandList().get(0);
if (firstOperand instanceof SqlSelect) {
tableNames.addAll(extractTableNamesFromNode(firstOperand));
+ } else if (firstOperand instanceof SqlBasicCall) {
+ tableNames.addAll(extractTableNamesFromNode(((SqlBasicCall) firstOperand).getOperandList().get(0)));
} else {
tableNames.addAll(((SqlIdentifier) firstOperand).names);
}
diff --git a/pinot-query-planner/src/test/resources/queries/JoinPlans.json b/pinot-query-planner/src/test/resources/queries/JoinPlans.json
index ea5576e727..330ec3e53f 100644
--- a/pinot-query-planner/src/test/resources/queries/JoinPlans.json
+++ b/pinot-query-planner/src/test/resources/queries/JoinPlans.json
@@ -328,6 +328,24 @@
"\n LogicalTableScan(table=[[b]])",
"\n"
]
+ },
+ {
+ "description": "Lateral join",
+ "sql": "EXPLAIN PLAN FOR SELECT a.col1, newb.sum_col3 FROM a JOIN LATERAL (SELECT SUM(col3) as sum_col3 FROM b WHERE col2 = a.col2) AS newb ON TRUE;\n",
+ "output": [
+ "Execution Plan",
+ "\nLogicalProject(col1=[$0], sum_col3=[$3])",
+ "\n LogicalJoin(condition=[=($1, $2)], joinType=[inner])",
+ "\n PinotLogicalExchange(distribution=[hash[1]])",
+ "\n LogicalProject(col1=[$0], col2=[$1])",
+ "\n LogicalTableScan(table=[[a]])",
+ "\n PinotLogicalExchange(distribution=[hash[0]])",
+ "\n LogicalAggregate(group=[{0}], sum_col3=[$SUM0($1)])",
+ "\n PinotLogicalExchange(distribution=[hash[0]])",
+ "\n LogicalAggregate(group=[{1}], sum_col3=[$SUM0($2)])",
+ "\n LogicalTableScan(table=[[b]])",
+ "\n"
+ ]
}
]
},
diff --git a/pinot-query-runtime/src/test/resources/queries/BasicQuery.json b/pinot-query-runtime/src/test/resources/queries/BasicQuery.json
index 5bcecfe622..3348a7a856 100644
--- a/pinot-query-runtime/src/test/resources/queries/BasicQuery.json
+++ b/pinot-query-runtime/src/test/resources/queries/BasicQuery.json
@@ -61,6 +61,11 @@
{
"description": "Correlated subquery test",
"sql": "SELECT {tbl1}.col1 FROM {tbl1} WHERE {tbl1}.col2 > (SELECT 0.5 * SUM({tbl2}.col3) FROM {tbl2} WHERE {tbl1}.col2 = {tbl1}.col2 AND {tbl1}.col1 = {tbl2}.col1)"
+ },
+ {
+ "description": "Lateral join query test",
+ "sql": "SELECT {tbl1}.col1, newb.sum_col3 FROM {tbl1} JOIN LATERAL (SELECT SUM(col3) as sum_col3 FROM {tbl2} WHERE col2 = {tbl1}.col2) AS newb ON TRUE",
+ "h2Sql": "SELECT {tbl1}.col1, newb.sum_col3 FROM {tbl1} JOIN (SELECT {tbl2}.col2, SUM({tbl2}.col3) AS sum_col3 FROM {tbl2} GROUP BY {tbl2}.col2) AS newb ON newb.col2 = {tbl1}.col2"
}
],
"extraProps": {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org