Reset row flag in get

This commit is contained in:
DengzhiLiu
2023-02-15 11:42:01 +00:00
committed by ob-robot
parent 30eb581ae8
commit 719e871b92
2 changed files with 14 additions and 7 deletions

View File

@ -774,6 +774,7 @@ int ObEncodeBlockGetReader::locate_row(
} }
if (OB_SUCC(ret)) { if (OB_SUCC(ret)) {
row.row_flag_.reset();
if (found) { if (found) {
row.count_ = request_cnt_; row.count_ = request_cnt_;
row.row_flag_.set_flag(ObDmlFlag::DF_INSERT); row.row_flag_.set_flag(ObDmlFlag::DF_INSERT);
@ -1398,6 +1399,7 @@ OB_INLINE int ObMicroBlockDecoder::get_row_impl(int64_t index, ObDatumRow &row)
} else if (OB_FAIL(decode_cells(index, row_len, row_data, 0, request_cnt_, row.storage_datums_))) { } else if (OB_FAIL(decode_cells(index, row_len, row_data, 0, request_cnt_, row.storage_datums_))) {
LOG_WARN("decode cells failed", K(ret), K(index), K_(request_cnt)); LOG_WARN("decode cells failed", K(ret), K(index), K_(request_cnt));
} else { } else {
row.row_flag_.reset();
row.row_flag_.set_flag(ObDmlFlag::DF_INSERT); row.row_flag_.set_flag(ObDmlFlag::DF_INSERT);
row.count_ = request_cnt_; row.count_ = request_cnt_;
row.mvcc_row_flag_.reset(); row.mvcc_row_flag_.reset();

View File

@ -166,13 +166,18 @@ int ObRowCacheValue::init(const int64_t start_log_ts,
const ObDatumRow &row) const ObDatumRow &row)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
datums_ = row.storage_datums_; if (OB_UNLIKELY(!row.row_flag_.is_valid())) {
column_cnt_ = row.get_column_count(); ret = OB_ERR_UNEXPECTED;
start_log_ts_ = start_log_ts; STORAGE_LOG(WARN, "Unexpected row", K(ret), K(row));
flag_ = row.row_flag_; } else {
size_ = sizeof(ObStorageDatum) * column_cnt_; datums_ = row.storage_datums_;
for (int64_t i = 0; OB_SUCC(ret) && i < column_cnt_; i ++) { column_cnt_ = row.get_column_count();
size_ += datums_[i].get_deep_copy_size(); start_log_ts_ = start_log_ts;
flag_ = row.row_flag_;
size_ = sizeof(ObStorageDatum) * column_cnt_;
for (int64_t i = 0; OB_SUCC(ret) && i < column_cnt_; i ++) {
size_ += datums_[i].get_deep_copy_size();
}
} }
return ret; return ret;
} }