[bugfix]: for already commited tablet, shouldn't append related lob tablet.

This commit is contained in:
Monk-Liu 2024-02-09 06:23:06 +00:00 committed by ob-robot
parent c025ac9d71
commit f95855069f
4 changed files with 11 additions and 4 deletions

View File

@ -1433,7 +1433,7 @@ int ObComplementWriteTask::append_row(ObScan *scan)
LOG_WARN("tmp_row is nullptr", K(ret));
} else if (OB_FAIL(add_extra_rowkey(rowkey_column_cnt, extra_rowkey_cnt, *tmp_row))) {
LOG_WARN("fail to add extra rowkey", K(ret));
} else if (OB_FAIL(append_lob(rowkey_column_cnt, extra_rowkey_cnt, row_iter, lob_allocator))) {
} else if (!ddl_committed && OB_FAIL(append_lob(rowkey_column_cnt, extra_rowkey_cnt, row_iter, lob_allocator))) {
LOG_WARN("append lob into macro block failed", K(ret));
} else if (OB_FAIL(new_row_builder.build(write_row_, tmp_store_row))) {
} else if (OB_FAIL(ObRowReshapeUtil::reshape_table_rows(

View File

@ -827,10 +827,11 @@ int ObTenantDirectLoadMgr::check_and_process_finished_tablet(
}
if (OB_SUCC(ret) && nullptr != row_iter) {
const ObDatumRow *row = nullptr;
const bool skip_lob = true;
while (OB_SUCC(ret)) {
if (OB_FAIL(THIS_WORKER.check_status())) {
LOG_WARN("check status failed", K(ret));
} else if (OB_FAIL(row_iter->get_next_row(row))) {
} else if (OB_FAIL(static_cast<ObDDLInsertRowIterator*>(row_iter)->get_next_row(skip_lob, row))) {
if (OB_ITER_END == ret) {
ret = OB_SUCCESS;
break;

View File

@ -85,6 +85,7 @@ int ObDDLInsertRowIterator::close_lob_sstable_slice()
}
int ObDDLInsertRowIterator::get_next_row(
const bool skip_lob,
const blocksstable::ObDatumRow *&row)
{
int ret = OB_SUCCESS;
@ -162,7 +163,7 @@ int ObDDLInsertRowIterator::get_next_row(
}
}
if (OB_SUCC(ret) && lob_column_idxs.count() > 0) {
if (OB_SUCC(ret) && !skip_lob && lob_column_idxs.count() > 0) {
//handle lob
if (lob_id_cache_.remain_count() < lob_column_idxs.count()) {
if (OB_FAIL(switch_to_new_lob_slice())) {

View File

@ -273,7 +273,12 @@ public:
const int64_t context_id,
const int64_t parallel_idx);
virtual ~ObDDLInsertRowIterator();
virtual int get_next_row(const blocksstable::ObDatumRow *&row) override;
virtual int get_next_row(const blocksstable::ObDatumRow *&row) override
{
const bool skip_lob = false;
return get_next_row(skip_lob, row);
}
int get_next_row(const bool skip_lob, const blocksstable::ObDatumRow *&row);
TO_STRING_KV(K_(ls_id), K_(current_tablet_id), K_(current_row), K_(is_slice_empty), K_(is_next_row_cached), K_(rowkey_count), K_(snapshot_version),
K_(lob_slice_id), K_(lob_id_cache), K_(context_id));
public: