提交 bfc6083c 编写于 作者: O obdev 提交者: ob-robot

[BUGFIX] fix mysqltest

上级 7ec97aa3
......@@ -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;
}
}
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册