[CP] [to #51586221] fix ObUserDefinedType::destruct_obj with set_null flag
This commit is contained in:
parent
9b01ed202d
commit
642ee3ef30
@ -2502,7 +2502,7 @@ int ObPLExecState::set_var(int64_t var_idx, const ObObjParam& value)
|
||||
&& params->at(var_idx).is_pl_extend()
|
||||
&& params->at(var_idx).get_ext() != 0
|
||||
&& params->at(var_idx).get_meta().get_extend_type() != PL_REF_CURSOR_TYPE) {
|
||||
OZ (ObUserDefinedType::destruct_obj(params->at(var_idx), ctx_.exec_ctx_->get_my_session()));
|
||||
OZ (ObUserDefinedType::destruct_obj(params->at(var_idx), ctx_.exec_ctx_->get_my_session(), false));
|
||||
}
|
||||
|
||||
if (OB_FAIL(ret)) {
|
||||
|
@ -211,7 +211,7 @@ int ObPLPackageState::set_package_var_val(const int64_t var_idx, const ObObj &va
|
||||
&& types_.at(var_idx) != PL_CURSOR_TYPE
|
||||
&& types_.at(var_idx) != PL_REF_CURSOR_TYPE) {
|
||||
CK (vars_.at(var_idx).get_ext() != 0);
|
||||
OZ (ObUserDefinedType::destruct_obj(vars_.at(var_idx)));
|
||||
OZ (ObUserDefinedType::destruct_obj(vars_.at(var_idx), NULL, false));
|
||||
} else {
|
||||
vars_.at(var_idx) = value;
|
||||
}
|
||||
|
@ -312,7 +312,7 @@ int ObUserDefinedType::deep_copy_obj(
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObUserDefinedType::destruct_obj(ObObj &src, ObSQLSessionInfo *session)
|
||||
int ObUserDefinedType::destruct_obj(ObObj &src, ObSQLSessionInfo *session, bool set_null)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -337,7 +337,7 @@ int ObUserDefinedType::destruct_obj(ObObj &src, ObSQLSessionInfo *session)
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < record->get_count(); ++i) {
|
||||
OZ (destruct_obj(record->get_element()[i], session));
|
||||
}
|
||||
OX (record->set_null());
|
||||
OX (set_null ? src.set_null() : record->set_null());
|
||||
}
|
||||
break;
|
||||
#ifdef OB_BUILD_ORACLE_PL
|
||||
@ -367,7 +367,7 @@ int ObUserDefinedType::destruct_obj(ObObj &src, ObSQLSessionInfo *session)
|
||||
collection->set_count(-1);
|
||||
collection->set_first(OB_INVALID_INDEX);
|
||||
collection->set_last(OB_INVALID_INDEX);
|
||||
collection->set_null();
|
||||
set_null ? src.set_null() : collection->set_null();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -143,7 +143,7 @@ public:
|
||||
|
||||
static int deep_copy_obj(
|
||||
ObIAllocator &allocator, const ObObj &src, ObObj &dst, bool need_new_allocator = true, bool ignore_del_element = false);
|
||||
static int destruct_obj(ObObj &src, sql::ObSQLSessionInfo *session = NULL);
|
||||
static int destruct_obj(ObObj &src, sql::ObSQLSessionInfo *session = NULL, bool set_null = true);
|
||||
static int serialize_obj(const ObObj &obj, char* buf, const int64_t len, int64_t& pos);
|
||||
static int deserialize_obj(ObObj &obj, const char* buf, const int64_t len, int64_t& pos);
|
||||
static int64_t get_serialize_obj_size(const ObObj &obj);
|
||||
|
Loading…
x
Reference in New Issue
Block a user