From e5bfbbe7611376a1b35541bfb048fc422b14f661 Mon Sep 17 00:00:00 2001 From: zhannngchen <48427519+zhannngchen@users.noreply.github.com> Date: Fri, 26 Aug 2022 09:40:11 +0800 Subject: [PATCH] [feature-wip](unique-key-merge-on-write) support alter table column for MoW (#12052) --- be/src/olap/tablet.cpp | 6 +++--- .../org/apache/doris/alter/SchemaChangeHandler.java | 12 ++++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp index d3971937b3..83e78f9c61 100644 --- a/be/src/olap/tablet.cpp +++ b/be/src/olap/tablet.cpp @@ -1998,7 +1998,7 @@ Status Tablet::calc_delete_bitmap(RowsetId rowset_id, CHECK(st.ok() || st.is_not_found() || st.is_already_exist()); if (st.is_not_found()) continue; - // sequece id smaller than the previous one, so delelte current row + // sequence id smaller than the previous one, so delete current row if (st.is_already_exist()) { loc.rowset_id = rowset_id; loc.segment_id = seg->id(); @@ -2081,8 +2081,8 @@ Status Tablet::update_delete_bitmap(const RowsetSharedPtr& rowset, DeleteBitmapP } // update version without write lock, compaction and publish_txn - // will update delete bitmap, handle compaction with _delete_bitmap_lock - // and publish_txn runs sequencial so no need to lock here + // will update delete bitmap, handle compaction with _rowset_update_lock + // and publish_txn runs sequential so no need to lock here for (auto iter = delete_bitmap->delete_bitmap.begin(); iter != delete_bitmap->delete_bitmap.end(); ++iter) { int ret = _tablet_meta->delete_bitmap().set( diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java index a98850b9db..c1955acb95 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java @@ -499,7 +499,11 @@ public class SchemaChangeHandler extends AlterHandler { + modColumn.getName()); } if (!modColumn.isKey()) { - modColumn.setAggregationType(AggregateType.REPLACE, true); + if (olapTable.getEnableUniqueKeyMergeOnWrite()) { + modColumn.setAggregationType(AggregateType.NONE, false); + } else { + modColumn.setAggregationType(AggregateType.REPLACE, true); + } } } else { if (null != modColumn.getAggregationType()) { @@ -860,7 +864,11 @@ public class SchemaChangeHandler extends AlterHandler { "Can not assign aggregation method" + " on column in Unique data model table: " + newColName); } if (!newColumn.isKey()) { - newColumn.setAggregationType(AggregateType.REPLACE, true); + if (olapTable.getEnableUniqueKeyMergeOnWrite()) { + newColumn.setAggregationType(AggregateType.NONE, false); + } else { + newColumn.setAggregationType(AggregateType.REPLACE, true); + } } } else { if (newColumn.getAggregationType() != null) {