Skip to content

Commit 137aa1c

Browse files
committed
adding order by back
1 parent 259aea7 commit 137aa1c

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

pinot-common/src/main/java/org/apache/pinot/sql/parsers/CalciteSqlParser.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,10 @@ public static List<String> extractTableNamesFromNode(SqlNode sqlNode) {
162162
tableNames.addAll(((SqlIdentifier) fromNode).names);
163163
tableNames.addAll(extractTableNamesFromNode(((SqlSelect) sqlNode).getWhere()));
164164
}
165+
} else if (sqlNode instanceof SqlOrderBy) {
166+
for (SqlNode node : ((SqlOrderBy) sqlNode).getOperandList()) {
167+
tableNames.addAll(extractTableNamesFromNode(node));
168+
}
165169
} else if (sqlNode instanceof SqlBasicCall) {
166170
if (((SqlBasicCall) sqlNode).getOperator() instanceof SqlAsOperator) {
167171
SqlNode firstOperand = ((SqlBasicCall) sqlNode).getOperandList().get(0);

pinot-common/src/test/java/org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3084,6 +3084,19 @@ public void testExtractTableNamesFromNode() {
30843084
Assert.assertEquals(tableNames.get(2), "tbl3");
30853085
Assert.assertEquals(tableNames.get(3), "tbl4");
30863086

3087+
// query with aliases, JOIN, IN/NOT-IN, group-by
3088+
query = "with tmp as (select col1, count(*) from tbl1 where condition1 = filter1 group by col1 order by col2), "
3089+
+ "tmp2 as (select A.col1, B.col2 from tbl2 as A JOIN tbl3 AS B on A.key = B.key) "
3090+
+ "select sum(col1) from tmp where col1 in (select col1 from tmp2) and col1 not in (select col1 from tbl4) "
3091+
+ "order by A.col1";
3092+
sqlNodeAndOptions = RequestUtils.parseQuery(query);
3093+
tableNames = CalciteSqlParser.extractTableNamesFromNode(sqlNodeAndOptions.getSqlNode());
3094+
Assert.assertEquals(tableNames.size(), 4);
3095+
Assert.assertEquals(tableNames.get(0), "tbl1");
3096+
Assert.assertEquals(tableNames.get(1), "tbl2");
3097+
Assert.assertEquals(tableNames.get(2), "tbl3");
3098+
Assert.assertEquals(tableNames.get(3), "tbl4");
3099+
30873100
// query with aliases, JOIN, IN/NOT-IN, group-by and explain
30883101
query = "explain plan for with tmp as (select col1, count(*) from tbl1 where condition1 = filter1 group by col1), "
30893102
+ "tmp2 as (select A.col1, B.col2 from tbl2 as A JOIN tbl3 AS B on A.key = B.key) "

0 commit comments

Comments
 (0)