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

jackie 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 0817c5e848 Turn on expand identifier in SqlValidator config (#11457)
0817c5e848 is described below

commit 0817c5e848c5640f635c4a5b9515c21d9aaaca1c
Author: Xiang Fu <[email protected]>
AuthorDate: Wed Aug 30 12:03:06 2023 -0700

    Turn on expand identifier in SqlValidator config (#11457)
---
 .../tests/MultiStageEngineIntegrationTest.java     | 22 ++++++++++++++++++++++
 .../org/apache/pinot/query/validate/Validator.java |  3 ++-
 .../apache/pinot/query/QueryCompilationTest.java   |  5 -----
 .../test/resources/queries/BasicQueryPlans.json    | 14 ++++++++++++++
 4 files changed, 38 insertions(+), 6 deletions(-)

diff --git 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
index e3dcbdcfe9..d9ee8b3a49 100644
--- 
a/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
+++ 
b/pinot-integration-tests/src/test/java/org/apache/pinot/integration/tests/MultiStageEngineIntegrationTest.java
@@ -529,6 +529,28 @@ public class MultiStageEngineIntegrationTest extends 
BaseClusterIntegrationTestS
       assertEquals(encoded, toBase64(toUtf8(original)));
       assertEquals(decoded, fromUtf8(fromBase64(toBase64(toUtf8(original)))));
     }
+
+    // Test select with group by order by limit
+    sqlQuery = "SELECT toBase64(toUtf8(AirlineID)) "
+        + "FROM mytable "
+        + "GROUP BY toBase64(toUtf8(AirlineID)) "
+        + "ORDER BY toBase64(toUtf8(AirlineID)) DESC "
+        + "LIMIT 10";
+    response = postQuery(sqlQuery);
+    resultTable = response.get("resultTable");
+    dataSchema = resultTable.get("dataSchema");
+    assertEquals(dataSchema.get("columnDataTypes").toString(), "[\"STRING\"]");
+    rows = response.get("resultTable").get("rows");
+    assertEquals(rows.get(0).get(0).asText(), "MjExNzE=");
+    assertEquals(rows.get(1).get(0).asText(), "MjAzOTg=");
+    assertEquals(rows.get(2).get(0).asText(), "MjAzNjY=");
+    assertEquals(rows.get(3).get(0).asText(), "MjAzNTU=");
+    assertEquals(rows.get(4).get(0).asText(), "MjAzMDQ=");
+    assertEquals(rows.get(5).get(0).asText(), "MjA0Mzc=");
+    assertEquals(rows.get(6).get(0).asText(), "MjA0MzY=");
+    assertEquals(rows.get(7).get(0).asText(), "MjA0MDk=");
+    assertEquals(rows.get(8).get(0).asText(), "MTkzOTM=");
+    assertEquals(rows.get(9).get(0).asText(), "MTk5Nzc=");
   }
 
   @Test
diff --git 
a/pinot-query-planner/src/main/java/org/apache/pinot/query/validate/Validator.java
 
b/pinot-query-planner/src/main/java/org/apache/pinot/query/validate/Validator.java
index 201c645328..14a0797957 100644
--- 
a/pinot-query-planner/src/main/java/org/apache/pinot/query/validate/Validator.java
+++ 
b/pinot-query-planner/src/main/java/org/apache/pinot/query/validate/Validator.java
@@ -40,7 +40,8 @@ public class Validator extends SqlValidatorImpl {
 
   public Validator(SqlOperatorTable opTab, SqlValidatorCatalogReader 
catalogReader, RelDataTypeFactory typeFactory) {
     // TODO: support BABEL validator. Currently parser conformance is set to 
use BABEL.
-    super(opTab, catalogReader, typeFactory, 
Config.DEFAULT.withSqlConformance(SqlConformanceEnum.LENIENT));
+    super(opTab, catalogReader, typeFactory,
+        
Config.DEFAULT.withSqlConformance(SqlConformanceEnum.LENIENT).withIdentifierExpansion(true));
   }
 
   /**
diff --git 
a/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryCompilationTest.java
 
b/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryCompilationTest.java
index a1f21b533d..f04167e1b0 100644
--- 
a/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryCompilationTest.java
+++ 
b/pinot-query-planner/src/test/java/org/apache/pinot/query/QueryCompilationTest.java
@@ -407,11 +407,6 @@ public class QueryCompilationTest extends 
QueryEnvironmentTestBase {
         new Object[]{"SELECT a.col1 FROM a WHERE a.col1 IN ()", "Encountered 
\"\" at line"},
         // AT TIME ZONE should fail
         new Object[]{"SELECT a.col1 AT TIME ZONE 'PST' FROM a", "No match 
found for function signature AT_TIME_ZONE"},
-        // CASE WHEN with non-consolidated result type at compile time.
-        new Object[]{
-            "SELECT SUM(CASE WHEN col3 > 10 THEN 1 WHEN col3 > 20 THEN 2 WHEN 
col3 > 30 THEN 3 "
-                + "WHEN col3 > 40 THEN 4 WHEN col3 > 50 THEN '5' ELSE 0 END) 
FROM a", "while converting CASE WHEN"
-        },
     };
   }
 
diff --git 
a/pinot-query-planner/src/test/resources/queries/BasicQueryPlans.json 
b/pinot-query-planner/src/test/resources/queries/BasicQueryPlans.json
index ec7b105cb9..562fbfb364 100644
--- a/pinot-query-planner/src/test/resources/queries/BasicQueryPlans.json
+++ b/pinot-query-planner/src/test/resources/queries/BasicQueryPlans.json
@@ -57,6 +57,20 @@
           "\n        LogicalTableScan(table=[[a]])",
           "\n"
         ]
+      },
+      {
+        "description": "",
+        "sql": "EXPLAIN PLAN FOR SELECT SUM(CASE WHEN col3 > 10 THEN 1 WHEN 
col3 > 20 THEN 2 WHEN col3 > 30 THEN 3 WHEN col3 > 40 THEN 4 WHEN col3 > 50 
THEN '5' ELSE 0 END) FROM a",
+        "output": [
+          "Execution Plan",
+          "\nLogicalProject(EXPR$0=[CASE(=($1, 0), null:DECIMAL(1000, 500), 
$0)])",
+          "\n  LogicalAggregate(group=[{}], agg#0=[$SUM0($0)], 
agg#1=[COUNT($1)])",
+          "\n    PinotLogicalExchange(distribution=[hash])",
+          "\n      LogicalAggregate(group=[{}], agg#0=[$SUM0($0)], 
agg#1=[COUNT()])",
+          "\n        LogicalProject($f0=[CAST(CASE(>($2, 10), '1':VARCHAR, 
>($2, 20), '2':VARCHAR, >($2, 30), '3':VARCHAR, >($2, 40), '4':VARCHAR, >($2, 
50), '5':VARCHAR, '0':VARCHAR)):DECIMAL(1000, 500) NOT NULL])",
+          "\n          LogicalTableScan(table=[[a]])",
+          "\n"
+        ]
       }
     ]
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to