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
	 obdev
					obdev