Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1c10694f
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看板
提交
1c10694f
编写于
5月 23, 2023
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more code
上级
36b2495c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
73 addition
and
38 deletion
+73
-38
source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h
source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h
+10
-4
source/dnode/vnode/src/tsdb/dev/tsdbFSet.c
source/dnode/vnode/src/tsdb/dev/tsdbFSet.c
+59
-29
source/dnode/vnode/src/tsdb/dev/tsdbSttFReaderWriter.c
source/dnode/vnode/src/tsdb/dev/tsdbSttFReaderWriter.c
+4
-5
未找到文件。
source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h
浏览文件 @
1c10694f
...
...
@@ -29,6 +29,12 @@ typedef TARRAY2(STFileObj *) TFileObjArray;
typedef
TARRAY2
(
SSttLvl
*
)
TSttLvlArray
;
typedef
TARRAY2
(
STFileOp
)
TFileOpArray
;
typedef
enum
{
TSDB_FOP_CREATE
=
1
,
TSDB_FOP_REMOVE
,
TSDB_FOP_MODIFY
,
}
tsdb_fop_t
;
// init/clear
int32_t
tsdbTFileSetInit
(
int32_t
fid
,
STFileSet
**
fset
);
int32_t
tsdbTFileSetInitEx
(
STsdb
*
pTsdb
,
const
STFileSet
*
fset1
,
STFileSet
**
fset
);
...
...
@@ -50,10 +56,10 @@ SSttLvl *tsdbTFileSetGetLvl(STFileSet *fset, int32_t level);
bool
tsdbTFileSetIsEmpty
(
const
STFileSet
*
fset
);
struct
STFileOp
{
int32_t
fid
;
STFile
*
of
;
// old file
STFile
*
nf
;
// new fil
e
STFile
fArr
[
2
];
int32_t
fid
;
tsdb_fop_t
optype
;
STFile
of
;
// old file stat
e
STFile
nf
;
// new file state
};
struct
SSttLvl
{
...
...
source/dnode/vnode/src/tsdb/dev/tsdbFSet.c
浏览文件 @
1c10694f
...
...
@@ -256,38 +256,68 @@ int32_t tsdbJsonToTFileSet(STsdb *pTsdb, const cJSON *json, STFileSet **fset) {
return
0
;
}
// NOTE: the api does not remove file, only do memory operation
int32_t
tsdbTFileSetEdit
(
STsdb
*
pTsdb
,
STFileSet
*
fset
,
const
STFileOp
*
op
)
{
int32_t
code
=
0
;
// if (op->of.size == 0 //
// || 0 /* TODO*/
// ) {
// STFileObj *fobj;
// code = tsdbTFileObjInit(pTsdb, &op->nf, &fobj);
// if (code) return code;
// if (fobj->f.type == TSDB_FTYPE_STT) {
// SSttLvl *lvl = tsdbTFileSetGetLvl(fset, fobj->f.stt.level);
// if (!lvl) {
// code = tsdbSttLvlInit(fobj->f.stt.level, &lvl);
// if (code) return code;
// code = TARRAY2_SORT_INSERT(&fset->lvlArr, lvl, tsdbSttLvlCmprFn);
// if (code) return code;
// }
// code = TARRAY2_SORT_INSERT(&lvl->farr, fobj, tsdbTFileObjCmpr);
// if (code) return code;
// } else {
// fset->farr[fobj->f.type] = fobj;
// }
// } else if (op->nf.size == 0) {
// // delete
// ASSERT(0);
// } else {
// // modify
// ASSERT(0);
// }
if
(
op
->
optype
==
TSDB_FOP_CREATE
)
{
// create a new file
STFileObj
*
fobj
;
code
=
tsdbTFileObjInit
(
pTsdb
,
&
op
->
nf
,
&
fobj
);
if
(
code
)
return
code
;
if
(
fobj
->
f
.
type
==
TSDB_FTYPE_STT
)
{
SSttLvl
*
lvl
=
tsdbTFileSetGetLvl
(
fset
,
fobj
->
f
.
stt
.
level
);
if
(
!
lvl
)
{
code
=
tsdbSttLvlInit
(
fobj
->
f
.
stt
.
level
,
&
lvl
);
if
(
code
)
return
code
;
code
=
TARRAY2_SORT_INSERT
(
&
fset
->
lvlArr
,
lvl
,
tsdbSttLvlCmprFn
);
if
(
code
)
return
code
;
}
code
=
TARRAY2_SORT_INSERT
(
&
lvl
->
farr
,
fobj
,
tsdbTFileObjCmpr
);
if
(
code
)
return
code
;
}
else
{
ASSERT
(
fset
->
farr
[
fobj
->
f
.
type
]
==
NULL
);
fset
->
farr
[
fobj
->
f
.
type
]
=
fobj
;
}
}
else
if
(
op
->
optype
==
TSDB_FOP_REMOVE
)
{
// delete a file
if
(
op
->
of
.
type
==
TSDB_FTYPE_STT
)
{
SSttLvl
*
lvl
=
tsdbTFileSetGetLvl
(
fset
,
op
->
of
.
stt
.
level
);
ASSERT
(
lvl
);
STFileObj
tfobj
=
{.
f
=
{.
cid
=
op
->
of
.
cid
}};
STFileObj
*
tfobjp
=
&
tfobj
;
int32_t
idx
=
TARRAY2_SEARCH_IDX
(
&
lvl
->
farr
,
&
tfobjp
,
tsdbTFileObjCmpr
,
TD_EQ
);
ASSERT
(
idx
>=
0
);
TARRAY2_REMOVE
(
&
lvl
->
farr
,
idx
,
tsdbSttLvlRemoveFObj
);
if
(
TARRAY2_SIZE
(
&
lvl
->
farr
)
==
0
)
{
// TODO: remove the stt level if no file exists anymore
// TARRAY2_REMOVE(&fset->lvlArr, lvl - fset->lvlArr.data, tsdbSttLvlClear);
}
}
else
{
ASSERT
(
tsdbIsSameTFile
(
&
op
->
of
,
&
fset
->
farr
[
op
->
of
.
type
]
->
f
));
tsdbTFileObjUnref
(
fset
->
farr
[
op
->
of
.
type
]);
fset
->
farr
[
op
->
of
.
type
]
=
NULL
;
}
}
else
{
if
(
op
->
nf
.
type
==
TSDB_FTYPE_STT
)
{
SSttLvl
*
lvl
=
tsdbTFileSetGetLvl
(
fset
,
op
->
of
.
stt
.
level
);
ASSERT
(
lvl
);
STFileObj
tfobj
=
{.
f
=
{.
cid
=
op
->
of
.
cid
}},
*
tfobjp
=
&
tfobj
;
tfobjp
=
TARRAY2_SEARCH_EX
(
&
lvl
->
farr
,
&
tfobjp
,
tsdbTFileObjCmpr
,
TD_EQ
);
ASSERT
(
tfobjp
);
tfobjp
->
f
=
op
->
nf
;
}
else
{
fset
->
farr
[
op
->
nf
.
type
]
->
f
=
op
->
nf
;
}
}
return
0
;
}
...
...
source/dnode/vnode/src/tsdb/dev/tsdbSttFReaderWriter.c
浏览文件 @
1c10694f
...
...
@@ -573,13 +573,12 @@ int32_t tsdbSttFWriterClose(SSttFileWriter **ppWriter, int8_t abort, struct STFi
STFile
*
f
=
&
ppWriter
[
0
]
->
config
.
file
;
op
->
fid
=
f
->
fid
;
if
(
f
->
size
==
0
)
{
op
->
o
f
=
NULL
;
op
->
o
ptype
=
TSDB_FOP_CREATE
;
}
else
{
op
->
of
=
&
op
->
fArr
[
0
];
op
->
of
[
0
]
=
f
[
0
];
op
->
optype
=
TSDB_FOP_MODIFY
;
}
op
->
nf
=
&
op
->
fArr
[
1
];
op
->
nf
[
0
]
=
ppWriter
[
0
]
->
tFile
;
op
->
of
=
f
[
0
];
op
->
nf
=
ppWriter
[
0
]
->
tFile
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录