Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
df12ae0d
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
df12ae0d
编写于
3月 22, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more TDB
上级
f3c10f88
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
66 addition
and
15 deletion
+66
-15
source/libs/tdb/src/db/tdbBtree.c
source/libs/tdb/src/db/tdbBtree.c
+48
-2
source/libs/tdb/src/db/tdbPCache.c
source/libs/tdb/src/db/tdbPCache.c
+1
-13
source/libs/tdb/src/inc/tdbUtil.h
source/libs/tdb/src/inc/tdbUtil.h
+10
-0
source/libs/tdb/src/page/tdbPage.c
source/libs/tdb/src/page/tdbPage.c
+7
-0
未找到文件。
source/libs/tdb/src/db/tdbBtree.c
浏览文件 @
df12ae0d
...
...
@@ -598,10 +598,56 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx) {
}
}
}
// TODO: sort the page according to the page number
}
{
// Do the actual redistribute
{
// Do the actual cell distribution
SPage
*
pTPage
[
2
];
int
tPage
,
tIdx
,
iOld
;
SCell
*
pCell
;
int
szCell
;
SBtreeInitPageArg
iarg
=
{.
flags
=
TDB_BTREE_PAGE_GET_FLAGS
(
pOlds
[
0
]),
.
pBt
=
pBt
};
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
ret
=
tdbPageCreate
(
pOlds
[
0
]
->
pageSize
,
&
pTPage
[
i
],
NULL
,
NULL
);
if
(
ret
<
0
)
{
ASSERT
(
0
);
}
}
tPage
=
0
;
tIdx
=
0
;
iOld
=
0
;
tdbBtreeZeroPage
(
pTPage
[
tPage
],
&
iarg
);
tdbPageCopy
(
pOlds
[
iOld
++
],
pTPage
[
tPage
]);
for
(
int
iNew
=
0
;
iNew
<
nNews
;
iNew
++
)
{
// fill the iNew page
tdbBtreeZeroPage
(
pNews
[
iNew
],
&
iarg
);
for
(
int
iCell
=
0
;
iCell
<
infoNews
[
iNew
].
cnt
;
iCell
++
)
{
while
(
tIdx
>=
TDB_PAGE_TOTAL_CELLS
(
pTPage
[
tPage
]))
{
tPage
=
(
tPage
+
1
)
%
2
;
tIdx
=
0
;
tdbBtreeZeroPage
(
pTPage
[
tPage
],
&
iarg
);
tdbPageCopy
(
pOlds
[
iOld
++
],
pTPage
[
tPage
]);
}
pCell
=
tdbPageGetCell
(
pTPage
[
tPage
],
tIdx
);
szCell
=
tdbBtreeCellSize
(
pTPage
[
tPage
],
pCell
);
tdbPageInsertCell
(
pNews
[
iNew
],
iCell
,
pCell
,
szCell
);
tIdx
++
;
}
}
for
(
int
i
=
0
;
i
<
2
;
i
++
)
{
tdbPageDestroy
(
pTPage
[
i
],
NULL
,
NULL
);
}
}
return
0
;
...
...
source/libs/tdb/src/db/tdbPCache.c
浏览文件 @
df12ae0d
...
...
@@ -57,8 +57,6 @@ static void tdbPCachePinPage(SPage *pPage);
static
void
tdbPCacheRemovePageFromHash
(
SPage
*
pPage
);
static
void
tdbPCacheAddPageToHash
(
SPage
*
pPage
);
static
void
tdbPCacheUnpinPage
(
SPage
*
pPage
);
static
void
*
tdbOsMalloc
(
void
*
arg
,
size_t
size
);
static
void
tdbOsFree
(
void
*
arg
,
void
*
ptr
);
int
tdbPCacheOpen
(
int
pageSize
,
int
cacheSize
,
SPCache
**
ppCache
)
{
SPCache
*
pCache
;
...
...
@@ -257,7 +255,7 @@ static int tdbPCacheOpenImpl(SPCache *pCache) {
pCache
->
nFree
=
0
;
pCache
->
pFree
=
NULL
;
for
(
int
i
=
0
;
i
<
pCache
->
cacheSize
;
i
++
)
{
ret
=
tdbPageCreate
(
pCache
->
pageSize
,
&
pPage
,
tdbOsMalloc
,
NULL
);
ret
=
tdbPageCreate
(
pCache
->
pageSize
,
&
pPage
,
NULL
,
NULL
);
if
(
ret
<
0
)
{
// TODO: handle error
return
-
1
;
...
...
@@ -297,13 +295,3 @@ static int tdbPCacheOpenImpl(SPCache *pCache) {
}
int
tdbPCacheGetPageSize
(
SPCache
*
pCache
)
{
return
pCache
->
pageSize
;
}
static
void
*
tdbOsMalloc
(
void
*
arg
,
size_t
size
)
{
void
*
ptr
;
ptr
=
malloc
(
size
);
return
ptr
;
}
static
void
tdbOsFree
(
void
*
arg
,
void
*
ptr
)
{
free
(
ptr
);
}
\ No newline at end of file
source/libs/tdb/src/inc/tdbUtil.h
浏览文件 @
df12ae0d
...
...
@@ -39,6 +39,16 @@ int tdbGetFileSize(const char *fname, int pgSize, SPgno *pSize);
int
tdbPRead
(
int
fd
,
void
*
pData
,
int
count
,
i64
offset
);
static
inline
void
*
tdbOsMalloc
(
void
*
arg
,
size_t
size
)
{
void
*
ptr
;
ptr
=
malloc
(
size
);
return
ptr
;
}
static
inline
void
tdbOsFree
(
void
*
arg
,
void
*
ptr
)
{
free
(
ptr
);
}
static
inline
int
tdbPutVarInt
(
u8
*
p
,
int
v
)
{
int
n
=
0
;
...
...
source/libs/tdb/src/page/tdbPage.c
浏览文件 @
df12ae0d
...
...
@@ -48,6 +48,9 @@ int tdbPageCreate(int pageSize, SPage **ppPage, void *(*xMalloc)(void *, size_t)
*
ppPage
=
NULL
;
size
=
pageSize
+
sizeof
(
*
pPage
);
if
(
xMalloc
==
NULL
)
{
xMalloc
=
tdbOsMalloc
;
}
ptr
=
(
u8
*
)((
*
xMalloc
)(
arg
,
size
));
if
(
pPage
==
NULL
)
{
...
...
@@ -73,6 +76,10 @@ int tdbPageCreate(int pageSize, SPage **ppPage, void *(*xMalloc)(void *, size_t)
int
tdbPageDestroy
(
SPage
*
pPage
,
void
(
*
xFree
)(
void
*
arg
,
void
*
ptr
),
void
*
arg
)
{
u8
*
ptr
;
if
(
!
xFree
)
{
xFree
=
tdbOsFree
;
}
ptr
=
pPage
->
pData
;
(
*
xFree
)(
arg
,
ptr
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录