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

adonisling 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 55bf38dbab [feature-wip](MTMV) Use SSB ddl to test (#18150)
55bf38dbab is described below

commit 55bf38dbab46fae5a910ca83e5749872d890c01a
Author: huangzhaowei <[email protected]>
AuthorDate: Thu Mar 30 00:11:38 2023 +0800

    [feature-wip](MTMV) Use SSB ddl to test (#18150)
    
    Add regression tests for MTMV.
---
 .../CreateMultiTableMaterializedViewStmt.java      | 70 +++++++++++-----------
 .../java/org/apache/doris/analysis/QueryStmt.java  |  4 ++
 .../main/java/org/apache/doris/catalog/Column.java |  6 +-
 .../suites/mtmv_p0/ssb/ddl/customer_create.sql     | 15 +++++
 .../suites/mtmv_p0/ssb/ddl/customer_delete.sql     |  1 +
 .../suites/mtmv_p0/ssb/ddl/date_create.sql         | 24 ++++++++
 .../suites/mtmv_p0/ssb/ddl/date_delete.sql         |  1 +
 .../suites/mtmv_p0/ssb/ddl/lineorder_create.sql    | 24 ++++++++
 .../suites/mtmv_p0/ssb/ddl/lineorder_delete.sql    |  1 +
 .../mtmv_p0/ssb/ddl/lineorder_flat_create.sql      | 45 ++++++++++++++
 .../mtmv_p0/ssb/ddl/lineorder_flat_delete.sql      |  1 +
 .../suites/mtmv_p0/ssb/ddl/part_create.sql         | 16 +++++
 .../suites/mtmv_p0/ssb/ddl/part_delete.sql         |  1 +
 .../suites/mtmv_p0/ssb/ddl/ssb_flat_create.sql     | 52 ++++++++++++++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q11_create.sql      | 12 ++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q12_create.sql      | 12 ++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q13_create.sql      | 14 +++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q21_create.sql      | 15 +++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q22_create.sql      | 15 +++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q23_create.sql      | 15 +++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q31_create.sql      | 21 +++++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q32_create.sql      | 21 +++++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q33_create.sql      | 27 +++++++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q34_create.sql      | 26 ++++++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q41_create.sql      | 23 +++++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q42_create.sql      | 28 +++++++++
 .../suites/mtmv_p0/ssb/ddl/ssb_q43_create.sql      | 24 ++++++++
 .../suites/mtmv_p0/ssb/ddl/supplier_create.sql     | 14 +++++
 .../suites/mtmv_p0/ssb/ddl/supplier_delete.sql     |  1 +
 .../suites/mtmv_p0/ssb/test_mtmv_ssb_ddl.groovy    | 35 +++++++++++
 30 files changed, 529 insertions(+), 35 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMultiTableMaterializedViewStmt.java
 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMultiTableMaterializedViewStmt.java
index 5e7cbe9adb..4b1cea4e42 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMultiTableMaterializedViewStmt.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMultiTableMaterializedViewStmt.java
@@ -24,7 +24,6 @@ import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Env;
 import org.apache.doris.catalog.Table;
 import org.apache.doris.common.AnalysisException;
-import org.apache.doris.common.DdlException;
 import org.apache.doris.common.ErrorCode;
 import org.apache.doris.common.ErrorReport;
 import org.apache.doris.common.UserException;
@@ -63,6 +62,8 @@ public class CreateMultiTableMaterializedViewStmt extends 
CreateTableStmt {
     @Override
     public void analyze(Analyzer analyzer) throws UserException {
         refreshInfo.analyze(analyzer);
+        queryStmt.setNeedToSql(true);
+        queryStmt.setToSQLWithHint(true);
         queryStmt.analyze(analyzer);
         if (queryStmt instanceof SelectStmt) {
             analyzeSelectClause((SelectStmt) queryStmt);
@@ -74,7 +75,7 @@ public class CreateMultiTableMaterializedViewStmt extends 
CreateTableStmt {
         super.analyze(analyzer);
     }
 
-    private void analyzeSelectClause(SelectStmt selectStmt) throws 
AnalysisException, DdlException {
+    private void analyzeSelectClause(SelectStmt selectStmt) throws 
AnalysisException {
         for (TableRef tableRef : selectStmt.getTableRefs()) {
             Table table = null;
             if (tableRef instanceof BaseTableRef) {
@@ -98,9 +99,8 @@ public class CreateMultiTableMaterializedViewStmt extends 
CreateTableStmt {
         columnDefs = generateColumnDefinitions(selectStmt.getSelectList());
     }
 
-    private List<ColumnDef> generateColumnDefinitions(SelectList selectList) 
throws AnalysisException, DdlException {
-        List<MVColumnItem> mvColumnItems = generateMVColumnItems(selectList);
-        List<Column> schema = generateSchema(mvColumnItems);
+    private List<ColumnDef> generateColumnDefinitions(SelectList selectList) 
throws AnalysisException {
+        List<Column> schema = generateSchema(selectList);
         return schema.stream()
                 .map(column -> new ColumnDef(
                         column.getName(),
@@ -113,45 +113,47 @@ public class CreateMultiTableMaterializedViewStmt extends 
CreateTableStmt {
                 ).collect(Collectors.toList());
     }
 
-    private List<Column> generateSchema(List<MVColumnItem> mvColumnItems) 
throws DdlException {
-        List<Column> columns = Lists.newArrayList();
-        for (MVColumnItem mvColumnItem : mvColumnItems) {
-            Table table = tables.get(mvColumnItem.getBaseTableName());
-            columns.add(mvColumnItem.toMVColumn(table));
-        }
-        return columns;
-    }
-
-    private List<MVColumnItem> generateMVColumnItems(SelectList selectList)
-            throws AnalysisException {
-        Map<String, MVColumnItem> uniqueMVColumnItems = 
Maps.newLinkedHashMap();
+    private List<Column> generateSchema(SelectList selectList) throws 
AnalysisException {
+        Map<String, Column> uniqueMVColumnItems = Maps.newLinkedHashMap();
         for (SelectListItem item : selectList.getItems()) {
-            MVColumnItem mvColumnItem = generateMVColumnItem(item);
-            if (uniqueMVColumnItems.put(mvColumnItem.getName(), mvColumnItem) 
!= null) {
-                
ErrorReport.reportAnalysisException(ErrorCode.ERR_DUP_FIELDNAME, 
mvColumnItem.getName());
+            Column column  = generateMTMVColumn(item);
+            if (uniqueMVColumnItems.put(column.getName(), column) != null) {
+                
ErrorReport.reportAnalysisException(ErrorCode.ERR_DUP_FIELDNAME, 
column.getName());
             }
         }
-        return Lists.newArrayList(uniqueMVColumnItems.values().iterator());
+
+        return Lists.newArrayList(uniqueMVColumnItems.values());
     }
 
-    private MVColumnItem generateMVColumnItem(SelectListItem item) {
+    private Column generateMTMVColumn(SelectListItem item) throws 
AnalysisException {
         Expr itemExpr = item.getExpr();
-        MVColumnItem mvColumnItem = null;
+        String alias = item.getAlias();
+        Column mtmvColumn = null;
         if (itemExpr instanceof SlotRef) {
             SlotRef slotRef = (SlotRef) itemExpr;
-            String alias = item.getAlias();
             String name = (alias != null) ? alias.toLowerCase() : 
slotRef.getColumnName().toLowerCase();
-            mvColumnItem = new MVColumnItem(
-                    name,
-                    slotRef.getType(),
-                    slotRef.getColumn().getAggregationType(),
-                    slotRef.getColumn().isAggregationTypeImplicit(),
-                    null,
-                    slotRef.getColumnName(),
-                    slotRef.getDesc().getParent().getTable().getName()
-            );
+            mtmvColumn = new Column(name, slotRef.getType(), true);
+        } else if (itemExpr instanceof FunctionCallExpr && ((FunctionCallExpr) 
itemExpr).isAggregateFunction()) {
+            FunctionCallExpr functionCallExpr = (FunctionCallExpr) itemExpr;
+            String functionName = functionCallExpr.getFnName().getFunction();
+            MVColumnPattern mvColumnPattern = 
CreateMaterializedViewStmt.FN_NAME_TO_PATTERN
+                    .get(functionName.toLowerCase());
+            if (mvColumnPattern == null) {
+                throw new AnalysisException(
+                        "Materialized view does not support this function:" + 
functionCallExpr.toSqlImpl());
+            }
+            if (!mvColumnPattern.match(functionCallExpr)) {
+                throw new AnalysisException("The function " + functionName + " 
must match pattern:" + mvColumnPattern);
+            }
+            String name;
+            if (alias != null) {
+                name = alias.toLowerCase();
+                mtmvColumn = new Column(name, functionCallExpr.getType(), 
true);
+            } else {
+                throw new AnalysisException("Function expr: " + functionName + 
" must have a alias name for MTMV.");
+            }
         }
-        return mvColumnItem;
+        return mtmvColumn;
     }
 
     @Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java
index 5ecb2a6838..8fc52fbe33 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/QueryStmt.java
@@ -841,4 +841,8 @@ public abstract class QueryStmt extends StatementBase 
implements Queriable {
         toSQLWithHint = true;
         return toSql();
     }
+
+    public void setToSQLWithHint(boolean enableSqlSqlWithHint) {
+        this.toSQLWithHint = enableSqlSqlWithHint;
+    }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
index 9b0a6ec445..790d16e7f0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java
@@ -141,7 +141,11 @@ public class Column implements Writable, 
GsonPostProcessable {
     }
 
     public Column(String name, PrimitiveType dataType, boolean isAllowNull) {
-        this(name, ScalarType.createType(dataType), false, null, isAllowNull, 
null, "");
+        this(name, ScalarType.createType(dataType), isAllowNull);
+    }
+
+    public Column(String name, Type type, boolean isAllowNull) {
+        this(name, type, false, null, isAllowNull, null, "");
     }
 
     public Column(String name, Type type) {
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/customer_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/customer_create.sql
new file mode 100644
index 0000000000..d13101b70e
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/customer_create.sql
@@ -0,0 +1,15 @@
+CREATE TABLE IF NOT EXISTS `customer` (
+  `c_custkey` int(11) NOT NULL COMMENT "",
+  `c_name` varchar(26) NOT NULL COMMENT "",
+  `c_address` varchar(41) NOT NULL COMMENT "",
+  `c_city` varchar(11) NOT NULL COMMENT "",
+  `c_nation` varchar(16) NOT NULL COMMENT "",
+  `c_region` varchar(13) NOT NULL COMMENT "",
+  `c_phone` varchar(16) NOT NULL COMMENT "",
+  `c_mktsegment` varchar(11) NOT NULL COMMENT ""
+)
+UNIQUE KEY (`c_custkey`)
+DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 1
+PROPERTIES (
+"replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/customer_delete.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/customer_delete.sql
new file mode 100644
index 0000000000..fe22a226fe
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/customer_delete.sql
@@ -0,0 +1 @@
+truncate table customer;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/date_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/date_create.sql
new file mode 100644
index 0000000000..390905ebea
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/date_create.sql
@@ -0,0 +1,24 @@
+CREATE TABLE IF NOT EXISTS `dates` (
+  `d_datekey` int(11) NOT NULL COMMENT "",
+  `d_date` varchar(20) NOT NULL COMMENT "",
+  `d_dayofweek` varchar(10) NOT NULL COMMENT "",
+  `d_month` varchar(11) NOT NULL COMMENT "",
+  `d_year` int(11) NOT NULL COMMENT "",
+  `d_yearmonthnum` int(11) NOT NULL COMMENT "",
+  `d_yearmonth` varchar(9) NOT NULL COMMENT "",
+  `d_daynuminweek` int(11) NOT NULL COMMENT "",
+  `d_daynuminmonth` int(11) NOT NULL COMMENT "",
+  `d_daynuminyear` int(11) NOT NULL COMMENT "",
+  `d_monthnuminyear` int(11) NOT NULL COMMENT "",
+  `d_weeknuminyear` int(11) NOT NULL COMMENT "",
+  `d_sellingseason` varchar(14) NOT NULL COMMENT "",
+  `d_lastdayinweekfl` int(11) NOT NULL COMMENT "",
+  `d_lastdayinmonthfl` int(11) NOT NULL COMMENT "",
+  `d_holidayfl` int(11) NOT NULL COMMENT "",
+  `d_weekdayfl` int(11) NOT NULL COMMENT ""
+)
+UNIQUE KEY (`d_datekey`)
+DISTRIBUTED BY HASH(`d_datekey`) BUCKETS 1
+PROPERTIES (
+"replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/date_delete.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/date_delete.sql
new file mode 100644
index 0000000000..3841d4617a
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/date_delete.sql
@@ -0,0 +1 @@
+truncate table `dates`;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_create.sql
new file mode 100644
index 0000000000..c066ea8a0d
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_create.sql
@@ -0,0 +1,24 @@
+CREATE TABLE IF NOT EXISTS `lineorder` (
+  `lo_orderkey` bigint(20) NOT NULL COMMENT "",
+  `lo_linenumber` bigint(20) NOT NULL COMMENT "",
+  `lo_custkey` int(11) NOT NULL COMMENT "",
+  `lo_partkey` int(11) NOT NULL COMMENT "",
+  `lo_suppkey` int(11) NOT NULL COMMENT "",
+  `lo_orderdate` int(11) NOT NULL COMMENT "",
+  `lo_orderpriority` varchar(16) NOT NULL COMMENT "",
+  `lo_shippriority` int(11) NOT NULL COMMENT "",
+  `lo_quantity` bigint(20) NOT NULL COMMENT "",
+  `lo_extendedprice` bigint(20) NOT NULL COMMENT "",
+  `lo_ordtotalprice` bigint(20) NOT NULL COMMENT "",
+  `lo_discount` bigint(20) NOT NULL COMMENT "",
+  `lo_revenue` bigint(20) NOT NULL COMMENT "",
+  `lo_supplycost` bigint(20) NOT NULL COMMENT "",
+  `lo_tax` bigint(20) NOT NULL COMMENT "",
+  `lo_commitdate` bigint(20) NOT NULL COMMENT "",
+  `lo_shipmode` varchar(11) NOT NULL COMMENT ""
+)
+UNIQUE KEY (`lo_orderkey`, `lo_linenumber`)
+DISTRIBUTED BY HASH(`lo_orderkey`) BUCKETS 1
+PROPERTIES (
+"replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_delete.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_delete.sql
new file mode 100644
index 0000000000..329e040060
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_delete.sql
@@ -0,0 +1 @@
+truncate table lineorder;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_flat_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_flat_create.sql
new file mode 100644
index 0000000000..35faee0786
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_flat_create.sql
@@ -0,0 +1,45 @@
+CREATE TABLE IF NOT EXISTS `lineorder_flat` (
+  `LO_ORDERDATE` date NOT NULL COMMENT "",
+  `LO_ORDERKEY` int(11) NOT NULL COMMENT "",
+  `LO_LINENUMBER` tinyint(4) NOT NULL COMMENT "",
+  `LO_CUSTKEY` int(11) NOT NULL COMMENT "",
+  `LO_PARTKEY` int(11) NOT NULL COMMENT "",
+  `LO_SUPPKEY` int(11) NOT NULL COMMENT "",
+  `LO_ORDERPRIORITY` varchar(100) NOT NULL COMMENT "",
+  `LO_SHIPPRIORITY` tinyint(4) NOT NULL COMMENT "",
+  `LO_QUANTITY` tinyint(4) NOT NULL COMMENT "",
+  `LO_EXTENDEDPRICE` int(11) NOT NULL COMMENT "",
+  `LO_ORDTOTALPRICE` int(11) NOT NULL COMMENT "",
+  `LO_DISCOUNT` tinyint(4) NOT NULL COMMENT "",
+  `LO_REVENUE` int(11) NOT NULL COMMENT "",
+  `LO_SUPPLYCOST` int(11) NOT NULL COMMENT "",
+  `LO_TAX` tinyint(4) NOT NULL COMMENT "",
+  `LO_COMMITDATE` date NOT NULL COMMENT "",
+  `LO_SHIPMODE` varchar(100) NOT NULL COMMENT "",
+  `C_NAME` varchar(100) NOT NULL COMMENT "",
+  `C_ADDRESS` varchar(100) NOT NULL COMMENT "",
+  `C_CITY` varchar(100) NOT NULL COMMENT "",
+  `C_NATION` varchar(100) NOT NULL COMMENT "",
+  `C_REGION` varchar(100) NOT NULL COMMENT "",
+  `C_PHONE` varchar(100) NOT NULL COMMENT "",
+  `C_MKTSEGMENT` varchar(100) NOT NULL COMMENT "",
+  `S_NAME` varchar(100) NOT NULL COMMENT "",
+  `S_ADDRESS` varchar(100) NOT NULL COMMENT "",
+  `S_CITY` varchar(100) NOT NULL COMMENT "",
+  `S_NATION` varchar(100) NOT NULL COMMENT "",
+  `S_REGION` varchar(100) NOT NULL COMMENT "",
+  `S_PHONE` varchar(100) NOT NULL COMMENT "",
+  `P_NAME` varchar(100) NOT NULL COMMENT "",
+  `P_MFGR` varchar(100) NOT NULL COMMENT "",
+  `P_CATEGORY` varchar(100) NOT NULL COMMENT "",
+  `P_BRAND` varchar(100) NOT NULL COMMENT "",
+  `P_COLOR` varchar(100) NOT NULL COMMENT "",
+  `P_TYPE` varchar(100) NOT NULL COMMENT "",
+  `P_SIZE` tinyint(4) NOT NULL COMMENT "",
+  `P_CONTAINER` varchar(100) NOT NULL COMMENT ""
+) ENGINE=OLAP
+UNIQUE KEY(`LO_ORDERDATE`, `LO_ORDERKEY`, `LO_LINENUMBER`)
+DISTRIBUTED BY HASH(`LO_ORDERKEY`) BUCKETS 1
+PROPERTIES (
+"replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_flat_delete.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_flat_delete.sql
new file mode 100644
index 0000000000..13f6c32bb6
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/lineorder_flat_delete.sql
@@ -0,0 +1 @@
+truncate table lineorder_flat;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/part_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/part_create.sql
new file mode 100644
index 0000000000..2405026a3c
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/part_create.sql
@@ -0,0 +1,16 @@
+CREATE TABLE IF NOT EXISTS `part` (
+  `p_partkey` int(11) NOT NULL COMMENT "",
+  `p_name` varchar(23) NOT NULL COMMENT "",
+  `p_mfgr` varchar(7) NOT NULL COMMENT "",
+  `p_category` varchar(8) NOT NULL COMMENT "",
+  `p_brand` varchar(10) NOT NULL COMMENT "",
+  `p_color` varchar(12) NOT NULL COMMENT "",
+  `p_type` varchar(26) NOT NULL COMMENT "",
+  `p_size` int(11) NOT NULL COMMENT "",
+  `p_container` varchar(11) NOT NULL COMMENT ""
+)
+UNIQUE KEY (`p_partkey`)
+DISTRIBUTED BY HASH(`p_partkey`) BUCKETS 1
+PROPERTIES (
+"replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/part_delete.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/part_delete.sql
new file mode 100644
index 0000000000..02c6abd253
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/part_delete.sql
@@ -0,0 +1 @@
+truncate table `part`;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_flat_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_flat_create.sql
new file mode 100644
index 0000000000..e5cbc1a556
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_flat_create.sql
@@ -0,0 +1,52 @@
+CREATE MATERIALIZED VIEW ssb_flat
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(lo_orderkey) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT
+    LO_ORDERDATE,
+    LO_ORDERKEY,
+    LO_LINENUMBER,
+    LO_CUSTKEY,
+    LO_PARTKEY,
+    LO_SUPPKEY,
+    LO_ORDERPRIORITY,
+    LO_SHIPPRIORITY,
+    LO_QUANTITY,
+    LO_EXTENDEDPRICE,
+    LO_ORDTOTALPRICE,
+    LO_DISCOUNT,
+    LO_REVENUE,
+    LO_SUPPLYCOST,
+    LO_TAX,
+    LO_COMMITDATE,
+    LO_SHIPMODE,
+    C_NAME,
+    C_ADDRESS,
+    C_CITY,
+    C_NATION,
+    C_REGION,
+    C_PHONE,
+    C_MKTSEGMENT,
+    S_NAME,
+    S_ADDRESS,
+    S_CITY,
+    S_NATION,
+    S_REGION,
+    S_PHONE,
+    P_NAME,
+    P_MFGR,
+    P_CATEGORY,
+    P_BRAND,
+    P_COLOR,
+    P_TYPE,
+    P_SIZE,
+    P_CONTAINER
+FROM
+lineorder as l
+INNER JOIN customer c
+ON (c.c_custkey = l.lo_custkey)
+INNER JOIN supplier s
+ON (s.s_suppkey = l.lo_suppkey)
+INNER JOIN part p
+ON (p.p_partkey = l.lo_partkey);
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q11_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q11_create.sql
new file mode 100644
index 0000000000..fdf1a1462f
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q11_create.sql
@@ -0,0 +1,12 @@
+CREATE MATERIALIZED VIEW ssb_q11
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(REVENUE) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE
+FROM lineorder, dates
+WHERE
+    lo_orderdate = d_datekey
+    AND d_year = 1993
+    AND lo_discount BETWEEN 1 AND 3
+    AND lo_quantity < 25;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q12_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q12_create.sql
new file mode 100644
index 0000000000..fcf1fbd931
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q12_create.sql
@@ -0,0 +1,12 @@
+CREATE MATERIALIZED VIEW ssb_q12
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(REVENUE) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT SUM(lo_extendedprice * lo_discount) AS REVENUE
+FROM lineorder, dates
+WHERE
+    lo_orderdate = d_datekey
+    AND d_year = 1993
+    AND lo_discount BETWEEN 1 AND 3
+    AND lo_quantity < 25;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q13_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q13_create.sql
new file mode 100644
index 0000000000..2da36bc129
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q13_create.sql
@@ -0,0 +1,14 @@
+CREATE MATERIALIZED VIEW ssb_q13
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(REVENUE) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT
+    SUM(lo_extendedprice * lo_discount) AS REVENUE
+FROM lineorder, dates
+WHERE
+    lo_orderdate = d_datekey
+    AND d_weeknuminyear = 6
+    AND d_year = 1994
+    AND lo_discount BETWEEN 5 AND 7
+    AND lo_quantity BETWEEN 26 AND 35;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q21_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q21_create.sql
new file mode 100644
index 0000000000..9f0ffc7e10
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q21_create.sql
@@ -0,0 +1,15 @@
+CREATE MATERIALIZED VIEW ssb_q21
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(p_brand) BUCKETS 16
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT SUM(lo_revenue) as revenue, d_year, p_brand
+FROM lineorder, dates, part, supplier
+WHERE
+    lo_orderdate = d_datekey
+    AND lo_partkey = p_partkey
+    AND lo_suppkey = s_suppkey
+    AND p_category = 'MFGR#12'
+    AND s_region = 'AMERICA'
+GROUP BY d_year, p_brand
+ORDER BY p_brand;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q22_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q22_create.sql
new file mode 100644
index 0000000000..481586e1f4
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q22_create.sql
@@ -0,0 +1,15 @@
+CREATE MATERIALIZED VIEW ssb_q22
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(p_brand) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT SUM(lo_revenue) as lo_revenue, d_year, p_brand
+FROM lineorder, dates, part, supplier
+WHERE
+    lo_orderdate = d_datekey
+    AND lo_partkey = p_partkey
+    AND lo_suppkey = s_suppkey
+    AND p_brand BETWEEN 'MFGR#2221' AND 'MFGR#2228'
+    AND s_region = 'ASIA'
+GROUP BY d_year, p_brand
+ORDER BY d_year, p_brand;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q23_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q23_create.sql
new file mode 100644
index 0000000000..dbaf3bb234
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q23_create.sql
@@ -0,0 +1,15 @@
+CREATE MATERIALIZED VIEW ssb_q23
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(p_brand) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT SUM(lo_revenue) as revenue, d_year, p_brand
+FROM lineorder, dates, part, supplier
+WHERE
+    lo_orderdate = d_datekey
+    AND lo_partkey = p_partkey
+    AND lo_suppkey = s_suppkey
+    AND p_brand = 'MFGR#2239'
+    AND s_region = 'EUROPE'
+GROUP BY d_year, p_brand
+ORDER BY d_year, p_brand;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q31_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q31_create.sql
new file mode 100644
index 0000000000..e757cca418
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q31_create.sql
@@ -0,0 +1,21 @@
+CREATE MATERIALIZED VIEW ssb_q31
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(c_nation, s_nation) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT
+    c_nation,
+    s_nation,
+    d_year,
+    SUM(lo_revenue) AS REVENUE
+FROM customer, lineorder, supplier, dates
+WHERE
+    lo_custkey = c_custkey
+    AND lo_suppkey = s_suppkey
+    AND lo_orderdate = d_datekey
+    AND c_region = 'ASIA'
+    AND s_region = 'ASIA'
+    AND d_year >= 1992
+    AND d_year <= 1997
+GROUP BY c_nation, s_nation, d_year
+ORDER BY d_year ASC, REVENUE DESC;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q32_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q32_create.sql
new file mode 100644
index 0000000000..fdbcd11d05
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q32_create.sql
@@ -0,0 +1,21 @@
+CREATE MATERIALIZED VIEW ssb_q32
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(c_city, s_city) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT
+    c_city,
+    s_city,
+    d_year,
+    SUM(lo_revenue) AS REVENUE
+FROM customer, lineorder, supplier, dates
+WHERE
+    lo_custkey = c_custkey
+    AND lo_suppkey = s_suppkey
+    AND lo_orderdate = d_datekey
+    AND c_nation = 'UNITED STATES'
+    AND s_nation = 'UNITED STATES'
+    AND d_year >= 1992
+    AND d_year <= 1997
+GROUP BY c_city, s_city, d_year
+ORDER BY d_year ASC, REVENUE DESC;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q33_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q33_create.sql
new file mode 100644
index 0000000000..a23ef06708
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q33_create.sql
@@ -0,0 +1,27 @@
+CREATE MATERIALIZED VIEW ssb_q33
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(c_city, s_city) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT
+    c_city,
+    s_city,
+    d_year,
+    SUM(lo_revenue) AS REVENUE
+FROM customer, lineorder, supplier, dates
+WHERE
+    lo_custkey = c_custkey
+    AND lo_suppkey = s_suppkey
+    AND lo_orderdate = d_datekey
+    AND (
+        c_city = 'UNITED KI1'
+        OR c_city = 'UNITED KI5'
+    )
+    AND (
+        s_city = 'UNITED KI1'
+        OR s_city = 'UNITED KI5'
+    )
+    AND d_year >= 1992
+    AND d_year <= 1997
+GROUP BY c_city, s_city, d_year
+ORDER BY d_year ASC, REVENUE DESC;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q34_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q34_create.sql
new file mode 100644
index 0000000000..452fa67a79
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q34_create.sql
@@ -0,0 +1,26 @@
+CREATE MATERIALIZED VIEW ssb_q34
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(c_city, s_city) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT
+    c_city,
+    s_city,
+    d_year,
+    SUM(lo_revenue) AS REVENUE
+FROM customer, lineorder, supplier, dates
+WHERE
+    lo_custkey = c_custkey
+    AND lo_suppkey = s_suppkey
+    AND lo_orderdate = d_datekey
+    AND (
+        c_city = 'UNITED KI1'
+        OR c_city = 'UNITED KI5'
+    )
+    AND (
+        s_city = 'UNITED KI1'
+        OR s_city = 'UNITED KI5'
+    )
+    AND d_yearmonth = 'Dec1997'
+GROUP BY c_city, s_city, d_year
+ORDER BY d_year ASC, REVENUE DESC;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q41_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q41_create.sql
new file mode 100644
index 0000000000..244b9f94cb
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q41_create.sql
@@ -0,0 +1,23 @@
+CREATE MATERIALIZED VIEW ssb_q41
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(c_nation) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=4, 
enable_vectorized_engine=true, batch_size=4096, 
enable_cost_based_join_reorder=true, enable_projection=true) */
+    d_year,
+    c_nation,
+    SUM(lo_revenue - lo_supplycost) AS PROFIT
+FROM dates, customer, supplier, part, lineorder
+WHERE
+    lo_custkey = c_custkey
+    AND lo_suppkey = s_suppkey
+    AND lo_partkey = p_partkey
+    AND lo_orderdate = d_datekey
+    AND c_region = 'AMERICA'
+    AND s_region = 'AMERICA'
+    AND (
+        p_mfgr = 'MFGR#1'
+        OR p_mfgr = 'MFGR#2'
+    )
+GROUP BY d_year, c_nation
+ORDER BY d_year, c_nation;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q42_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q42_create.sql
new file mode 100644
index 0000000000..044dea2086
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q42_create.sql
@@ -0,0 +1,28 @@
+CREATE MATERIALIZED VIEW ssb_q42
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(s_nation, p_category) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=2, 
enable_vectorized_engine=true, batch_size=4096, 
enable_cost_based_join_reorder=true, enable_projection=true) */  
+    d_year,
+    s_nation,
+    p_category,
+    SUM(lo_revenue - lo_supplycost) AS PROFIT
+FROM dates, customer, supplier, part, lineorder
+WHERE
+    lo_custkey = c_custkey
+    AND lo_suppkey = s_suppkey
+    AND lo_partkey = p_partkey
+    AND lo_orderdate = d_datekey
+    AND c_region = 'AMERICA'
+    AND s_region = 'AMERICA'
+    AND (
+        d_year = 1997
+        OR d_year = 1998
+    )
+    AND (
+        p_mfgr = 'MFGR#1'
+        OR p_mfgr = 'MFGR#2'
+    )
+GROUP BY d_year, s_nation, p_category
+ORDER BY d_year, s_nation, p_category;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q43_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q43_create.sql
new file mode 100644
index 0000000000..0d60a20c37
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/ssb_q43_create.sql
@@ -0,0 +1,24 @@
+CREATE MATERIALIZED VIEW ssb_q43
+BUILD IMMEDIATE REFRESH COMPLETE
+DISTRIBUTED BY HASH(s_city, p_brand) BUCKETS 6
+PROPERTIES ('replication_num' = '1')
+AS
+SELECT /*+SET_VAR(parallel_fragment_exec_instance_num=2, 
enable_vectorized_engine=true, batch_size=4096, 
enable_cost_based_join_reorder=true, enable_projection=true) */
+    d_year,
+    s_city,
+    p_brand,
+    SUM(lo_revenue - lo_supplycost) AS PROFIT
+FROM dates, customer, supplier, part, lineorder
+WHERE
+    lo_custkey = c_custkey
+    AND lo_suppkey = s_suppkey
+    AND lo_partkey = p_partkey
+    AND lo_orderdate = d_datekey
+    AND s_nation = 'UNITED STATES'
+    AND (
+        d_year = 1997
+        OR d_year = 1998
+    )
+    AND p_category = 'MFGR#14'
+GROUP BY d_year, s_city, p_brand
+ORDER BY d_year, s_city, p_brand;
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/supplier_create.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/supplier_create.sql
new file mode 100644
index 0000000000..1580a8fcca
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/supplier_create.sql
@@ -0,0 +1,14 @@
+CREATE TABLE IF NOT EXISTS `supplier` (
+  `s_suppkey` int(11) NOT NULL COMMENT "",
+  `s_name` varchar(26) NOT NULL COMMENT "",
+  `s_address` varchar(26) NOT NULL COMMENT "",
+  `s_city` varchar(11) NOT NULL COMMENT "",
+  `s_nation` varchar(16) NOT NULL COMMENT "",
+  `s_region` varchar(13) NOT NULL COMMENT "",
+  `s_phone` varchar(16) NOT NULL COMMENT ""
+)
+UNIQUE KEY (`s_suppkey`)
+DISTRIBUTED BY HASH(`s_suppkey`) BUCKETS 1
+PROPERTIES (
+"replication_num" = "1"
+);
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/ddl/supplier_delete.sql 
b/regression-test/suites/mtmv_p0/ssb/ddl/supplier_delete.sql
new file mode 100644
index 0000000000..39e663134c
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/ddl/supplier_delete.sql
@@ -0,0 +1 @@
+truncate table `supplier`;
\ No newline at end of file
diff --git a/regression-test/suites/mtmv_p0/ssb/test_mtmv_ssb_ddl.groovy 
b/regression-test/suites/mtmv_p0/ssb/test_mtmv_ssb_ddl.groovy
new file mode 100644
index 0000000000..0305dccf3a
--- /dev/null
+++ b/regression-test/suites/mtmv_p0/ssb/test_mtmv_ssb_ddl.groovy
@@ -0,0 +1,35 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_mtmv_ssb_ddl") {
+    def ssb_tables = ["customer", "lineorder", "part", "date", "supplier"]
+
+    for (String table in ssb_tables) {
+        sql new File("""${context.file.parent}/ddl/${table}_create.sql""").text
+        sql new File("""${context.file.parent}/ddl/${table}_delete.sql""").text
+    }
+    
+    def ssb_mtmvs = ["ssb_flat", "ssb_q11", "ssb_q12", "ssb_q13", "ssb_q21", 
"ssb_q22", "ssb_q23",
+                     "ssb_q31", "ssb_q32", "ssb_q33", "ssb_q34", "ssb_q31", 
"ssb_q42", "ssb_q43"]
+
+    for (String mvName in ssb_mtmvs) {
+        sql "drop MATERIALIZED VIEW IF EXISTS ${mvName}"
+        println "run mtmv ddl: ${mvName}"
+        sql new 
File("""${context.file.parent}/ddl/${mvName}_create.sql""").text
+        waitingMTMVTaskFinished(mvName)
+    }
+}


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

Reply via email to