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

panxiaolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 49b1d372ab5 [Chore](materialized-view) forbid create mv have 
calculations included outside aggregate functions (#31336)
49b1d372ab5 is described below

commit 49b1d372ab5e2983b40359982bfc4c037c2fa2c2
Author: Pxl <pxl...@qq.com>
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: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to