fix memleak caused by not releasing resources in inner_close() of OSG
This commit is contained in:
@ -88,26 +88,23 @@ ObOptimizerStatsGatheringOp::ObOptimizerStatsGatheringOp(ObExecContext &exec_ctx
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObOptimizerStatsGatheringOp::destroy() {
|
void ObOptimizerStatsGatheringOp::destroy()
|
||||||
table_stats_map_.destroy();
|
{
|
||||||
column_stats_map_.destroy();
|
reset();
|
||||||
part_map_.destroy();
|
|
||||||
arena_.reset();
|
|
||||||
ObOperator::destroy();
|
ObOperator::destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObOptimizerStatsGatheringOp::reset() {
|
void ObOptimizerStatsGatheringOp::reset()
|
||||||
}
|
{
|
||||||
|
|
||||||
void ObOptimizerStatsGatheringOp::reuse_stats() {
|
|
||||||
FOREACH(it, column_stats_map_) {
|
FOREACH(it, column_stats_map_) {
|
||||||
if (OB_NOT_NULL(it->second)) {
|
if (OB_NOT_NULL(it->second)) {
|
||||||
it->second->reset();
|
it->second->~ObOptColumnStat();
|
||||||
it->second = NULL;
|
it->second = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
table_stats_map_.reuse();
|
table_stats_map_.destroy();
|
||||||
column_stats_map_.reuse();
|
column_stats_map_.destroy();
|
||||||
|
part_map_.destroy();
|
||||||
arena_.reset();
|
arena_.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +189,6 @@ int ObOptimizerStatsGatheringOp::inner_get_next_row()
|
|||||||
LOG_WARN("failed to call msg end", K(ret));
|
LOG_WARN("failed to call msg end", K(ret));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reuse_stats();
|
|
||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
ret = OB_ITER_END;
|
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));
|
LOG_WARN("failed to call msg end", K(ret));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reuse_stats();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -106,7 +106,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static const int64_t DEFAULT_HASH_MAP_BUCKETS_COUNT = 100;
|
static const int64_t DEFAULT_HASH_MAP_BUCKETS_COUNT = 100;
|
||||||
void reuse_stats();
|
|
||||||
inline TabStatIndMap& get_tab_stat_map() { return table_stats_map_;};
|
inline TabStatIndMap& get_tab_stat_map() { return table_stats_map_;};
|
||||||
inline ColStatIndMap& get_col_stat_map() { return column_stats_map_;};
|
inline ColStatIndMap& get_col_stat_map() { return column_stats_map_;};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user