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

[BUGFIX] fix mysqltest

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