fix some bug
This commit is contained in:
@ -107,16 +107,6 @@ int check_sequence_set_violation(const concurrent_control::ObWriteFlag write_fla
|
|||||||
// and so fail to pass the check. We must bypass the case.
|
// and so fail to pass the check. We must bypass the case.
|
||||||
} else if (write_flag.is_table_api()) {
|
} else if (write_flag.is_table_api()) {
|
||||||
// bypass the case
|
// bypass the case
|
||||||
// Case 6: For the case of deleting rows during building the unique index
|
|
||||||
// concurrently, it may exist that two rows of the main table point to one
|
|
||||||
// row of the newly created index, which means the unique index will abort
|
|
||||||
// itself during consistency check. While because of the feature of the
|
|
||||||
// online ddl, the concurrent delete will start to operate on the newly
|
|
||||||
// created index, which causes these two delete operations and fail to pass
|
|
||||||
// the check. So we need bypass this case.
|
|
||||||
} else if (blocksstable::ObDmlFlag::DF_DELETE == writer_dml_flag
|
|
||||||
&& blocksstable::ObDmlFlag::DF_DELETE == locker_dml_flag) {
|
|
||||||
// bypass the case
|
|
||||||
// Case 7: For the case of batch dml operation, it may operate the same row
|
// Case 7: For the case of batch dml operation, it may operate the same row
|
||||||
// concurrently if the first operation has no effects.(SQL layer will check
|
// concurrently if the first operation has no effects.(SQL layer will check
|
||||||
// the modification of the row before the second operation, and report the
|
// the modification of the row before the second operation, and report the
|
||||||
@ -134,6 +124,16 @@ int check_sequence_set_violation(const concurrent_control::ObWriteFlag write_fla
|
|||||||
// So we need bypass this case.
|
// So we need bypass this case.
|
||||||
} else if (write_flag.is_insert_up()) {
|
} else if (write_flag.is_insert_up()) {
|
||||||
// bypass the case
|
// bypass the case
|
||||||
|
// Case 6: For the case of deleting rows during building the unique index
|
||||||
|
// concurrently, it may exist that two rows of the main table point to one
|
||||||
|
// row of the newly created index, which means the unique index will abort
|
||||||
|
// itself during consistency check. While because of the feature of the
|
||||||
|
// online ddl, the concurrent delete will start to operate on the newly
|
||||||
|
// created index, which causes these two delete operations and fail to pass
|
||||||
|
// the check. So we need bypass this case.
|
||||||
|
} else if (blocksstable::ObDmlFlag::DF_DELETE == writer_dml_flag
|
||||||
|
&& blocksstable::ObDmlFlag::DF_DELETE == locker_dml_flag) {
|
||||||
|
// bypass the case
|
||||||
// Case 9: For the case of the write only index, it may operate the same
|
// Case 9: For the case of the write only index, it may operate the same
|
||||||
// row more than once under the case that main table has two rows pointing
|
// row more than once under the case that main table has two rows pointing
|
||||||
// to the same index which is building during the first stage(in which
|
// to the same index which is building during the first stage(in which
|
||||||
|
|||||||
@ -786,13 +786,14 @@ class ObTxCommitInfoLogTempRef
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ObTxCommitInfoLogTempRef()
|
ObTxCommitInfoLogTempRef()
|
||||||
: scheduler_(), participants_(), app_trace_id_str_(), app_trace_info_(),
|
: scheduler_(), participants_(), commit_parts_(), app_trace_id_str_(), app_trace_info_(),
|
||||||
incremental_participants_(), prev_record_lsn_(), redo_lsns_(), xid_()
|
incremental_participants_(), prev_record_lsn_(), redo_lsns_(), xid_()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
common::ObAddr scheduler_;
|
common::ObAddr scheduler_;
|
||||||
share::ObLSArray participants_;
|
share::ObLSArray participants_;
|
||||||
|
ObTxCommitParts commit_parts_;
|
||||||
common::ObString app_trace_id_str_;
|
common::ObString app_trace_id_str_;
|
||||||
common::ObString app_trace_info_;
|
common::ObString app_trace_info_;
|
||||||
share::ObLSArray incremental_participants_;
|
share::ObLSArray incremental_participants_;
|
||||||
@ -812,7 +813,7 @@ public:
|
|||||||
incremental_participants_(temp_ref.incremental_participants_), cluster_version_(0),
|
incremental_participants_(temp_ref.incremental_participants_), cluster_version_(0),
|
||||||
app_trace_id_str_(temp_ref.app_trace_id_str_), app_trace_info_(temp_ref.app_trace_info_),
|
app_trace_id_str_(temp_ref.app_trace_id_str_), app_trace_info_(temp_ref.app_trace_info_),
|
||||||
prev_record_lsn_(temp_ref.prev_record_lsn_), redo_lsns_(temp_ref.redo_lsns_),
|
prev_record_lsn_(temp_ref.prev_record_lsn_), redo_lsns_(temp_ref.redo_lsns_),
|
||||||
xid_(temp_ref.xid_), commit_parts_(), epoch_(0)
|
xid_(temp_ref.xid_), commit_parts_(temp_ref.commit_parts_), epoch_(0)
|
||||||
{
|
{
|
||||||
before_serialize();
|
before_serialize();
|
||||||
}
|
}
|
||||||
@ -829,7 +830,7 @@ public:
|
|||||||
share::ObLSArray &incremental_participants,
|
share::ObLSArray &incremental_participants,
|
||||||
uint64_t cluster_version,
|
uint64_t cluster_version,
|
||||||
const ObXATransID &xid,
|
const ObXATransID &xid,
|
||||||
const ObTxCommitParts &commit_parts,
|
ObTxCommitParts &commit_parts,
|
||||||
int64_t epoch)
|
int64_t epoch)
|
||||||
: scheduler_(scheduler), participants_(participants), upstream_(upstream),
|
: scheduler_(scheduler), participants_(participants), upstream_(upstream),
|
||||||
is_sub2pc_(is_sub2pc), is_dup_tx_(is_dup_tx), can_elr_(is_elr),
|
is_sub2pc_(is_sub2pc), is_dup_tx_(is_dup_tx), can_elr_(is_elr),
|
||||||
@ -895,7 +896,8 @@ private:
|
|||||||
ObRedoLSNArray &redo_lsns_;
|
ObRedoLSNArray &redo_lsns_;
|
||||||
// for xa
|
// for xa
|
||||||
ObXATransID xid_;
|
ObXATransID xid_;
|
||||||
ObTxCommitParts commit_parts_;
|
// for transfer
|
||||||
|
ObTxCommitParts &commit_parts_;
|
||||||
int64_t epoch_;
|
int64_t epoch_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user