fix memleak caused by not releasing resources in inner_close() of OSG

This commit is contained in:
Larry955
2023-04-13 07:04:30 +00:00
committed by ob-robot
parent 6fe3cf36b0
commit eaeca23f8e
2 changed files with 9 additions and 16 deletions

View File

@ -88,26 +88,23 @@ ObOptimizerStatsGatheringOp::ObOptimizerStatsGatheringOp(ObExecContext &exec_ctx
{
}
void ObOptimizerStatsGatheringOp::destroy() {
table_stats_map_.destroy();
column_stats_map_.destroy();
part_map_.destroy();
arena_.reset();
void ObOptimizerStatsGatheringOp::destroy()
{
reset();
ObOperator::destroy();
}
void ObOptimizerStatsGatheringOp::reset() {
}
void ObOptimizerStatsGatheringOp::reuse_stats() {
void ObOptimizerStatsGatheringOp::reset()
{
FOREACH(it, column_stats_map_) {
if (OB_NOT_NULL(it->second)) {
it->second->reset();
it->second->~ObOptColumnStat();
it->second = NULL;
}
}
table_stats_map_.reuse();
column_stats_map_.reuse();
table_stats_map_.destroy();
column_stats_map_.destroy();
part_map_.destroy();
arena_.reset();
}
@ -192,7 +189,6 @@ int ObOptimizerStatsGatheringOp::inner_get_next_row()
LOG_WARN("failed to call msg end", K(ret));
}
}
reuse_stats();
if (OB_SUCC(ret)) {
ret = OB_ITER_END;
}
@ -241,10 +237,8 @@ int ObOptimizerStatsGatheringOp::inner_get_next_batch(const int64_t max_row_cnt)
LOG_WARN("failed to call msg end", K(ret));
}
}
reuse_stats();
}
}
return ret;
}

View File

@ -106,7 +106,6 @@ public:
private:
static const int64_t DEFAULT_HASH_MAP_BUCKETS_COUNT = 100;
void reuse_stats();
inline TabStatIndMap& get_tab_stat_map() { return table_stats_map_;};
inline ColStatIndMap& get_col_stat_map() { return column_stats_map_;};