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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]