fix memory leak caused by ObSolidifiedVarsContext::local_tz_wrap_
This commit is contained in:
@ -766,33 +766,6 @@ int ObSolidifiedVarsContext::get_local_tz_info(const sql::ObBasicSessionInfo *se
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
OB_DEF_SERIALIZE(ObSolidifiedVarsContext)
|
|
||||||
{
|
|
||||||
int ret = OB_SUCCESS;
|
|
||||||
if (NULL != local_session_var_) {
|
|
||||||
OB_UNIS_ENCODE(*local_session_var_);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
OB_DEF_SERIALIZE_SIZE(ObSolidifiedVarsContext)
|
|
||||||
{
|
|
||||||
int64_t len = 0;
|
|
||||||
if (NULL != local_session_var_) {
|
|
||||||
OB_UNIS_ADD_LEN(*local_session_var_);
|
|
||||||
}
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
OB_DEF_DESERIALIZE(ObSolidifiedVarsContext)
|
|
||||||
{
|
|
||||||
int ret = OB_SUCCESS;
|
|
||||||
if (NULL != local_session_var_) {
|
|
||||||
OB_UNIS_DECODE(*local_session_var_);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
DEF_TO_STRING(ObSolidifiedVarsContext)
|
DEF_TO_STRING(ObSolidifiedVarsContext)
|
||||||
{
|
{
|
||||||
int64_t pos = 0;
|
int64_t pos = 0;
|
||||||
|
@ -228,7 +228,6 @@ int calc_##tritype##_expr(const ObExpr &expr, ObEvalCtx &ctx, \
|
|||||||
|
|
||||||
class ObSolidifiedVarsContext
|
class ObSolidifiedVarsContext
|
||||||
{
|
{
|
||||||
OB_UNIS_VERSION(1);
|
|
||||||
public:
|
public:
|
||||||
ObSolidifiedVarsContext() :
|
ObSolidifiedVarsContext() :
|
||||||
local_session_var_(NULL),
|
local_session_var_(NULL),
|
||||||
@ -242,8 +241,10 @@ public:
|
|||||||
local_tz_wrap_(NULL)
|
local_tz_wrap_(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
virtual ~ObSolidifiedVarsContext() {
|
virtual ~ObSolidifiedVarsContext()
|
||||||
|
{
|
||||||
if (NULL != local_tz_wrap_ && NULL != alloc_) {
|
if (NULL != local_tz_wrap_ && NULL != alloc_) {
|
||||||
|
local_tz_wrap_->~ObTimeZoneInfoWrap();
|
||||||
alloc_->free(local_tz_wrap_);
|
alloc_->free(local_tz_wrap_);
|
||||||
local_tz_wrap_ = NULL;
|
local_tz_wrap_ = NULL;
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ ObExecContext::~ObExecContext()
|
|||||||
phy_plan_ctx_->~ObPhysicalPlanCtx();
|
phy_plan_ctx_->~ObPhysicalPlanCtx();
|
||||||
} else {
|
} else {
|
||||||
// free subschema map memory
|
// free subschema map memory
|
||||||
phy_plan_ctx_->get_subschema_ctx().destroy();
|
phy_plan_ctx_->destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
phy_plan_ctx_ = NULL;
|
phy_plan_ctx_ = NULL;
|
||||||
|
@ -129,7 +129,7 @@ ObPhysicalPlanCtx::ObPhysicalPlanCtx(common::ObIAllocator &allocator)
|
|||||||
|
|
||||||
ObPhysicalPlanCtx::~ObPhysicalPlanCtx()
|
ObPhysicalPlanCtx::~ObPhysicalPlanCtx()
|
||||||
{
|
{
|
||||||
subschema_ctx_.destroy();
|
destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObPhysicalPlanCtx::restore_param_store(const int64_t original_param_cnt)
|
void ObPhysicalPlanCtx::restore_param_store(const int64_t original_param_cnt)
|
||||||
|
@ -97,6 +97,13 @@ class ObPhysicalPlanCtx
|
|||||||
public:
|
public:
|
||||||
explicit ObPhysicalPlanCtx(common::ObIAllocator &allocator);
|
explicit ObPhysicalPlanCtx(common::ObIAllocator &allocator);
|
||||||
virtual ~ObPhysicalPlanCtx();
|
virtual ~ObPhysicalPlanCtx();
|
||||||
|
void destroy()
|
||||||
|
{
|
||||||
|
// Member variables that need to request additional memory
|
||||||
|
// with another allocator should call destroy here.
|
||||||
|
subschema_ctx_.destroy();
|
||||||
|
all_local_session_vars_.destroy();
|
||||||
|
}
|
||||||
inline void set_tenant_id(uint64_t tenant_id) { tenant_id_ = tenant_id; }
|
inline void set_tenant_id(uint64_t tenant_id) { tenant_id_ = tenant_id; }
|
||||||
inline void set_show_seed(bool show_seed) { is_show_seed_ = show_seed; }
|
inline void set_show_seed(bool show_seed) { is_show_seed_ = show_seed; }
|
||||||
inline uint64_t get_tenant_id() { return tenant_id_; }
|
inline uint64_t get_tenant_id() { return tenant_id_; }
|
||||||
|
Reference in New Issue
Block a user