[BUGFIX] fix mysqltest
This commit is contained in:
@ -325,6 +325,7 @@ int ObMultipleMerge::get_next_row(ObDatumRow *&row)
|
||||
if (need_padding_) {
|
||||
padding_allocator_.reuse();
|
||||
}
|
||||
reuse_lob_locator();
|
||||
while (OB_SUCC(ret)) {
|
||||
if (access_ctx_->is_limit_end()) {
|
||||
ret = OB_ITER_END;
|
||||
@ -448,6 +449,7 @@ int ObMultipleMerge::get_next_normal_rows(int64_t &count, int64_t capacity)
|
||||
if (need_padding_) {
|
||||
padding_allocator_.reuse();
|
||||
}
|
||||
reuse_lob_locator();
|
||||
while (OB_SUCC(ret) && !vector_store->is_end()) {
|
||||
bool can_batch = false;
|
||||
if (access_ctx_->is_limit_end()) {
|
||||
@ -552,6 +554,7 @@ int ObMultipleMerge::get_next_aggregate_row(ObDatumRow *&row)
|
||||
int64_t batch_size = max(1, access_param_->op_->get_batch_size());
|
||||
access_param_->op_->get_eval_ctx().reuse(batch_size);
|
||||
}
|
||||
reuse_lob_locator();
|
||||
while (OB_SUCC(ret) && !agg_row_store->is_end()) {
|
||||
bool can_batch = false;
|
||||
// clear evaluated flag for every row
|
||||
@ -1298,7 +1301,6 @@ int ObMultipleMerge::read_lob_columns_full_data(blocksstable::ObDatumRow &row)
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("Invalid col count", K(row), KPC(out_cols_param));
|
||||
} else {
|
||||
lob_reader_.reuse();
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < row.count_; ++i) {
|
||||
blocksstable::ObStorageDatum &datum = row.storage_datums_[i];
|
||||
if (out_cols_param->at(i)->get_meta_type().is_lob_storage()) {
|
||||
@ -1375,5 +1377,14 @@ int ObMultipleMerge::fuse_lob_default(ObObj &def_cell, const uint64_t col_id)
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObMultipleMerge::reuse_lob_locator()
|
||||
{
|
||||
if (NULL != access_ctx_->lob_locator_helper_) {
|
||||
access_ctx_->lob_locator_helper_->reuse();
|
||||
}
|
||||
lob_reader_.reuse();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -112,6 +112,7 @@ private:
|
||||
int read_lob_columns_full_data(blocksstable::ObDatumRow &row);
|
||||
bool need_read_lob_columns(const blocksstable::ObDatumRow &row);
|
||||
int handle_lob_before_fuse_row();
|
||||
void reuse_lob_locator();
|
||||
void report_tablet_stat();
|
||||
OB_INLINE int update_and_report_tablet_stat();
|
||||
|
||||
|
||||
@ -171,7 +171,6 @@ int ObLobLocatorHelper::fill_lob_locator(ObDatumRow &row,
|
||||
} else {
|
||||
STORAGE_LOG(DEBUG, "start to fill lob locator", K(row));
|
||||
//ObLobLocatorHelper is inited, we always cound find a lob cell in projected row
|
||||
locator_allocator_.reuse();
|
||||
|
||||
if (OB_FAIL(build_rowid_obj(row, rowkey_str_, is_projected_row, *col_descs, *out_project,
|
||||
access_param.iter_param_.tablet_id_))) {
|
||||
@ -236,7 +235,6 @@ int ObLobLocatorHelper::fill_lob_locator_v2(ObDatumRow &row,
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("Invalid col count", K(row), KPC(out_cols_param));
|
||||
} else {
|
||||
locator_allocator_.reuse();
|
||||
if (OB_FAIL(build_rowid_obj(row, rowkey_str_, false, *col_descs, *out_project, access_param.iter_param_.tablet_id_))) {
|
||||
STORAGE_LOG(WARN, "Failed to build rowid obj", K(ret), K(rowkey_str_));
|
||||
} else {
|
||||
|
||||
@ -27,6 +27,7 @@ public:
|
||||
ObLobLocatorHelper();
|
||||
virtual ~ObLobLocatorHelper();
|
||||
void reset();
|
||||
void reuse() { locator_allocator_.reuse(); }
|
||||
int init(const ObTableScanParam &scan_param,
|
||||
const ObStoreCtx &ctx,
|
||||
const share::ObLSID &ls_id,
|
||||
|
||||
@ -481,6 +481,9 @@ int ObLobManager::query_remote(ObLobAccessParam& param, common::ObAddr& dst_addr
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ret == OB_ITER_END) {
|
||||
ret = OB_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user