This is an automated email from the ASF dual-hosted git repository.
dataroaring pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 0855a7b0c1d [branch-2.0](cherr-pick) schema change may cause mow
duplicate key (33536) (#33540)
0855a7b0c1d is described below
commit 0855a7b0c1d48cb565bf9e1abd0ad78fa30dae70
Author: zhannngchen <[email protected]>
AuthorDate: Sat Apr 13 20:13:19 2024 +0800
[branch-2.0](cherr-pick) schema change may cause mow duplicate key (33536)
(#33540)
---
be/src/olap/schema_change.cpp | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/be/src/olap/schema_change.cpp b/be/src/olap/schema_change.cpp
index 53c23344282..84ecbb10c60 100644
--- a/be/src/olap/schema_change.cpp
+++ b/be/src/olap/schema_change.cpp
@@ -943,6 +943,8 @@ Status
SchemaChangeHandler::_do_process_alter_tablet_v2(const TAlterTabletReqV2&
break;
}
+ DCHECK_GE(real_alter_version, request.alter_version);
+
if (new_tablet->keys_type() == UNIQUE_KEYS &&
new_tablet->enable_unique_key_merge_on_write()) {
res = _calc_delete_bitmap_for_mow_table(new_tablet,
real_alter_version);
@@ -1061,6 +1063,7 @@ Status
SchemaChangeHandler::_convert_historical_rowsets(const SchemaChangeParams
auto sc_procedure = get_sc_procedure(changer, sc_sorting, sc_directly);
// c.Convert historical data
+ bool have_failure_rowset = false;
for (auto& rs_reader : sc_params.ref_rowset_readers) {
VLOG_TRACE << "begin to convert a history rowset. version=" <<
rs_reader->version().first
<< "-" << rs_reader->version().second;
@@ -1113,6 +1116,7 @@ Status
SchemaChangeHandler::_convert_historical_rowsets(const SchemaChangeParams
<< "tablet=" << sc_params.new_tablet->full_name() <<
", version='"
<< rs_reader->version().first << "-" <<
rs_reader->version().second;
StorageEngine::instance()->add_unused_rowset(new_rowset);
+ have_failure_rowset = true;
res = Status::OK();
} else if (!res) {
LOG(WARNING) << "failed to register new version. "
@@ -1126,7 +1130,9 @@ Status
SchemaChangeHandler::_convert_historical_rowsets(const SchemaChangeParams
<< ", version=" << rs_reader->version().first << "-"
<< rs_reader->version().second;
}
- *real_alter_version = rs_reader->version().second;
+ if (!have_failure_rowset) {
+ *real_alter_version = rs_reader->version().second;
+ }
VLOG_TRACE << "succeed to convert a history version."
<< " version=" << rs_reader->version().first << "-"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]