[CP] [Bugfix]fix htable query memory leak
This commit is contained in:
parent
5813fbd504
commit
055b14bc3a
@ -362,6 +362,7 @@ int ObHTableDeleteExecutor::query_and_delete(const ObTableQuery &query)
|
||||
LOG_WARN("fail to close row iterator", K(tmp_ret));
|
||||
ret = COVER_SUCC(tmp_ret);
|
||||
}
|
||||
ObTableQueryUtils::destroy_result_iterator(result_iter);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -1027,6 +1027,7 @@ int ObTableQueryAndMutateP::try_process()
|
||||
scan_spec->destroy_executor(executor);
|
||||
tb_ctx_.set_expr_info(nullptr);
|
||||
}
|
||||
ObTableQueryUtils::destroy_result_iterator(result_iterator);
|
||||
}
|
||||
|
||||
bool need_rollback_trans = (OB_SUCCESS != ret);
|
||||
|
@ -139,6 +139,13 @@ int ObTableQueryUtils::generate_query_result_iterator(ObIAllocator &allocator,
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ObTableQueryUtils::destroy_result_iterator(ObTableQueryResultIterator *result_iter)
|
||||
{
|
||||
if (OB_NOT_NULL(result_iter)) {
|
||||
result_iter->~ObTableQueryResultIterator();
|
||||
}
|
||||
}
|
||||
|
||||
int ObTableQueryUtils::get_rowkey_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
@ -30,6 +30,7 @@ public:
|
||||
ObTableQueryResult &one_result,
|
||||
const ObTableCtx &tb_ctx,
|
||||
ObTableQueryResultIterator *&result_iter);
|
||||
static void destroy_result_iterator(ObTableQueryResultIterator *result_iter);
|
||||
static int get_rowkey_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names);
|
||||
static int get_full_column_names(const ObTableSchema &table_schema, ObIArray<ObString> &names);
|
||||
|
||||
|
@ -229,6 +229,7 @@ int ObTableQueryP::query_and_result(ObTableApiScanExecutor *executor)
|
||||
LOG_WARN("fail to close row iter", K(tmp_ret));
|
||||
ret = COVER_SUCC(tmp_ret);
|
||||
}
|
||||
ObTableQueryUtils::destroy_result_iterator(result_iter);
|
||||
|
||||
LOG_DEBUG("last result", K(ret), "row_count", result_.get_row_count());
|
||||
NG_TRACE_EXT(tag1, OB_ID(return_rows), result_count, OB_ID(arg2), result_row_count_);
|
||||
|
@ -643,6 +643,7 @@ int ObTableQuerySyncP::destory_query_session(bool need_rollback_trans)
|
||||
} else if (OB_FAIL(ObQuerySyncMgr::get_instance().get_query_session_map()->erase_refactored(query_session_id_))) {
|
||||
LOG_WARN("fail to erase query session from query sync mgr", K(ret));
|
||||
} else {
|
||||
ObTableQueryUtils::destroy_result_iterator(query_session_->get_result_iter());
|
||||
OB_DELETE(ObTableQuerySyncSession, ObModIds::TABLE_PROC, query_session_);
|
||||
LOG_DEBUG("destory query session success", K(ret), K(query_session_id_));
|
||||
}
|
||||
|
@ -75,6 +75,7 @@ public:
|
||||
~ObTableQuerySyncSession();
|
||||
|
||||
void set_result_iterator(table::ObTableQueryResultIterator* iter);
|
||||
table::ObTableQueryResultIterator *get_result_iter() { return result_iterator_; };
|
||||
void set_in_use(bool in_use) {in_use_ = in_use;}
|
||||
bool is_in_use() {return in_use_;}
|
||||
int init();
|
||||
|
Loading…
x
Reference in New Issue
Block a user