[fix](merge-on-write) fix that delete bitmap is not calculated correctly when has sequence column (#20955)

This commit is contained in:
Xin Liao
2023-06-20 21:36:47 +08:00
committed by GitHub
parent 2c11ce0a02
commit b70a14d9c9

View File

@ -2871,7 +2871,7 @@ Status Tablet::calc_segment_delete_bitmap(RowsetSharedPtr rowset,
if (num_read == batch_size && num_read != remaining) {
num_read -= 1;
}
for (size_t i = 0; i < num_read; i++) {
for (size_t i = 0; i < num_read; i++, row_id++) {
Slice key = Slice(index_column->get_data_at(i).data, index_column->get_data_at(i).size);
RowLocation loc;
// same row in segments should be filtered
@ -2888,7 +2888,6 @@ Status Tablet::calc_segment_delete_bitmap(RowsetSharedPtr rowset,
return st;
}
if (st.is<NOT_FOUND>()) {
++row_id;
continue;
}
@ -2922,10 +2921,11 @@ Status Tablet::calc_segment_delete_bitmap(RowsetSharedPtr rowset,
}
// when st = ok
delete_bitmap->add({loc.rowset_id, loc.segment_id, 0}, loc.row_id);
++row_id;
}
remaining -= num_read;
}
DCHECK_EQ(total, row_id) << "segment total rows: " << total << " row_id:" << row_id;
if (pos > 0) {
RETURN_IF_ERROR(generate_new_block_for_partial_update(
rowset_schema, read_plan_ori, read_plan_update, rsid_to_rowset, &block));