Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
264b3f0c
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
264b3f0c
编写于
4月 25, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix tdb problem
上级
13740e89
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
87 addition
and
5 deletion
+87
-5
.gitignore
.gitignore
+1
-0
source/libs/tdb/src/db/tdbPCache.c
source/libs/tdb/src/db/tdbPCache.c
+3
-5
source/libs/tdb/test/tdbTest.cpp
source/libs/tdb/test/tdbTest.cpp
+83
-0
未找到文件。
.gitignore
浏览文件 @
264b3f0c
...
...
@@ -40,6 +40,7 @@ taosdalipu/
Target/
*.failed
*.sql
sim
sim/
psim/
pysim/
...
...
source/libs/tdb/src/db/tdbPCache.c
浏览文件 @
264b3f0c
...
...
@@ -115,10 +115,7 @@ void tdbPCacheRelease(SPCache *pCache, SPage *pPage, TXN *pTxn) {
tdbPCacheRemovePageFromHash
(
pCache
,
pPage
);
}
// free the page
if
(
pTxn
&&
pTxn
->
xFree
)
{
tdbPageDestroy
(
pPage
,
pTxn
->
xFree
,
pTxn
->
xArg
);
}
tdbPageDestroy
(
pPage
,
pTxn
->
xFree
,
pTxn
->
xArg
);
}
}
...
...
@@ -195,6 +192,7 @@ static SPage *tdbPCacheFetchImpl(SPCache *pCache, const SPgid *pPgid, TXN *pTxn)
pPage
->
pPager
=
pPageH
->
pPager
;
memcpy
(
pPage
->
pData
,
pPageH
->
pData
,
pPage
->
pageSize
);
tdbPageInit
(
pPage
,
pPageH
->
pPageHdr
-
pPageH
->
pData
,
pPageH
->
xCellSize
);
}
else
{
memcpy
(
&
(
pPage
->
pgid
),
pPgid
,
sizeof
(
*
pPgid
));
pPage
->
pLruNext
=
NULL
;
...
...
@@ -294,7 +292,7 @@ static int tdbPCacheOpenImpl(SPCache *pCache) {
// Open the hash table
pCache
->
nPage
=
0
;
pCache
->
nHash
=
pCache
->
cacheSize
;
pCache
->
nHash
=
pCache
->
cacheSize
<
8
?
8
:
pCache
->
cacheSize
;
pCache
->
pgHash
=
(
SPage
**
)
tdbOsCalloc
(
pCache
->
nHash
,
sizeof
(
SPage
*
));
if
(
pCache
->
pgHash
==
NULL
)
{
// TODO
...
...
source/libs/tdb/test/tdbTest.cpp
浏览文件 @
264b3f0c
...
...
@@ -225,6 +225,89 @@ TEST(tdb_test, simple_test) {
// Close a database
tdbDbClose
(
pDb
);
// Close Env
ret
=
tdbEnvClose
(
pEnv
);
GTEST_ASSERT_EQ
(
ret
,
0
);
}
TEST
(
tdb_test
,
simple_test2
)
{
int
ret
;
TENV
*
pEnv
;
TDB
*
pDb
;
FKeyComparator
compFunc
;
int
nData
=
10000
;
TXN
txn
;
// Open Env
ret
=
tdbEnvOpen
(
"tdb"
,
1024
,
0
,
&
pEnv
);
GTEST_ASSERT_EQ
(
ret
,
0
);
// Create a database
compFunc
=
tKeyCmpr
;
ret
=
tdbDbOpen
(
"db.db"
,
TDB_VARIANT_LEN
,
TDB_VARIANT_LEN
,
compFunc
,
pEnv
,
&
pDb
);
GTEST_ASSERT_EQ
(
ret
,
0
);
{
char
key
[
64
];
char
val
[
64
];
int64_t
txnid
=
0
;
SPoolMem
*
pPool
;
// open the pool
pPool
=
openPool
();
// start a transaction
txnid
++
;
tdbTxnOpen
(
&
txn
,
txnid
,
poolMalloc
,
poolFree
,
pPool
,
TDB_TXN_WRITE
|
TDB_TXN_READ_UNCOMMITTED
);
tdbBegin
(
pEnv
,
&
txn
);
for
(
int
iData
=
1
;
iData
<=
nData
;
iData
++
)
{
sprintf
(
key
,
"key%d"
,
iData
);
sprintf
(
val
,
"value%d"
,
iData
);
ret
=
tdbDbInsert
(
pDb
,
key
,
strlen
(
key
),
val
,
strlen
(
val
),
&
txn
);
GTEST_ASSERT_EQ
(
ret
,
0
);
}
{
// Iterate to query the DB data
TDBC
*
pDBC
;
void
*
pKey
=
NULL
;
void
*
pVal
=
NULL
;
int
vLen
,
kLen
;
int
count
=
0
;
ret
=
tdbDbcOpen
(
pDb
,
&
pDBC
);
GTEST_ASSERT_EQ
(
ret
,
0
);
for
(;;)
{
ret
=
tdbDbNext
(
pDBC
,
&
pKey
,
&
kLen
,
&
pVal
,
&
vLen
);
if
(
ret
<
0
)
break
;
std
::
cout
.
write
((
char
*
)
pKey
,
kLen
)
/* << " " << kLen */
<<
" "
;
std
::
cout
.
write
((
char
*
)
pVal
,
vLen
)
/* << " " << vLen */
;
std
::
cout
<<
std
::
endl
;
count
++
;
}
GTEST_ASSERT_EQ
(
count
,
nData
);
tdbDbcClose
(
pDBC
);
TDB_FREE
(
pKey
);
TDB_FREE
(
pVal
);
}
}
// commit the transaction
tdbCommit
(
pEnv
,
&
txn
);
tdbTxnClose
(
&
txn
);
ret
=
tdbDbDrop
(
pDb
);
GTEST_ASSERT_EQ
(
ret
,
0
);
// Close a database
tdbDbClose
(
pDb
);
// Close Env
ret
=
tdbEnvClose
(
pEnv
);
GTEST_ASSERT_EQ
(
ret
,
0
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录