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