This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 4551b624619 [Bug](materialized-view) add limitation for duplicate expr
on materialized view (#27523) (#27562)
4551b624619 is described below
commit 4551b6246192d8cc602639b322283650d93a899a
Author: Pxl <[email protected]>
AuthorDate: Fri Nov 24 21:20:27 2023 +0800
[Bug](materialized-view) add limitation for duplicate expr on materialized
view (#27523) (#27562)
---
.../doris/analysis/CreateMaterializedViewStmt.java | 24 ++++++++++++----------
.../test_mv_useless/agg_invalid/agg_invalid.groovy | 10 +++++++++
2 files changed, 23 insertions(+), 11 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
index eafc24c4fda..7c28a417296 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java
@@ -39,6 +39,7 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -46,6 +47,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.Set;
/**
* Materialized view is performed to materialize the results of query.
@@ -339,19 +341,19 @@ public class CreateMaterializedViewStmt extends DdlStmt {
}
}
- for (Expr groupExpr : groupingExprs) {
- boolean match = false;
- String rhs =
selectStmt.getExprFromAliasSMap(groupExpr).toSqlWithoutTbl();
- for (Expr expr : selectExprs) {
- String lhs =
selectStmt.getExprFromAliasSMap(expr).toSqlWithoutTbl();
- if (lhs.equalsIgnoreCase(rhs)) {
- match = true;
- break;
- }
+ Set<String> selectExprNames =
Sets.newTreeSet(String.CASE_INSENSITIVE_ORDER);
+ for (Expr expr : selectExprs) {
+ String selectExprName =
selectStmt.getExprFromAliasSMap(expr).toSqlWithoutTbl();
+ if (selectExprNames.contains(selectExprName)) {
+ throw new AnalysisException("The select expr " +
selectExprName + " is duplicated.");
}
+ selectExprNames.add(selectExprName);
+ }
- if (!match) {
- throw new AnalysisException("The grouping expr " + rhs + " not
in select list.");
+ for (Expr expr : groupingExprs) {
+ String groupExprName =
selectStmt.getExprFromAliasSMap(expr).toSqlWithoutTbl();
+ if (!selectExprNames.contains(groupExprName)) {
+ throw new AnalysisException("The grouping expr " +
groupExprName + " not in select list.");
}
}
}
diff --git
a/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy
b/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy
index bdf7a567beb..9bf940e2e4f 100644
---
a/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy
+++
b/regression-test/suites/mv_p0/test_mv_useless/agg_invalid/agg_invalid.groovy
@@ -41,4 +41,14 @@ suite ("agg_invalid") {
sql "CREATE MATERIALIZED VIEW mv_4 AS SELECT p1, SUM(abs(v1)) FROM t1
GROUP BY p1;"
exception "errCode = 2,"
}
+
+ test {
+ sql "CREATE MATERIALIZED VIEW mv_5 AS SELECT p1, p2, p1, SUM(v1) FROM
t1 GROUP BY p1,p2,p1;"
+ exception "errCode = 2,"
+ }
+
+ test {
+ sql "CREATE MATERIALIZED VIEW mv_5 AS SELECT p1, p2, SUM(v1), SUM(v1)
FROM t1 GROUP BY p1,p2;"
+ exception "errCode = 2,"
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]