Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
a4663721
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看板
提交
a4663721
编写于
3月 31, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more TDB
上级
4ecbe41d
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
75 addition
and
16 deletion
+75
-16
source/libs/tdb/src/db/tdbEnv.c
source/libs/tdb/src/db/tdbEnv.c
+62
-9
source/libs/tdb/src/inc/tdbEnv.h
source/libs/tdb/src/inc/tdbEnv.h
+6
-7
source/libs/tdb/src/inc/tdbPager.h
source/libs/tdb/src/inc/tdbPager.h
+2
-0
source/libs/tdb/src/inc/tdbUtil.h
source/libs/tdb/src/inc/tdbUtil.h
+5
-0
未找到文件。
source/libs/tdb/src/db/tdbEnv.c
浏览文件 @
a4663721
...
...
@@ -54,13 +54,13 @@ int tdbEnvOpen(const char *rootDir, int pageSize, int cacheSize, TENV **ppEnv) {
return
-
1
;
}
pEnv
->
nHash
=
8
;
tsize
=
sizeof
(
SPager
*
)
*
pEnv
->
nHash
;
pEnv
->
p
agerHash
=
TDB_REALLOC
(
pEnv
->
page
rHash
,
tsize
);
if
(
pEnv
->
p
age
rHash
==
NULL
)
{
pEnv
->
n
Pgr
Hash
=
8
;
tsize
=
sizeof
(
SPager
*
)
*
pEnv
->
n
Pgr
Hash
;
pEnv
->
p
grHash
=
TDB_REALLOC
(
pEnv
->
pg
rHash
,
tsize
);
if
(
pEnv
->
p
g
rHash
==
NULL
)
{
return
-
1
;
}
memset
(
pEnv
->
p
age
rHash
,
0
,
tsize
);
memset
(
pEnv
->
p
g
rHash
,
0
,
tsize
);
mkdir
(
rootDir
,
0755
);
...
...
@@ -81,7 +81,7 @@ int tdbBegin(TENV *pEnv) {
int
tdbCommit
(
TENV
*
pEnv
)
{
SPager
*
pPager
;
pPager
=
pEnv
->
p
age
rList
;
pPager
=
pEnv
->
p
g
rList
;
while
(
pPager
)
{
tdbPagerCommit
(
pPager
);
}
...
...
@@ -95,10 +95,63 @@ int tdbRollback(TENV *pEnv) {
}
SPager
*
tdbEnvGetPager
(
TENV
*
pEnv
,
const
char
*
fname
)
{
int
hash
;
SPager
**
ppPager
;
hash
=
tdbCstringHash
(
fname
);
ppPager
=
&
pEnv
->
pgrHash
[
hash
%
pEnv
->
nPgrHash
];
for
(;
*
ppPager
&&
(
strcmp
(
fname
,
(
*
ppPager
)
->
dbFileName
)
!=
0
);
ppPager
=
&
((
*
ppPager
)
->
pHashNext
))
{
}
return
*
ppPager
;
}
void
tdbEnvAddPager
(
TENV
*
pEnv
,
SPager
*
pPager
)
{
int
hash
;
SPager
**
ppPager
;
// rehash if neccessary
if
(
pEnv
->
nPager
+
1
>
pEnv
->
nPgrHash
)
{
// TODO
return
NULL
;
}
// add to list
pPager
->
pNext
=
pEnv
->
pgrList
;
pEnv
->
pgrList
=
pPager
;
// add to hash
hash
=
tdbCstringHash
(
pPager
->
dbFileName
);
ppPager
=
&
pEnv
->
pgrHash
[
hash
%
pEnv
->
nPgrHash
];
pPager
->
pHashNext
=
*
ppPager
;
*
ppPager
=
pPager
;
// increase the counter
pEnv
->
nPager
++
;
}
static
void
tdbEnvAddPager
(
TENV
*
pEnv
,
SPager
*
pPager
)
{
void
tdbEnvRemovePager
(
TENV
*
pEnv
,
SPager
*
pPager
)
{
int
hash
;
SPager
**
ppPager
;
// remove from the list
for
(
ppPager
=
&
pEnv
->
pgrList
;
*
ppPager
&&
(
*
ppPager
!=
pPager
);
ppPager
=
&
((
*
ppPager
)
->
pNext
))
{
}
ASSERT
(
*
ppPager
==
pPager
);
*
ppPager
=
pPager
->
pNext
;
// remove from hash
hash
=
tdbCstringHash
(
pPager
->
dbFileName
);
ppPager
=
&
pEnv
->
pgrHash
[
hash
%
pEnv
->
nPgrHash
];
for
(;
*
ppPager
&&
*
ppPager
!=
pPager
;
ppPager
=
&
((
*
ppPager
)
->
pHashNext
))
{
}
ASSERT
(
*
ppPager
==
pPager
);
*
ppPager
=
pPager
->
pNext
;
// decrease the counter
pEnv
->
nPager
--
;
// rehash if necessary
if
(
pEnv
->
nPgrHash
>
8
&&
pEnv
->
nPager
<
pEnv
->
nPgrHash
/
2
)
{
// TODO
}
}
\ No newline at end of file
source/libs/tdb/src/inc/tdbEnv.h
浏览文件 @
a4663721
...
...
@@ -20,18 +20,15 @@
extern
"C"
{
#endif
#define TDB_PAGER_ENV_FIELDS \
SPager *pNext; \
SPager *pHashNext;
typedef
struct
STEnv
{
char
*
rootDir
;
char
*
jfname
;
int
jfd
;
SPCache
*
pCache
;
SPager
*
pagerList
;
int
nHash
;
SPager
**
pagerHash
;
SPager
*
pgrList
;
int
nPager
;
int
nPgrHash
;
SPager
**
pgrHash
;
}
TENV
;
int
tdbEnvOpen
(
const
char
*
rootDir
,
int
pageSize
,
int
cacheSize
,
TENV
**
ppEnv
);
...
...
@@ -40,6 +37,8 @@ int tdbBegin(TENV *pEnv);
int
tdbCommit
(
TENV
*
pEnv
);
int
tdbRollback
(
TENV
*
pEnv
);
void
tdbEnvAddPager
(
TENV
*
pEnv
,
SPager
*
pPager
);
void
tdbEnvRemovePager
(
TENV
*
pEnv
,
SPager
*
pPager
);
SPager
*
tdbEnvGetPager
(
TENV
*
pEnv
,
const
char
*
fname
);
#ifdef __cplusplus
...
...
source/libs/tdb/src/inc/tdbPager.h
浏览文件 @
a4663721
...
...
@@ -32,6 +32,8 @@ struct SPager {
SPgno
dbOrigSize
;
SPage
*
pDirty
;
u8
inTran
;
SPager
*
pNext
;
// used by TENV
SPager
*
pHashNext
;
// used by TENV
};
int
tdbPagerOpen
(
SPCache
*
pCache
,
const
char
*
fileName
,
SPager
**
ppPager
);
...
...
source/libs/tdb/src/inc/tdbUtil.h
浏览文件 @
a4663721
...
...
@@ -101,6 +101,11 @@ static inline int tdbGetVarInt(const u8 *p, int *v) {
return
n
;
}
static
inline
int
tdbCstringHash
(
const
char
*
s
)
{
// TODO
return
0
;
}
#ifdef __cplusplus
}
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录