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

zhangchen 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 013bfc6a06 [Bug](row store) Fix column aggregate info lost when table 
is unique model (#21506)
013bfc6a06 is described below

commit 013bfc6a06cf24adf709d6f7e16c15173640aee7
Author: lihangyu <15605149...@163.com>
AuthorDate: Thu Jul 6 12:06:22 2023 +0800

    [Bug](row store) Fix column aggregate info lost when table is unique model 
(#21506)
---
 .../java/org/apache/doris/analysis/ColumnDef.java  |  5 +-
 .../org/apache/doris/analysis/CreateTableStmt.java | 13 +++-
 regression-test/suites/row_store/load.groovy       | 70 ++++++++++++++++++++++
 3 files changed, 85 insertions(+), 3 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
index ab1a1bed6a..433c9b615d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java
@@ -181,8 +181,9 @@ public class ColumnDef {
                 "sequence column hidden column", false);
     }
 
-    public static ColumnDef newRowStoreColumnDef() {
-        return new ColumnDef(Column.ROW_STORE_COL, 
TypeDef.create(PrimitiveType.STRING), false, null, false, false,
+    public static ColumnDef newRowStoreColumnDef(AggregateType aggregateType) {
+        return new ColumnDef(Column.ROW_STORE_COL, 
TypeDef.create(PrimitiveType.STRING), false,
+                aggregateType, false, false,
                 new ColumnDef.DefaultValue(true, ""), "doris row store hidden 
column", false);
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
index c737fa2d4c..556bc03a03 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateTableStmt.java
@@ -464,7 +464,18 @@ public class CreateTableStmt extends DdlStmt {
         }
         // add a hidden column as row store
         if (properties != null && PropertyAnalyzer.analyzeStoreRowColumn(new 
HashMap<>(properties))) {
-            columnDefs.add(ColumnDef.newRowStoreColumnDef());
+            if (keysDesc != null && keysDesc.getKeysType() == 
KeysType.AGG_KEYS) {
+                throw new AnalysisException("Aggregate table can't support row 
column now");
+            }
+            if (keysDesc != null && keysDesc.getKeysType() == 
KeysType.UNIQUE_KEYS) {
+                if (enableUniqueKeyMergeOnWrite) {
+                    
columnDefs.add(ColumnDef.newRowStoreColumnDef(AggregateType.NONE));
+                } else {
+                    
columnDefs.add(ColumnDef.newRowStoreColumnDef(AggregateType.REPLACE));
+                }
+            } else {
+                columnDefs.add(ColumnDef.newRowStoreColumnDef(null));
+            }
         }
         if (Config.enable_hidden_version_column_by_default && keysDesc != null
                 && keysDesc.getKeysType() == KeysType.UNIQUE_KEYS) {
diff --git a/regression-test/suites/row_store/load.groovy 
b/regression-test/suites/row_store/load.groovy
new file mode 100644
index 0000000000..e47b38bc42
--- /dev/null
+++ b/regression-test/suites/row_store/load.groovy
@@ -0,0 +1,70 @@
+// 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.
+
+import org.codehaus.groovy.runtime.IOGroovyMethods
+
+suite("test_row_store", "p0") {
+    def testTable = "tbl_unique"
+    sql "DROP TABLE IF EXISTS ${testTable}"
+    sql """
+    CREATE TABLE `${testTable}` (
+         `tag` varchar(45) NULL,
+         `tag_value` varchar(45) NULL,
+         `user_ids` decimalv3(30, 8) NULL,
+         `test` datetime NULL DEFAULT CURRENT_TIMESTAMP
+        ) ENGINE=OLAP
+        UNIQUE KEY(`tag`, `tag_value`)
+        COMMENT 'OLAP'
+        DISTRIBUTED BY HASH(`tag`) BUCKETS 2
+        PROPERTIES (
+        "replication_allocation" = "tag.location.default: 1",
+        "storage_format" = "V2",
+        "light_schema_change" = "true",
+        "store_row_column" = "true",
+        "disable_auto_compaction" = "false",
+        "enable_single_replica_compaction" = "false"
+        );
+    """ 
+    sql "insert into ${testTable} (tag,tag_value,user_ids) values 
('10001','23',34.234),('10001','23',34.234);"
+    sql "insert into ${testTable} (tag,tag_value,user_ids) values 
('10001','23',34.234);"
+    sql "select * from  ${testTable}"
+
+    testTable = "tbl_dup"
+    sql "DROP TABLE IF EXISTS ${testTable}"
+    sql """
+    CREATE TABLE `${testTable}` (
+         `tag` varchar(45) NULL,
+         `tag_value` varchar(45) NULL,
+         `user_ids` decimalv3(30, 8) NULL,
+         `test` datetime NULL DEFAULT CURRENT_TIMESTAMP
+        ) ENGINE=OLAP
+        UNIQUE KEY(`tag`, `tag_value`)
+        COMMENT 'OLAP'
+        DISTRIBUTED BY HASH(`tag`) BUCKETS 2
+        PROPERTIES (
+        "replication_allocation" = "tag.location.default: 1",
+        "storage_format" = "V2",
+        "light_schema_change" = "true",
+        "store_row_column" = "true",
+        "disable_auto_compaction" = "false",
+        "enable_single_replica_compaction" = "false"
+        );
+    """
+    sql "insert into ${testTable} (tag,tag_value,user_ids) values 
('10001','23',34.234),('10001','23',34.234);"
+    sql "insert into ${testTable} (tag,tag_value,user_ids) values 
('10001','23',34.234);"
+    sql "select * from  ${testTable}"
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to