This is an automated email from the ASF dual-hosted git repository. xiangfu pushed a commit to branch fixing_distinct_orderby_validation in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git
commit 3af1c89ada9e07774fe907718d21ba1f7dc192f4 Author: Xiang Fu <fx19880...@gmail.com> AuthorDate: Wed Oct 21 14:14:37 2020 -0700 Fixing the issue of applying ordinals in order by for distinct queries --- .../main/java/org/apache/pinot/sql/parsers/CalciteSqlParser.java | 6 +++--- .../org/apache/pinot/sql/parsers/CalciteSqlCompilerTest.java | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) 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 7b41053..a3bd018 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 @@ -353,12 +353,12 @@ public class CalciteSqlParser { pinotQuery.setHavingExpression(updateComparisonPredicate(havingExpression)); } - // Rewrite GroupBy to Distinct - rewriteNonAggregationGroupByToDistinct(pinotQuery); - // Update Ordinals applyOrdinals(pinotQuery); + // Rewrite GroupBy to Distinct + rewriteNonAggregationGroupByToDistinct(pinotQuery); + // Update alias Map<Identifier, Expression> aliasMap = extractAlias(pinotQuery.getSelectList()); applyAlias(aliasMap, pinotQuery); 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 e9f37ce..7578b30 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 @@ -1611,6 +1611,15 @@ public class CalciteSqlCompilerTest { } @Test + public void testOrdinalsQueryRewriteWithDistinctOrderby() { + String query = "SELECT baseballStats.playerName AS playerName FROM baseballStats GROUP BY baseballStats.playerName ORDER BY 1 ASC"; + PinotQuery pinotQuery = CalciteSqlParser.compileToPinotQuery(query); + Assert.assertEquals(pinotQuery.getSelectList().get(0).getFunctionCall().getOperands().get(0).getIdentifier().getName(), "baseballStats.playerName"); + Assert.assertTrue(pinotQuery.getGroupByList().isEmpty()); + Assert.assertEquals(pinotQuery.getOrderByList().get(0).getFunctionCall().getOperands().get(0).getIdentifier().getName(), "baseballStats.playerName"); + } + + @Test public void testNoArgFunction() { String query = "SELECT noArgFunc() FROM foo "; PinotQuery pinotQuery = CalciteSqlParser.compileToPinotQuery(query); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org