Fix memory leak because fix memory expansion

This commit is contained in:
obdev
2023-04-28 08:12:04 +00:00
committed by ob-robot
parent dc182c9307
commit 5f403ea6ea
4 changed files with 15 additions and 2 deletions

View File

@ -362,7 +362,16 @@ int ObGroupLookupOp::set_lookup_scan_group(int64_t group_id)
return ret;
}
int ObGroupLookupOp::revert_iter()
{
int ret = OB_SUCCESS;
if (OB_FAIL(ObLocalIndexLookupOp::revert_iter())) {
LOG_WARN("revert ObLocalIndexLookupOp fail",K(ret));
} else {
group_iter_.reset();
}
return ret;
}
OB_SERIALIZE_MEMBER((ObDASGroupScanOp, ObDASScanOp), iter_, cur_group_idx_, group_size_);

View File

@ -54,6 +54,8 @@ public:
ObExpr *group_id_expr);
virtual int switch_lookup_scan_group() override;
virtual int set_lookup_scan_group(int64_t group_id) override;
int revert_iter();
public:
ObGroupScanIter group_iter_;
};

View File

@ -1197,6 +1197,7 @@ int ObLocalIndexLookupOp::revert_iter()
LOG_WARN("revert scan iterator failed", K(ret));
}
//release the memory hold by local index lookup op
rowkey_iter_ = NULL;
lookup_iter_ = NULL;
scan_param_.destroy_schema_guard();

View File

@ -39,7 +39,8 @@ int ObGroupResultRows::init(const common::ObIArray<ObExpr *> &exprs,
reuse_alloc_ = new(reuse_alloc_buf_) common::ObArenaAllocator();
reuse_alloc_->set_attr(attr);
}
rows_ = static_cast<LastDASStoreRow *>(reuse_alloc_->alloc(max_size * sizeof(LastDASStoreRow)));
//rows_ = static_cast<LastDASStoreRow *>(reuse_alloc_->alloc(max_size * sizeof(LastDASStoreRow)));
rows_ = static_cast<LastDASStoreRow *>(das_op_allocator.alloc(max_size * sizeof(LastDASStoreRow)));
if (NULL == rows_) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_WARN("fail to alloc memory", K(max_size), K(ret));