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]