Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0b62ccf5
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看板
提交
0b62ccf5
编写于
3月 04, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more TDB
上级
c479c85a
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
72 addition
and
76 deletion
+72
-76
source/libs/tdb/src/db/tdbBtree.c
source/libs/tdb/src/db/tdbBtree.c
+70
-34
source/libs/tdb/src/db/tdbPager.c
source/libs/tdb/src/db/tdbPager.c
+0
-39
source/libs/tdb/src/inc/tdbBtree.h
source/libs/tdb/src/inc/tdbBtree.h
+1
-1
source/libs/tdb/src/inc/tdbPager.h
source/libs/tdb/src/inc/tdbPager.h
+0
-1
source/libs/tdb/test/tdbTest.cpp
source/libs/tdb/test/tdbTest.cpp
+1
-1
未找到文件。
source/libs/tdb/src/db/tdbBtree.c
浏览文件 @
0b62ccf5
...
...
@@ -50,7 +50,6 @@ typedef struct {
static
int
tdbBtCursorMoveTo
(
SBtCursor
*
pCur
,
const
void
*
pKey
,
int
kLen
);
static
int
tdbEncodeLength
(
u8
*
pBuf
,
uint32_t
len
);
static
int
tdbBtCursorMoveToRoot
(
SBtCursor
*
pCur
);
static
int
tdbCompareKeyAndCell
(
const
void
*
pKey
,
int
kLen
,
const
void
*
pCell
);
static
int
tdbDefaultKeyCmprFn
(
const
void
*
pKey1
,
int
keyLen1
,
const
void
*
pKey2
,
int
keyLen2
);
static
int
tdbBtreeOpenImpl
(
SBTree
*
pBt
);
...
...
@@ -114,7 +113,7 @@ int tdbBtreeCursor(SBtCursor *pCur, SBTree *pBt) {
pCur
->
pBt
=
pBt
;
pCur
->
iPage
=
-
1
;
pCur
->
pPage
=
NULL
;
pCur
->
idx
=
0
;
pCur
->
idx
=
-
1
;
return
0
;
}
...
...
@@ -129,44 +128,81 @@ int tdbBtCursorInsert(SBtCursor *pCur, const void *pKey, int kLen, const void *p
return
-
1
;
}
if
(
pCur
->
idx
==
-
1
)
{
ASSERT
(
pCur
->
pPage
->
pPageHdr
->
nCells
==
0
);
// TODO: insert the K-V pair to idx 0
}
return
0
;
}
static
int
tdbBtCursorMoveTo
(
SBtCursor
*
pCur
,
const
void
*
pKey
,
int
kLen
)
{
int
ret
;
void
*
pCell
;
int
ret
;
SBTree
*
pBt
;
SPager
*
pPager
;
// ret = tdbBtCursorMoveToRoot(pCur);
// if (ret < 0) {
// return -1;
// }
pBt
=
pCur
->
pBt
;
pPager
=
pBt
->
pPager
;
// if (pCur->pPage->pHdr->nCells == 0) {
// // Tree is empty
// } else {
// for (;;) {
// int lidx, ridx, midx, c;
// pBtPage = pCur->pPage;
// lidx = 0;
// ridx = pBtPage->pHdr->nCells - 1;
// while (lidx <= ridx) {
// midx = (lidx + ridx) >> 1;
// pCell = (void *)(pBtPage->aData + pBtPage->aCellIdx[midx]);
// c = tdbCompareKeyAndCell(pKey, kLen, pCell);
// if (c == 0) {
// break;
// } else if (c < 0) {
// lidx = lidx + 1;
// } else {
// ridx = ridx - 1;
// }
// }
// }
// /* code */
// }
if
(
pCur
->
iPage
<
0
)
{
ASSERT
(
pCur
->
iPage
==
-
1
);
ASSERT
(
pCur
->
idx
==
-
1
);
// Move from the root
ret
=
tdbPagerFetchPage
(
pPager
,
pBt
->
root
,
&
(
pCur
->
pPage
),
tdbBtreeInitPage
,
pBt
);
if
(
ret
<
0
)
{
ASSERT
(
0
);
return
-
1
;
}
pCur
->
iPage
=
0
;
if
(
pCur
->
pPage
->
pPageHdr
->
nCells
==
0
)
{
// Current page is empty
ASSERT
(
TDB_FLAG_IS
(
pCur
->
pPage
->
pPageHdr
->
flags
,
TDB_BTREE_ROOT
|
TDB_BTREE_LEAF
));
return
0
;
}
// Search from root page down to leaf
{
// TODO
ASSERT
(
0
);
// ret = tdbBtCursorMoveToRoot(pCur);
// if (ret < 0) {
// return -1;
// }
// if (pCur->pPage->pHdr->nCells == 0) {
// // Tree is empty
// } else {
// for (;;) {
// int lidx, ridx, midx, c;
// pBtPage = pCur->pPage;
// lidx = 0;
// ridx = pBtPage->pHdr->nCells - 1;
// while (lidx <= ridx) {
// midx = (lidx + ridx) >> 1;
// pCell = (void *)(pBtPage->aData + pBtPage->aCellIdx[midx]);
// c = tdbCompareKeyAndCell(pKey, kLen, pCell);
// if (c == 0) {
// break;
// } else if (c < 0) {
// lidx = lidx + 1;
// } else {
// ridx = ridx - 1;
// }
// }
// }
// /* code */
// }
}
}
else
{
// TODO: Move the cursor from a some position instead of a clear state
}
return
0
;
}
...
...
source/libs/tdb/src/db/tdbPager.c
浏览文件 @
0b62ccf5
...
...
@@ -130,45 +130,6 @@ int tdbPagerOpenDB(SPager *pPager, SPgno *ppgno, bool toCreate) {
return
0
;
}
SPage
*
tdbPagerGet
(
SPager
*
pPager
,
SPgno
pgno
,
bool
toLoad
)
{
SPgid
pgid
;
SPage
*
pPage
;
int
ret
;
memcpy
(
pgid
.
fileid
,
pPager
->
fid
,
TDB_FILE_ID_LEN
);
pgid
.
pgno
=
pgno
;
// Get page frame from the SPCache
pPage
=
tdbPCacheFetch
(
pPager
->
pCache
,
&
pgid
,
1
);
if
(
pPage
==
NULL
)
{
// TODO: handle error
return
NULL
;
}
tdbPCacheFetchFinish
(
pPager
->
pCache
,
pPage
);
// Zero the page or load page content from backend
// according to the options
if
(
pPage
->
pPager
==
NULL
||
!
toLoad
)
{
if
(
!
toLoad
||
pgno
>=
pPager
->
dbFileSize
)
{
memset
(
pPage
->
pData
,
0
,
pPager
->
pageSize
);
}
else
{
ret
=
tdbPagerReadPage
(
pPager
,
pPage
);
if
(
ret
<
0
)
{
// TODO: Need to drop the page
return
NULL
;
}
}
if
(
pPage
->
pPager
)
{
ASSERT
(
pPage
->
pPager
==
pPager
);
}
else
{
pPage
->
pPager
=
pPager
;
}
}
return
pPage
;
}
int
tdbPagerWrite
(
SPager
*
pPager
,
SPage
*
pPage
)
{
int
ret
;
...
...
source/libs/tdb/src/inc/tdbBtree.h
浏览文件 @
0b62ccf5
...
...
@@ -27,7 +27,7 @@ struct SBtCursor {
SBTree
*
pBt
;
i8
iPage
;
SPage
*
pPage
;
u16
idx
;
int
idx
;
u16
idxStack
[
BTREE_MAX_DEPTH
+
1
];
SPage
*
pgStack
[
BTREE_MAX_DEPTH
+
1
];
void
*
pBuf
;
...
...
source/libs/tdb/src/inc/tdbPager.h
浏览文件 @
0b62ccf5
...
...
@@ -23,7 +23,6 @@ extern "C" {
int
tdbPagerOpen
(
SPCache
*
pCache
,
const
char
*
fileName
,
SPager
**
ppPager
);
int
tdbPagerClose
(
SPager
*
pPager
);
int
tdbPagerOpenDB
(
SPager
*
pPager
,
SPgno
*
ppgno
,
bool
toCreate
);
SPage
*
tdbPagerGet
(
SPager
*
pPager
,
SPgno
pgno
,
bool
toLoad
);
int
tdbPagerWrite
(
SPager
*
pPager
,
SPage
*
pPage
);
int
tdbPagerBegin
(
SPager
*
pPager
);
int
tdbPagerCommit
(
SPager
*
pPager
);
...
...
source/libs/tdb/test/tdbTest.cpp
浏览文件 @
0b62ccf5
...
...
@@ -16,7 +16,7 @@ TEST(tdb_test, simple_test) {
GTEST_ASSERT_EQ
(
ret
,
0
);
// // Insert some data
ret
=
tdbDbInsert
(
pDb
,
"
1"
,
1
,
"world"
,
5
);
ret
=
tdbDbInsert
(
pDb
,
"
key1"
,
4
,
"value1"
,
6
);
GTEST_ASSERT_EQ
(
ret
,
0
);
ret
=
tdbDbDrop
(
pDb
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录