Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
cad19023
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
Star
22018
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看板
提交
cad19023
编写于
2月 25, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refact
上级
2d304989
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
62 addition
and
62 deletion
+62
-62
source/libs/tdb/src/db/tdbBtree.c
source/libs/tdb/src/db/tdbBtree.c
+8
-8
source/libs/tdb/src/db/tdbPCache.c
source/libs/tdb/src/db/tdbPCache.c
+32
-32
source/libs/tdb/src/db/tdbPFile.c
source/libs/tdb/src/db/tdbPFile.c
+5
-5
source/libs/tdb/src/inc/tdbPCache.h
source/libs/tdb/src/inc/tdbPCache.h
+11
-11
source/libs/tdb/src/inc/tdbPFile.h
source/libs/tdb/src/inc/tdbPFile.h
+6
-6
未找到文件。
source/libs/tdb/src/db/tdbBtree.c
浏览文件 @
cad19023
...
...
@@ -28,15 +28,15 @@ struct SBTree {
struct
SBtCursor
{
SBTree
*
pBt
;
i8
iPage
;
SMemPage
*
pPage
;
SMemPage
*
apPage
[
BTREE_MAX_DEPTH
+
1
];
//
SMemPage *pPage;
//
SMemPage *apPage[BTREE_MAX_DEPTH + 1];
};
typedef
struct
SMemPage
{
u8
isInit
;
u8
isLeaf
;
SPgno
pgno
;
}
SMemPage
;
//
typedef struct SMemPage {
//
u8 isInit;
//
u8 isLeaf;
//
SPgno pgno;
//
} SMemPage;
int
tdbBtreeOpen
(
SPgno
root
,
SBTree
**
ppBt
)
{
*
ppBt
=
NULL
;
...
...
@@ -63,7 +63,7 @@ int tdbBtreeCursorMoveTo(SBtCursor *pCur) {
static
int
tdbBtreeCursorMoveToRoot
(
SBtCursor
*
pCur
)
{
SPFile
*
pFile
;
SP
gHdr
*
pPage
;
SP
age
*
pPage
;
pFile
=
pCur
->
pBt
->
pFile
;
...
...
source/libs/tdb/src/db/tdbPCache.c
浏览文件 @
cad19023
...
...
@@ -20,15 +20,15 @@ struct SPCache {
int
extraSize
;
pthread_mutex_t
mutex
;
int
nFree
;
SP
gHdr
*
pFree
;
SP
age
*
pFree
;
int
nPage
;
int
nHash
;
SP
gHdr
**
pgHash
;
SP
age
**
pgHash
;
int
nRecyclable
;
SP
gHdr
lru
;
SP
age
lru
;
int
nDirty
;
SP
gHdr
*
pDirty
;
SP
gHdr
*
pDirtyTail
;
SP
age
*
pDirty
;
SP
age
*
pDirtyTail
;
};
#define PCACHE_PAGE_HASH(pPgid) \
...
...
@@ -38,21 +38,21 @@ struct SPCache {
})
#define PAGE_IS_PINNED(pPage) ((pPage)->pLruNext == NULL)
static
int
tdbPCacheOpenImpl
(
SPCache
*
pCache
);
static
void
tdbPCacheInitLock
(
SPCache
*
pCache
);
static
void
tdbPCacheClearLock
(
SPCache
*
pCache
);
static
void
tdbPCacheLock
(
SPCache
*
pCache
);
static
void
tdbPCacheUnlock
(
SPCache
*
pCache
);
static
bool
tdbPCacheLocked
(
SPCache
*
pCache
);
static
SP
gHdr
*
tdbPCacheFetchImpl
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
);
static
void
tdbPCachePinPage
(
SPgHdr
*
pPage
);
static
void
tdbPCacheRemovePageFromHash
(
SPgHdr
*
pPage
);
static
void
tdbPCacheAddPageToHash
(
SPgHdr
*
pPage
);
static
int
tdbPCacheOpenImpl
(
SPCache
*
pCache
);
static
void
tdbPCacheInitLock
(
SPCache
*
pCache
);
static
void
tdbPCacheClearLock
(
SPCache
*
pCache
);
static
void
tdbPCacheLock
(
SPCache
*
pCache
);
static
void
tdbPCacheUnlock
(
SPCache
*
pCache
);
static
bool
tdbPCacheLocked
(
SPCache
*
pCache
);
static
SP
age
*
tdbPCacheFetchImpl
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
);
static
void
tdbPCachePinPage
(
SPage
*
pPage
);
static
void
tdbPCacheRemovePageFromHash
(
SPage
*
pPage
);
static
void
tdbPCacheAddPageToHash
(
SPage
*
pPage
);
int
tdbPCacheOpen
(
int
pageSize
,
int
cacheSize
,
int
extraSize
,
SPCache
**
ppCache
)
{
SPCache
*
pCache
;
void
*
pPtr
;
SP
gHdr
*
pPgHdr
;
SP
age
*
pPgHdr
;
pCache
=
(
SPCache
*
)
calloc
(
1
,
sizeof
(
*
pCache
));
if
(
pCache
==
NULL
)
{
...
...
@@ -76,8 +76,8 @@ int tdbPCacheClose(SPCache *pCache) {
return
0
;
}
SP
gHdr
*
tdbPCacheFetch
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
)
{
SP
gHdr
*
pPage
;
SP
age
*
tdbPCacheFetch
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
)
{
SP
age
*
pPage
;
tdbPCacheLock
(
pCache
);
pPage
=
tdbPCacheFetchImpl
(
pCache
,
pPgid
,
alcNewPage
);
...
...
@@ -86,12 +86,12 @@ SPgHdr *tdbPCacheFetch(SPCache *pCache, const SPgid *pPgid, bool alcNewPage) {
return
pPage
;
}
void
tdbPCacheFetchFinish
(
SPCache
*
pCache
,
SP
gHdr
*
pPage
)
{
void
tdbPCacheFetchFinish
(
SPCache
*
pCache
,
SP
age
*
pPage
)
{
/* TODO */
pPage
->
nRef
++
;
// TODO: do we need atomic operation???
}
void
tdbPCacheRelease
(
SP
gHdr
*
pHdr
)
{
void
tdbPCacheRelease
(
SP
age
*
pHdr
)
{
// TODO
}
...
...
@@ -109,8 +109,8 @@ static bool tdbPCacheLocked(SPCache *pCache) {
return
true
;
}
static
SP
gHdr
*
tdbPCacheFetchImpl
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
)
{
SP
gHdr
*
pPage
;
static
SP
age
*
tdbPCacheFetchImpl
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
)
{
SP
age
*
pPage
;
// 1. Search the hash table
pPage
=
pCache
->
pgHash
[
PCACHE_PAGE_HASH
(
pPgid
)
%
pCache
->
nHash
];
...
...
@@ -157,7 +157,7 @@ static SPgHdr *tdbPCacheFetchImpl(SPCache *pCache, const SPgid *pPgid, bool alcN
return
pPage
;
}
static
void
tdbPCachePinPage
(
SP
gHdr
*
pPage
)
{
static
void
tdbPCachePinPage
(
SP
age
*
pPage
)
{
SPCache
*
pCache
;
pCache
=
pPage
->
pCache
;
...
...
@@ -170,9 +170,9 @@ static void tdbPCachePinPage(SPgHdr *pPage) {
}
}
static
void
tdbPCacheRemovePageFromHash
(
SP
gHdr
*
pPage
)
{
static
void
tdbPCacheRemovePageFromHash
(
SP
age
*
pPage
)
{
SPCache
*
pCache
;
SP
gHdr
**
ppPage
;
SP
age
**
ppPage
;
int
h
;
pCache
=
pPage
->
pCache
;
...
...
@@ -185,7 +185,7 @@ static void tdbPCacheRemovePageFromHash(SPgHdr *pPage) {
pCache
->
nPage
--
;
}
static
void
tdbPCacheAddPageToHash
(
SP
gHdr
*
pPage
)
{
static
void
tdbPCacheAddPageToHash
(
SP
age
*
pPage
)
{
SPCache
*
pCache
;
int
h
;
...
...
@@ -199,9 +199,9 @@ static void tdbPCacheAddPageToHash(SPgHdr *pPage) {
}
static
int
tdbPCacheOpenImpl
(
SPCache
*
pCache
)
{
SP
gHdr
*
pPage
;
u8
*
pPtr
;
int
tsize
;
SP
age
*
pPage
;
u8
*
pPtr
;
int
tsize
;
tdbPCacheInitLock
(
pCache
);
...
...
@@ -209,14 +209,14 @@ static int tdbPCacheOpenImpl(SPCache *pCache) {
pCache
->
nFree
=
0
;
pCache
->
pFree
=
NULL
;
for
(
int
i
=
0
;
i
<
pCache
->
cacheSize
;
i
++
)
{
tsize
=
pCache
->
pageSize
+
sizeof
(
SP
gHdr
)
+
pCache
->
extraSize
;
tsize
=
pCache
->
pageSize
+
sizeof
(
SP
age
)
+
pCache
->
extraSize
;
pPtr
=
(
u8
*
)
calloc
(
1
,
tsize
);
if
(
pPtr
==
NULL
)
{
// TODO
return
-
1
;
}
pPage
=
(
SP
gHdr
*
)(
&
(
pPtr
[
pCache
->
pageSize
]));
pPage
=
(
SP
age
*
)(
&
(
pPtr
[
pCache
->
pageSize
]));
pPage
->
pData
=
(
void
*
)
pPtr
;
pPage
->
pExtra
=
(
void
*
)(
&
(
pPage
[
1
]));
// pPage->pgid = 0;
...
...
@@ -235,7 +235,7 @@ static int tdbPCacheOpenImpl(SPCache *pCache) {
// Open the hash table
pCache
->
nPage
=
0
;
pCache
->
nHash
=
pCache
->
cacheSize
;
pCache
->
pgHash
=
(
SP
gHdr
**
)
calloc
(
pCache
->
nHash
,
sizeof
(
SPgHdr
*
));
pCache
->
pgHash
=
(
SP
age
**
)
calloc
(
pCache
->
nHash
,
sizeof
(
SPage
*
));
if
(
pCache
->
pgHash
==
NULL
)
{
// TODO
return
-
1
;
...
...
source/libs/tdb/src/db/tdbPFile.c
浏览文件 @
cad19023
...
...
@@ -27,7 +27,7 @@ struct SPFile {
SPgno
dbOrigSize
;
};
static
int
tdbPFileReadPage
(
SPFile
*
pFile
,
SP
gHdr
*
pPage
);
static
int
tdbPFileReadPage
(
SPFile
*
pFile
,
SP
age
*
pPage
);
int
tdbPFileOpen
(
SPCache
*
pCache
,
const
char
*
fileName
,
SPFile
**
ppFile
)
{
uint8_t
*
pPtr
;
...
...
@@ -73,9 +73,9 @@ int tdbPFileClose(SPFile *pFile) {
return
0
;
}
SP
gHdr
*
tdbPFileGet
(
SPFile
*
pFile
,
SPgno
pgno
)
{
SPgid
pgid
;
SP
gHdr
*
pPage
;
SP
age
*
tdbPFileGet
(
SPFile
*
pFile
,
SPgno
pgno
)
{
SPgid
pgid
;
SP
age
*
pPage
;
memcpy
(
pgid
.
fileid
,
pFile
->
fid
,
TDB_FILE_ID_LEN
);
pgid
.
pgno
=
pgno
;
...
...
@@ -120,7 +120,7 @@ int tdbPFileRollback(SPFile *pFile) {
return
0
;
}
static
int
tdbPFileReadPage
(
SPFile
*
pFile
,
SP
gHdr
*
pPage
)
{
static
int
tdbPFileReadPage
(
SPFile
*
pFile
,
SP
age
*
pPage
)
{
i64
offset
;
int
ret
;
...
...
source/libs/tdb/src/inc/tdbPCache.h
浏览文件 @
cad19023
...
...
@@ -21,9 +21,9 @@ extern "C" {
#endif
typedef
struct
SPCache
SPCache
;
typedef
struct
SP
gHdr
SPgHdr
;
typedef
struct
SP
age
SPage
;
struct
SP
gHdr
{
struct
SP
age
{
void
*
pData
;
void
*
pExtra
;
SPgid
pgid
;
...
...
@@ -32,17 +32,17 @@ struct SPgHdr {
u8
isLoad
;
i32
nRef
;
SPCache
*
pCache
;
SP
gHdr
*
pFreeNext
;
SP
gHdr
*
pHashNext
;
SP
gHdr
*
pLruNext
;
SP
gHdr
*
pLruPrev
;
SP
age
*
pFreeNext
;
SP
age
*
pHashNext
;
SP
age
*
pLruNext
;
SP
age
*
pLruPrev
;
};
int
tdbPCacheOpen
(
int
pageSize
,
int
cacheSize
,
int
extraSize
,
SPCache
**
ppCache
);
int
tdbPCacheClose
(
SPCache
*
pCache
);
SP
gHdr
*
tdbPCacheFetch
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
);
void
tdbPCacheFetchFinish
(
SPCache
*
pCache
,
SPgHdr
*
pPage
);
void
tdbPCacheRelease
(
SPgHdr
*
pHdr
);
int
tdbPCacheOpen
(
int
pageSize
,
int
cacheSize
,
int
extraSize
,
SPCache
**
ppCache
);
int
tdbPCacheClose
(
SPCache
*
pCache
);
SP
age
*
tdbPCacheFetch
(
SPCache
*
pCache
,
const
SPgid
*
pPgid
,
bool
alcNewPage
);
void
tdbPCacheFetchFinish
(
SPCache
*
pCache
,
SPage
*
pPage
);
void
tdbPCacheRelease
(
SPage
*
pHdr
);
#ifdef __cplusplus
}
...
...
source/libs/tdb/src/inc/tdbPFile.h
浏览文件 @
cad19023
...
...
@@ -22,12 +22,12 @@ extern "C" {
typedef
struct
SPFile
SPFile
;
int
tdbPFileOpen
(
SPCache
*
pCache
,
const
char
*
fileName
,
SPFile
**
ppFile
);
int
tdbPFileClose
(
SPFile
*
pFile
);
SP
gHdr
*
tdbPFileGet
(
SPFile
*
pFile
,
SPgno
pgno
);
int
tdbPFileBegin
(
SPFile
*
pFile
);
int
tdbPFileCommit
(
SPFile
*
pFile
);
int
tdbPFileRollback
(
SPFile
*
pFile
);
int
tdbPFileOpen
(
SPCache
*
pCache
,
const
char
*
fileName
,
SPFile
**
ppFile
);
int
tdbPFileClose
(
SPFile
*
pFile
);
SP
age
*
tdbPFileGet
(
SPFile
*
pFile
,
SPgno
pgno
);
int
tdbPFileBegin
(
SPFile
*
pFile
);
int
tdbPFileCommit
(
SPFile
*
pFile
);
int
tdbPFileRollback
(
SPFile
*
pFile
);
#ifdef __cplusplus
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录