This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit fcea2b964e06d2f5b8bff39212df96a97e1137b0 Author: Pxl <[email protected]> AuthorDate: Mon Feb 26 11:23:04 2024 +0800 [Chore](materialized-view) forbid create mv have calculations included outside aggregate functions (#31336) forbid create mv have calculations included outside aggregate functions --- .../apache/doris/analysis/CreateMaterializedViewStmt.java | 5 +++++ regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy | 15 +++++++++++++++ 2 files changed, 20 insertions(+) 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 9c120d70048..b9840438ec0 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 @@ -288,6 +288,11 @@ public class CreateMaterializedViewStmt extends DdlStmt { // build mv column item mvColumnItemList.add(buildMVColumnItem(analyzer, functionCallExpr)); } else { + if (!isReplay && selectListItemExpr.containsAggregate()) { + throw new AnalysisException( + "The materialized view's expr calculations cannot be included outside aggregate functions" + + ", expr: " + selectListItemExpr.toSql()); + } List<SlotRef> slots = new ArrayList<>(); selectListItemExpr.collect(SlotRef.class, slots); if (!isReplay && slots.size() == 0) { diff --git a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy index 8d33b107da2..bc206b61990 100644 --- a/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy +++ b/regression-test/suites/mv_p0/k1s2m3/k1s2m3.groovy @@ -115,4 +115,19 @@ suite ("k1s2m3") { qt_select_mv "select count(k2) from d_table where k3 = 1;" qt_select_star "select * from d_table order by k1;" + + test { + sql "create materialized view k1s2m3 as select K1,sum(k2*k3)+1 from d_table group by k1;" + exception "cannot be included outside aggregate" + } + + test { + sql "create materialized view k1s2m3 as select K1,abs(sum(k2*k3)+1) from d_table group by k1;" + exception "cannot be included outside aggregate" + } + + test { + sql "create materialized view k1s2m3 as select K1,sum(abs(sum(k2*k3)+1)) from d_table group by k1;" + exception "aggregate function cannot contain aggregate parameters" + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
