fix bug: memory leak happened on *transf_param_ in ObTransformerTempTable
This commit is contained in:
@ -34,11 +34,9 @@ namespace sql
|
|||||||
|
|
||||||
ObTransformTempTable::~ObTransformTempTable()
|
ObTransformTempTable::~ObTransformTempTable()
|
||||||
{
|
{
|
||||||
for (int64_t i = 0; NULL != trans_param_ && i < trans_param_->materialize_stmts_.count(); ++i) {
|
if (OB_NOT_NULL(trans_param_)) {
|
||||||
if (NULL != trans_param_->materialize_stmts_.at(i)) {
|
trans_param_->~TempTableTransParam();
|
||||||
trans_param_->materialize_stmts_.at(i)->~MaterializeStmts();
|
trans_param_ = NULL;
|
||||||
trans_param_->materialize_stmts_.at(i) = NULL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -101,6 +101,15 @@ public:
|
|||||||
:trans_stmt_(NULL),
|
:trans_stmt_(NULL),
|
||||||
trans_type_(T_MATERIALIZE)
|
trans_type_(T_MATERIALIZE)
|
||||||
{}
|
{}
|
||||||
|
virtual ~TempTableTransParam()
|
||||||
|
{
|
||||||
|
for (int64_t i = 0; i < materialize_stmts_.count(); ++i) {
|
||||||
|
if (OB_NOT_NULL(materialize_stmts_.at(i))) {
|
||||||
|
materialize_stmts_.at(i)->~MaterializeStmts();
|
||||||
|
materialize_stmts_.at(i) = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Ob2DArray<MaterializeStmts *> materialize_stmts_;
|
Ob2DArray<MaterializeStmts *> materialize_stmts_;
|
||||||
ObSelectStmt *trans_stmt_;
|
ObSelectStmt *trans_stmt_;
|
||||||
ObItemType trans_type_;
|
ObItemType trans_type_;
|
||||||
|
|||||||
Reference in New Issue
Block a user