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

morningman pushed a commit to branch branch-2.0-alpha
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 23a3229d9adcc88a40d1b77126074ddc0b171058
Author: Xin Liao <[email protected]>
AuthorDate: Tue Apr 18 18:40:01 2023 +0800

    [fix](merge-on-write) enable_unique_key_merge_on_write property should only 
be used for unique table (#18734)
---
 .../apache/doris/datasource/InternalCatalog.java   | 12 +--
 .../suites/ddl_p0/test_create_table.groovy         |  3 +-
 .../unique_with_mow_p0/test_create_table.groovy    | 97 ++++++++++++++++++++++
 3 files changed, 105 insertions(+), 7 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
index 292723e091..290eddf9c1 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
@@ -1956,11 +1956,13 @@ public class InternalCatalog implements 
CatalogIf<Database> {
                 keysDesc.keysColumnSize(), storageFormat);
         olapTable.setDataSortInfo(dataSortInfo);
 
-        boolean enableUniqueKeyMergeOnWrite;
-        try {
-            enableUniqueKeyMergeOnWrite = 
PropertyAnalyzer.analyzeUniqueKeyMergeOnWrite(properties);
-        } catch (AnalysisException e) {
-            throw new DdlException(e.getMessage());
+        boolean enableUniqueKeyMergeOnWrite = false;
+        if (keysType == KeysType.UNIQUE_KEYS) {
+            try {
+                enableUniqueKeyMergeOnWrite = 
PropertyAnalyzer.analyzeUniqueKeyMergeOnWrite(properties);
+            } catch (AnalysisException e) {
+                throw new DdlException(e.getMessage());
+            }
         }
         olapTable.setEnableUniqueKeyMergeOnWrite(enableUniqueKeyMergeOnWrite);
 
diff --git a/regression-test/suites/ddl_p0/test_create_table.groovy 
b/regression-test/suites/ddl_p0/test_create_table.groovy
index dd7340cbbb..a022f51e52 100644
--- a/regression-test/suites/ddl_p0/test_create_table.groovy
+++ b/regression-test/suites/ddl_p0/test_create_table.groovy
@@ -42,8 +42,7 @@ suite("sql_create_time_range_table") {
        properties(
                "replication_num"="1",
                "light_schema_change"="true",
-               "compression"="zstd",
-               "enable_unique_key_merge_on_write" = "true"
+               "compression"="zstd"
        );
                """
 
diff --git a/regression-test/suites/unique_with_mow_p0/test_create_table.groovy 
b/regression-test/suites/unique_with_mow_p0/test_create_table.groovy
new file mode 100644
index 0000000000..9a3ad4b2a5
--- /dev/null
+++ b/regression-test/suites/unique_with_mow_p0/test_create_table.groovy
@@ -0,0 +1,97 @@
+// 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_create_table") {
+    def tableName = "unique_mow_create_table"
+    sql """ DROP TABLE IF EXISTS ${tableName} """
+
+    // duplicate table with enable_unique_key_merge_on_write property
+    test {
+        sql """
+            CREATE TABLE `$tableName` (
+                    `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 ""
+            )
+            DUPLICATE KEY (`c_custkey`)
+            DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 1
+            PROPERTIES (
+                    "replication_num" = "1",
+                    "enable_unique_key_merge_on_write" = "true"
+             );
+        """
+        exception "Unknown properties"
+    }
+
+    // duplicate table with enable_unique_key_merge_on_write property
+    test {
+        sql """
+            CREATE TABLE `$tableName` (
+                    `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 ""
+            )
+            DUPLICATE KEY (`c_custkey`)
+            DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 1
+            PROPERTIES (
+                    "replication_num" = "1",
+                    "enable_unique_key_merge_on_write" = "false"
+             );
+        """
+        exception "Unknown properties"
+    }
+
+    // agg table with enable_unique_key_merge_on_write property
+    test {
+        sql """
+            CREATE TABLE `$tableName` (
+                    `c_custkey` int(11) NOT NULL COMMENT "",
+                    `c_name` varchar(26) max NOT NULL COMMENT "",
+                    `c_address` varchar(41) max NOT NULL COMMENT "",
+                    `c_city` varchar(11) max NOT NULL COMMENT ""
+            )
+            AGGREGATE KEY (`c_custkey`)
+            DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 1
+            PROPERTIES (
+                    "replication_num" = "1",
+                    "enable_unique_key_merge_on_write" = "true"
+             );
+        """
+        exception "Unknown properties"
+    }
+
+    // agg table with enable_unique_key_merge_on_write property
+    test {
+        sql """
+            CREATE TABLE `$tableName` (
+                    `c_custkey` int(11) NOT NULL COMMENT "",
+                    `c_name` varchar(26) max NOT NULL COMMENT "",
+                    `c_address` varchar(41) max NOT NULL COMMENT "",
+                    `c_city` varchar(11) max NOT NULL COMMENT ""
+            )
+            AGGREGATE KEY (`c_custkey`)
+            DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 1
+            PROPERTIES (
+                    "replication_num" = "1",
+                    "enable_unique_key_merge_on_write" = "false"
+             );
+        """
+        exception "Unknown properties"
+    }
+}
\ No newline at end of file


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

Reply via email to