Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
f7a8ef26
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看板
提交
f7a8ef26
编写于
11月 04, 2021
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more
上级
b8304e81
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
62 addition
and
6 deletion
+62
-6
include/server/vnode/meta/impl/metaImpl.h
include/server/vnode/meta/impl/metaImpl.h
+1
-1
source/dnode/vnode/meta/src/metaDB.c
source/dnode/vnode/meta/src/metaDB.c
+61
-5
未找到文件。
include/server/vnode/meta/impl/metaImpl.h
浏览文件 @
f7a8ef26
...
...
@@ -53,7 +53,7 @@ typedef struct {
// normal table options
typedef
struct
{
SSchema
*
pSchame
;
S
T
Schema
*
pSchame
;
}
SNTbOptions
;
struct
STbOptions
{
...
...
source/dnode/vnode/meta/src/metaDB.c
浏览文件 @
f7a8ef26
...
...
@@ -15,6 +15,12 @@
#include "metaDef.h"
static
void
metaSaveSchemaDB
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
STSchema
*
pSchema
);
static
void
metaGetSchemaDBKey
(
char
key
[],
tb_uid_t
uid
,
int
sversion
);
static
int
metaSaveMapDB
(
SMeta
*
pMeta
,
tb_uid_t
suid
,
tb_uid_t
uid
);
#define SCHEMA_KEY_LEN (sizeof(tb_uid_t) + sizeof(int))
#define META_OPEN_DB_IMPL(pDB, options, dir, err) \
do { \
pDB = rocksdb_open(options, dir, &err); \
...
...
@@ -115,22 +121,22 @@ int metaSaveTableToDB(SMeta *pMeta, const STbOptions *pTbOptions) {
switch
(
pTbOptions
->
type
)
{
case
META_NORMAL_TABLE
:
// save schemaDB
rocksdb_put
(
pMeta
->
pDB
->
schemaDb
,
wopt
,
NULL
/* TODO */
,
NULL
/* TODO */
,
NULL
/* TODO */
,
NULL
/* TODO */
,
&
err
);
metaSaveSchemaDB
(
pMeta
,
uid
,
pTbOptions
->
ntbOptions
.
pSchame
);
break
;
case
META_SUPER_TABLE
:
// save schemaDB
rocksdb_put
(
pMeta
->
pDB
->
schemaDb
,
wopt
,
NULL
/* TODO */
,
NULL
/* TODO */
,
NULL
/* TODO */
,
NULL
/* TODO */
,
&
err
);
metaSaveSchemaDB
(
pMeta
,
uid
,
pTbOptions
->
stbOptions
.
pSchema
);
// save mapDB (really need?)
rocksdb_put
(
pMeta
->
pDB
->
mapDb
,
wopt
,
(
char
*
)(
&
uid
),
sizeof
(
uid
),
""
,
0
,
&
err
);
break
;
case
META_CHILD_TABLE
:
// save tagDB
rocksdb_put
(
pMeta
->
pDB
->
tagDb
,
wopt
,
NULL
/* TODO */
,
0
/* TODO */
,
NULL
/* TODO */
,
0
/* TODO */
,
&
err
);
rocksdb_put
(
pMeta
->
pDB
->
tagDb
,
wopt
,
(
char
*
)(
&
uid
),
sizeof
(
uid
),
pTbOptions
->
ctbOptions
.
tags
,
kvRowLen
(
pTbOptions
->
ctbOptions
.
tags
),
&
err
);
// save mapDB
rocksdb_put
(
pMeta
->
pDB
->
mapDb
,
wopt
,
(
char
*
)(
&
(
pTbOptions
->
ctbOptions
.
suid
)),
sizeof
(
tb_uid_t
),
NULL
/* TODO */
,
0
/* TODO */
,
&
err
);
metaSaveMapDB
(
pMeta
,
pTbOptions
->
ctbOptions
.
suid
,
uid
);
break
;
default:
ASSERT
(
0
);
...
...
@@ -143,5 +149,55 @@ int metaSaveTableToDB(SMeta *pMeta, const STbOptions *pTbOptions) {
int
metaRemoveTableFromDb
(
SMeta
*
pMeta
,
tb_uid_t
uid
)
{
/* TODO */
return
0
;
}
/* ------------------------ STATIC METHODS ------------------------ */
static
void
metaSaveSchemaDB
(
SMeta
*
pMeta
,
tb_uid_t
uid
,
STSchema
*
pSchema
)
{
char
key
[
64
];
char
pBuf
[
1024
];
char
*
ppBuf
=
pBuf
;
size_t
vsize
;
char
*
err
=
NULL
;
rocksdb_writeoptions_t
*
wopt
=
rocksdb_writeoptions_create
();
metaGetSchemaDBKey
(
key
,
uid
,
schemaVersion
(
pSchema
));
vsize
=
tdEncodeSchema
((
void
**
)(
&
ppBuf
),
pSchema
);
rocksdb_put
(
pMeta
->
pDB
->
schemaDb
,
wopt
,
key
,
SCHEMA_KEY_LEN
,
pBuf
,
vsize
,
&
err
);
rocksdb_writeoptions_destroy
(
wopt
);
}
static
void
metaGetSchemaDBKey
(
char
*
key
,
tb_uid_t
uid
,
int
sversion
)
{
*
(
tb_uid_t
*
)
key
=
uid
;
*
(
int
*
)
POINTER_SHIFT
(
key
,
sizeof
(
tb_uid_t
))
=
sversion
;
}
static
int
metaSaveMapDB
(
SMeta
*
pMeta
,
tb_uid_t
suid
,
tb_uid_t
uid
)
{
size_t
vlen
;
char
*
val
;
char
*
err
=
NULL
;
rocksdb_readoptions_t
*
ropt
=
rocksdb_readoptions_create
();
val
=
rocksdb_get
(
pMeta
->
pDB
->
mapDb
,
ropt
,
(
char
*
)(
&
suid
),
sizeof
(
suid
),
&
vlen
,
&
err
);
rocksdb_readoptions_destroy
(
ropt
);
void
*
nval
=
malloc
(
vlen
+
sizeof
(
uid
));
if
(
nval
==
NULL
)
{
return
-
1
;
}
if
(
vlen
)
{
memcpy
(
nval
,
val
,
vlen
);
}
memcpy
(
POINTER_SHIFT
(
nval
,
vlen
),
(
void
*
)(
&
uid
),
sizeof
(
uid
));
rocksdb_writeoptions_t
*
wopt
=
rocksdb_writeoptions_create
();
rocksdb_put
(
pMeta
->
pDB
->
mapDb
,
wopt
,
(
char
*
)(
&
suid
),
sizeof
(
suid
),
nval
,
vlen
+
sizeof
(
uid
),
&
err
);
rocksdb_writeoptions_destroy
(
wopt
);
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录