Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
大炮V587
oceanbase
提交
94d1826e
O
oceanbase
项目概览
大炮V587
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
94d1826e
编写于
3月 17, 2023
作者:
O
obdev
提交者:
ob-robot
3月 17, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[to #48444684] deleted element of collection deep copy
上级
68c52ce6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
18 addition
and
4 deletion
+18
-4
src/pl/ob_pl_allocator.cpp
src/pl/ob_pl_allocator.cpp
+2
-1
src/pl/ob_pl_user_type.cpp
src/pl/ob_pl_user_type.cpp
+16
-3
未找到文件。
src/pl/ob_pl_allocator.cpp
浏览文件 @
94d1826e
...
...
@@ -124,7 +124,8 @@ int ObPLPkgAllocator::copy_all_element_with_new_allocator(ObIAllocator *allocato
for
(
int64_t
i
=
0
;
OB_SUCC
(
ret
)
&&
i
<
vars
.
count
();
++
i
)
{
ObObj
dst
;
if
(
vars
.
at
(
i
).
is_pl_extend
()
&&
vars
.
at
(
i
).
get_meta
().
get_extend_type
()
!=
PL_CURSOR_TYPE
)
{
&&
vars
.
at
(
i
).
get_meta
().
get_extend_type
()
!=
PL_CURSOR_TYPE
&&
vars
.
at
(
i
).
get_meta
().
get_extend_type
()
!=
PL_REF_CURSOR_TYPE
)
{
OZ
(
pl
::
ObUserDefinedType
::
deep_copy_obj
(
*
allocator
,
vars
.
at
(
i
),
dst
,
true
));
OZ
(
pl
::
ObUserDefinedType
::
destruct_obj
(
vars
.
at
(
i
),
nullptr
));
}
else
{
...
...
src/pl/ob_pl_user_type.cpp
浏览文件 @
94d1826e
...
...
@@ -1391,7 +1391,6 @@ int ObPLComposite::deep_copy(ObPLComposite &src,
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
LOG_WARN
(
"allocate composite memory failed"
,
K
(
ret
));
}
LOG_INFO
(
"src size is: "
,
K
(
src
.
get_init_size
()),
K
(
src
));
OX
(
new
(
composite
)
ObPLRecord
(
src
.
get_id
(),
static_cast
<
ObPLRecord
&>
(
src
).
get_count
()));
}
else
{
OX
(
composite
=
static_cast
<
ObPLRecord
*>
(
dest
));
...
...
@@ -1728,8 +1727,16 @@ int ObPLCollection::deep_copy(ObPLCollection *src, ObIAllocator *allocator)
CK
(
OB_NOT_NULL
(
new_objs
=
reinterpret_cast
<
ObObj
*>
(
data
)));
CK
(
OB_NOT_NULL
(
old_objs
=
reinterpret_cast
<
ObObj
*>
(
src
->
get_data
())));
for
(
int64_t
i
=
0
;
OB_SUCC
(
ret
)
&&
i
<
src
->
get_count
();
++
i
)
{
ObObj
old_obj
=
old_objs
[
i
];
new
(
&
new_objs
[
i
])
ObObj
();
OZ
(
ObPLComposite
::
copy_element
(
old_objs
[
i
],
new_objs
[
i
],
*
coll_allocator
));
if
(
old_objs
[
i
].
is_invalid_type
()
&&
src
->
is_of_composite
())
{
old_obj
.
set_type
(
ObExtendType
);
CK
(
old_obj
.
is_pl_extend
());
}
OZ
(
ObPLComposite
::
copy_element
(
old_obj
,
new_objs
[
i
],
*
coll_allocator
));
if
(
old_objs
[
i
].
is_invalid_type
()
&&
src
->
is_of_composite
())
{
new_objs
[
i
].
set_type
(
ObMaxType
);
}
}
}
if
(
OB_SUCC
(
ret
))
{
...
...
@@ -1826,7 +1833,11 @@ int ObPLCollection::delete_collection_elem(int64_t index)
ObObj
*
obj
=
static_cast
<
ObObj
*>
(
get_data
());
// data的type设置为max表示被delete
if
(
index
<
get_count
())
{
obj
[
index
].
set_type
(
ObMaxType
);
if
(
OB_FAIL
(
ObUserDefinedType
::
destruct_obj
(
obj
[
index
],
NULL
)))
{
LOG_WARN
(
"failed to destruct obj"
,
K
(
ret
),
K
(
obj
[
index
]),
K
(
index
));
}
else
{
obj
[
index
].
set_type
(
ObMaxType
);
}
}
else
{
ret
=
OB_ARRAY_OUT_OF_RANGE
;
LOG_WARN
(
"type with step large than 1 is oversize"
,
K
(
index
),
K
(
get_count
()));
...
...
@@ -2022,6 +2033,8 @@ void ObPLCollection::print() const
OX
(
composite
->
print
());
}
else
if
(
obj
.
is_varchar_or_char
()
&&
obj
.
get_data_length
()
>
100
)
{
LOG_INFO
(
"ObPLCollection Data"
,
K
(
i
),
K
(
get_count
()),
K
(
"xxx...xxx"
));
}
else
if
(
obj
.
is_invalid_type
())
{
LOG_INFO
(
"ObPLCollection Data"
,
K
(
i
),
K
(
get_count
()),
K
(
"deleted element"
),
K
(
obj
));
}
else
{
LOG_INFO
(
"ObPLCollection Data"
,
K
(
i
),
K
(
get_count
()),
K
(
obj
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录