Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
oceanbase
oceanbase
提交
dddbd9dd
O
oceanbase
项目概览
oceanbase
/
oceanbase
大约 1 年 前同步成功
通知
261
Star
6084
Fork
1301
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
dddbd9dd
编写于
2月 09, 2023
作者:
H
Handora
提交者:
ob-robot
2月 09, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
remove big gap tag of btree and fix memory leak of macro block meta
Co-authored-by:
N
simonjoylet
<
simonjoylet@gmail.com
>
上级
6bb75960
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
11 addition
and
31 deletion
+11
-31
src/storage/ddl/ob_tablet_ddl_kv.cpp
src/storage/ddl/ob_tablet_ddl_kv.cpp
+9
-0
src/storage/memtable/mvcc/ob_keybtree.cpp
src/storage/memtable/mvcc/ob_keybtree.cpp
+0
-27
src/storage/memtable/mvcc/ob_keybtree_deps.h
src/storage/memtable/mvcc/ob_keybtree_deps.h
+0
-1
src/storage/memtable/mvcc/ob_query_engine.h
src/storage/memtable/mvcc/ob_query_engine.h
+2
-3
未找到文件。
src/storage/ddl/ob_tablet_ddl_kv.cpp
浏览文件 @
dddbd9dd
...
...
@@ -158,6 +158,12 @@ void ObBlockMetaTree::destroy()
macro_blocks_
.
reset
();
block_tree_
.
destroy
();
data_desc_
.
reset
();
for
(
int64_t
i
=
0
;
i
<
sorted_rowkeys_
.
count
();
++
i
)
{
const
ObDataMacroBlockMeta
*
cur_meta
=
sorted_rowkeys_
.
at
(
i
).
block_meta_
;
if
(
OB_NOT_NULL
(
cur_meta
))
{
cur_meta
->~
ObDataMacroBlockMeta
();
}
}
sorted_rowkeys_
.
reset
();
tree_allocator_
.
reset
();
arena_
.
reset
();
...
...
@@ -216,6 +222,9 @@ int ObBlockMetaTree::build_sorted_rowkeys()
}
else
if
(
OB_ISNULL
(
block_meta
))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"block_meta is null"
,
K
(
ret
),
KP
(
block_meta
));
}
else
if
(((
uint64_t
)(
block_meta
)
&
7ULL
)
!=
0
)
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_ERROR
(
"invalid btree value"
,
K
(
ret
),
KP
(
block_meta
));
}
else
{
IndexItem
cur_item
(
rowkey_wrapper
.
rowkey_
,
block_meta
);
cur_item
.
header_
.
version_
=
ObIndexBlockRowHeader
::
INDEX_BLOCK_HEADER_V1
;
...
...
src/storage/memtable/mvcc/ob_keybtree.cpp
浏览文件 @
dddbd9dd
...
...
@@ -341,9 +341,6 @@ int ScanHandle<BtreeKey, BtreeVal>::get(BtreeKey &key, BtreeVal &val, bool is_ba
key
=
leaf
->
get_key
(
pos
,
index
);
val
=
leaf
->
get_val_with_tag
(
pos
,
version_
,
index
);
last_key
=
is_backward
?
&
leaf
->
get_key
(
0
,
index
)
:
&
leaf
->
get_key
(
leaf
->
size
(
index
)
-
1
,
index
);
if
(
maybe_big_gap
(
is_backward
))
{
val
=
(
BtreeVal
)((
uint64_t
)
val
|
2UL
);
}
}
return
ret
;
}
...
...
@@ -457,30 +454,6 @@ int ScanHandle<BtreeKey, BtreeVal>::find_path(BtreeNode *root, BtreeKey key, int
return
ret
;
}
template
<
typename
BtreeKey
,
typename
BtreeVal
>
bool
ScanHandle
<
BtreeKey
,
BtreeVal
>::
maybe_big_gap
(
bool
is_backward
)
{
bool
ret
=
false
;
BtreeNode
*
node
=
nullptr
;
int
pos
=
0
;
MultibitSet
*
index
=
&
this
->
index_
;
if
(
0
==
path_
.
top_k
(
3
,
node
,
pos
))
{
if
(
is_backward
)
{
if
(
--
pos
>=
0
)
{
ret
=
node
->
get_tag
(
pos
,
index
);
}
else
{
ret
=
true
;
}
}
else
{
if
(
++
pos
<
node
->
size
(
index
))
{
ret
=
node
->
get_tag
(
pos
,
index
);
}
else
{
ret
=
true
;
}
}
}
return
ret
;
}
template
<
typename
BtreeKey
,
typename
BtreeVal
>
int
ScanHandle
<
BtreeKey
,
BtreeVal
>::
scan_forward
(
const
int64_t
level
)
{
int
ret
=
OB_SUCCESS
;
...
...
src/storage/memtable/mvcc/ob_keybtree_deps.h
浏览文件 @
dddbd9dd
...
...
@@ -447,7 +447,6 @@ public:
BtreeKey
*&
last_key
,
int64_t
&
gap_size
);
int
pop_level_node
(
const
int64_t
level
);
int
find_path
(
BtreeNode
*
root
,
BtreeKey
key
,
int64_t
version
);
bool
maybe_big_gap
(
bool
is_backward
);
int
scan_forward
(
const
int64_t
level
);
int
scan_backward
(
const
int64_t
level
);
int
scan_forward
(
bool
skip_inactive
=
false
,
int64_t
*
skip_cnt
=
NULL
);
...
...
src/storage/memtable/mvcc/ob_query_engine.h
浏览文件 @
dddbd9dd
...
...
@@ -89,10 +89,9 @@ public:
TRANS_LOG
(
WARN
,
"get_next from keybtree fail"
,
"ret"
,
ret
,
"value"
,
value_
);
}
}
else
{
// IN_GAP & BIG_GAP_HINT
key_
.
encode
(
key_wrapper
.
get_rowkey
());
iter_flag_
=
(
uint8_t
)((
uint64_t
)
value_
&
3UL
);
value_
=
(
ObMvccRow
*
)((
uint64_t
)
value_
&
~
3UL
)
;
BTREE_ASSERT
(((
uint64_t
)
value_
&
7ULL
)
==
0
);
iter_flag_
=
0
;
if
(
OB_ISNULL
(
value_
))
{
ret
=
common
::
OB_ITER_END
;
}
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录