Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
26e1504a
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
26e1504a
编写于
12月 06, 2021
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more
上级
6847a4f1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
73 addition
and
5 deletion
+73
-5
contrib/test/bdb/bdbTest.c
contrib/test/bdb/bdbTest.c
+73
-5
未找到文件。
contrib/test/bdb/bdbTest.c
浏览文件 @
26e1504a
...
...
@@ -12,6 +12,11 @@
// 3. Queue
// 4. Recno
// Use secondary database work as index.
// Any attemp to write to a secondary database results in a non-zero status return.
static
int
idx_callback
(
DB
*
dbp
,
const
DBT
*
keyp
,
const
DBT
*
valuep
,
DBT
*
resvp
);
#define USE_ENV 0
#define DESCRIPTION_SIZE 128
...
...
@@ -54,11 +59,12 @@ static void get_value(DB *dbp) {
value
.
flags
=
DB_DBT_USERMEM
;
dbp
->
get
(
dbp
,
NULL
,
&
key
,
&
value
,
0
);
printf
(
"The value is
\"
%s
\"\n
"
,
value
.
data
);
printf
(
"The value is
\"
%s
\"\n
"
,
desp
);
}
int
main
(
int
argc
,
char
const
*
argv
[])
{
DB
*
dbp
=
NULL
;
DB
*
sdbp
=
NULL
;
u_int32_t
db_flags
;
DB_ENV
*
envp
=
NULL
;
u_int32_t
env_flags
;
...
...
@@ -89,6 +95,16 @@ int main(int argc, char const *argv[]) {
exit
(
1
);
}
ret
=
db_create
(
&
sdbp
,
envp
,
0
);
if
(
ret
!=
0
)
{
exit
(
1
);
}
ret
=
sdbp
->
set_flags
(
sdbp
,
DB_DUPSORT
);
if
(
ret
!=
0
)
{
exit
(
1
);
}
db_flags
=
DB_CREATE
|
DB_TRUNCATE
;
ret
=
dbp
->
open
(
dbp
,
/* DB structure pointer */
NULL
,
/* Transaction pointer */
...
...
@@ -101,13 +117,37 @@ int main(int argc, char const *argv[]) {
exit
(
1
);
}
// Insert a key-value record
put_value
(
dbp
);
ret
=
sdbp
->
open
(
sdbp
,
/* DB structure pointer */
NULL
,
/* Transaction pointer */
"index.db"
,
/* On-disk file that holds the database */
NULL
,
/* Optional logical database name */
DB_BTREE
,
/* Database access method */
db_flags
,
/* Open flags */
0
);
/* File mode */
if
(
ret
!=
0
)
{
exit
(
1
);
}
// Associate the secondary database to the primary
dbp
->
associate
(
dbp
,
/* Primary database */
NULL
,
/* TXN id */
sdbp
,
/* Secondary database */
idx_callback
,
/* Callback used for key creation */
0
);
/* Flags */
{
// Insert a key-value record
put_value
(
dbp
);
// Read the key-value record
get_value
(
dbp
);
// Read the key-value record
get_value
(
dbp
);
}
// Close the database
if
(
sdbp
!=
NULL
)
{
sdbp
->
close
(
sdbp
,
0
);
}
if
(
dbp
!=
NULL
)
{
dbp
->
close
(
dbp
,
0
);
}
...
...
@@ -118,3 +158,31 @@ int main(int argc, char const *argv[]) {
return
0
;
}
static
int
idx_callback
(
DB
*
sdbp
,
/* secondary db handle */
const
DBT
*
keyp
,
/* primary db record's key */
const
DBT
*
valuep
,
/* primary db record's value */
DBT
*
skeyp
/* secondary db record's key*/
)
{
DBT
*
tmpdbt
;
tmpdbt
=
(
DBT
*
)
calloc
(
2
,
sizeof
(
DBT
));
{
// TODO
tmpdbt
[
0
].
data
=
NULL
;
tmpdbt
[
0
].
size
=
0
;
tmpdbt
[
1
].
data
=
NULL
;
tmpdbt
[
1
].
size
=
0
;
}
/**
* DB_DBT_MULTIPLE means DBT references an array
* DB_DBT_APPMALLOC means we dynamically allocated memory for the DBT's data field.
*/
skeyp
->
flags
=
DB_DBT_MULTIPLE
|
DB_DBT_APPMALLOC
;
skeyp
->
size
=
2
;
skeyp
->
data
=
tmpdbt
;
return
0
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录