You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by kx...@apache.org on 2023/07/06 12:01:14 UTC
[doris] 09/20: [Bug](row store) Fix column aggregate info lost when table is unique model (#21506)
This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
commit 280640f1caef5cab5a7fee9c7617c7537c18f97e
Author: lihangyu <15...@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-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org