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 2020/08/28 20:09:00 UTC

[incubator-pinot] 01/01: Fixing the issue that transform UDFs are parsed as function name 'OTHER', not the real function names

This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch fixing_transform_udf_parsing_in_calcite_sql
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit 9a0f765ab6ea0e0f310718ba6434da5061ce55a3
Author: Xiang Fu <fx...@gmail.com>
AuthorDate: Fri Aug 28 13:08:33 2020 -0700

    Fixing the issue that transform UDFs are parsed as function name 'OTHER', not the real function names
---
 .../java/org/apache/pinot/sql/parsers/CalciteSqlParser.java |  1 +
 .../apache/pinot/sql/parsers/CalciteSqlCompilerTest.java    | 13 +++++++++++++
 2 files changed, 14 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 883834e..5275a1a 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
@@ -767,6 +767,7 @@ public class CalciteSqlParser {
           functionName = AggregationFunctionType.COUNT.name();
         }
         break;
+      case OTHER:
       case OTHER_FUNCTION:
         functionName = functionNode.getOperator().getName().toUpperCase();
         break;
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 25203f2..c025d6b 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
@@ -731,6 +731,19 @@ public class CalciteSqlCompilerTest {
   }
 
   @Test
+  public void testTimeTransformFunction() {
+    PinotQuery pinotQuery = CalciteSqlParser
+        .compileToPinotQuery("  select hour(ts), d1, sum(m1) from baseballStats group by hour(ts), d1");
+    Assert.assertEquals(pinotQuery.getSelectList().get(0).getFunctionCall().getOperator(), "HOUR");
+    Assert.assertEquals(pinotQuery.getSelectList().get(0).getFunctionCall().getOperands().get(0).getIdentifier().getName(), "ts");
+    Assert.assertEquals(pinotQuery.getSelectList().get(1).getIdentifier().getName(), "d1");
+    Assert.assertEquals(pinotQuery.getSelectList().get(2).getFunctionCall().getOperator(), "SUM");
+    Assert.assertEquals(pinotQuery.getGroupByList().get(0).getFunctionCall().getOperator(), "HOUR");
+    Assert.assertEquals(pinotQuery.getGroupByList().get(0).getFunctionCall().getOperands().get(0).getIdentifier().getName(), "ts");
+    Assert.assertEquals(pinotQuery.getGroupByList().get(1).getIdentifier().getName(), "d1");
+  }
+
+  @Test
   public void testSqlDistinctQueryCompilation() {
     // test single column DISTINCT
     String sql = "SELECT DISTINCT c1 FROM foo";


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org