Fix memory leak because fix memory expansion
This commit is contained in:
@ -362,7 +362,16 @@ int ObGroupLookupOp::set_lookup_scan_group(int64_t group_id)
|
|||||||
return ret;
|
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_);
|
OB_SERIALIZE_MEMBER((ObDASGroupScanOp, ObDASScanOp), iter_, cur_group_idx_, group_size_);
|
||||||
|
|
||||||
|
|||||||
@ -54,6 +54,8 @@ public:
|
|||||||
ObExpr *group_id_expr);
|
ObExpr *group_id_expr);
|
||||||
virtual int switch_lookup_scan_group() override;
|
virtual int switch_lookup_scan_group() override;
|
||||||
virtual int set_lookup_scan_group(int64_t group_id) override;
|
virtual int set_lookup_scan_group(int64_t group_id) override;
|
||||||
|
|
||||||
|
int revert_iter();
|
||||||
public:
|
public:
|
||||||
ObGroupScanIter group_iter_;
|
ObGroupScanIter group_iter_;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1197,6 +1197,7 @@ int ObLocalIndexLookupOp::revert_iter()
|
|||||||
LOG_WARN("revert scan iterator failed", K(ret));
|
LOG_WARN("revert scan iterator failed", K(ret));
|
||||||
}
|
}
|
||||||
//release the memory hold by local index lookup op
|
//release the memory hold by local index lookup op
|
||||||
|
|
||||||
rowkey_iter_ = NULL;
|
rowkey_iter_ = NULL;
|
||||||
lookup_iter_ = NULL;
|
lookup_iter_ = NULL;
|
||||||
scan_param_.destroy_schema_guard();
|
scan_param_.destroy_schema_guard();
|
||||||
|
|||||||
@ -39,7 +39,8 @@ int ObGroupResultRows::init(const common::ObIArray<ObExpr *> &exprs,
|
|||||||
reuse_alloc_ = new(reuse_alloc_buf_) common::ObArenaAllocator();
|
reuse_alloc_ = new(reuse_alloc_buf_) common::ObArenaAllocator();
|
||||||
reuse_alloc_->set_attr(attr);
|
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_) {
|
if (NULL == rows_) {
|
||||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||||
LOG_WARN("fail to alloc memory", K(max_size), K(ret));
|
LOG_WARN("fail to alloc memory", K(max_size), K(ret));
|
||||||
|
|||||||
Reference in New Issue
Block a user