Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
de1bdf97
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看板
提交
de1bdf97
编写于
5月 19, 2023
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more code
上级
b75aca75
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
59 addition
and
32 deletion
+59
-32
include/util/tarray2.h
include/util/tarray2.h
+18
-3
source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h
source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h
+0
-1
source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h
source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h
+4
-0
source/dnode/vnode/src/tsdb/dev/tsdbFS.c
source/dnode/vnode/src/tsdb/dev/tsdbFS.c
+26
-28
source/dnode/vnode/src/tsdb/dev/tsdbFSet.c
source/dnode/vnode/src/tsdb/dev/tsdbFSet.c
+11
-0
未找到文件。
include/util/tarray2.h
浏览文件 @
de1bdf97
...
...
@@ -93,9 +93,6 @@ static FORCE_INLINE int32_t tarray2_make_room(void *arg, // array
TARRAY2_FREE(a); \
} while (0)
#define TARRAY2_SEARCH(a, ep, cmp, flag) \
(((a)->size == 0) ? NULL : taosbsearch(ep, (a)->data, (a)->size, sizeof(typeof((a)->data[0])), cmp, flag))
#define TARRAY2_INSERT(a, idx, e) \
({ \
int32_t __ret = 0; \
...
...
@@ -116,6 +113,24 @@ static FORCE_INLINE int32_t tarray2_make_room(void *arg, // array
#define TARRAY2_APPEND(a, e) TARRAY2_INSERT(a, (a)->size, e)
#define TARRAY2_APPEND_P(a, ep) TARRAY2_APPEND(a, *(ep))
#define TARRAY2_SEARCH(a, ep, cmp, flag) \
(((a)->size == 0) ? NULL \
: taosbsearch(ep, (a)->data, (a)->size, sizeof(typeof((a)->data[0])), (__compar_fn_t)cmp, flag))
#define TARRAY2_SEARCH_IDX(a, ep, cmp, flag) \
({ \
typeof((a)->data) __p = TARRAY2_SEARCH(a, ep, cmp, flag); \
__p ? __p - (a)->data : -1; \
})
#define TARRAY2_SORT_INSERT(a, e, cmp) \
({ \
int32_t __idx = TARRAY2_SEARCH_IDX(a, &(e), cmp, TD_GT); \
TARRAY2_INSERT(a, __idx < 0 ? (a)->size : __idx, e); \
})
#define TARRAY2_SORT_INSERT_P(a, ep, cmp) TARRAY2_SORT_INSERT(a, *(ep), cmp)
#define TARRAY2_REMOVE(a, idx, cb) \
do { \
if ((idx) < (a)->size) { \
...
...
source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h
浏览文件 @
de1bdf97
...
...
@@ -24,7 +24,6 @@ extern "C" {
/* Exposed Handle */
typedef
struct
STFileSystem
STFileSystem
;
typedef
TARRAY2
(
STFileOp
)
TFileOpArray
;
typedef
enum
{
TSDB_FEDIT_COMMIT
=
1
,
//
...
...
source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h
浏览文件 @
de1bdf97
...
...
@@ -27,6 +27,7 @@ typedef struct STFileOp STFileOp;
typedef
struct
SSttLvl
SSttLvl
;
typedef
TARRAY2
(
STFileSet
*
)
TFileSetArray
;
typedef
TARRAY2
(
SSttLvl
*
)
TSttLvlArray
;
typedef
TARRAY2
(
STFileOp
)
TFileOpArray
;
typedef
enum
{
TSDB_FOP_NONE
=
0
,
...
...
@@ -43,7 +44,10 @@ int32_t tsdbTFileSetClear(STFileSet **fset);
int32_t
tsdbTFileSetToJson
(
const
STFileSet
*
fset
,
cJSON
*
json
);
int32_t
tsdbJsonToTFileSet
(
const
cJSON
*
json
,
STFileSet
**
fset
);
int32_t
tsdbTFileSetCmprFn
(
const
STFileSet
**
fset1
,
const
STFileSet
**
fset2
);
int32_t
tsdbTFileSetEdit
(
STFileSet
*
fset
,
const
STFileOp
*
op
);
int32_t
tsdbTFileSetEditEx
(
const
STFileSet
*
fset1
,
STFileSet
*
fset
);
const
SSttLvl
*
tsdbTFileSetGetLvl
(
const
STFileSet
*
fset
,
int32_t
level
);
...
...
source/dnode/vnode/src/tsdb/dev/tsdbFS.c
浏览文件 @
de1bdf97
...
...
@@ -499,39 +499,37 @@ static int32_t fset_cmpr_fn(const struct STFileSet *pSet1, const struct STFileSe
return
0
;
}
static
int32_t
edit_fs
(
STFileSystem
*
pFS
,
const
SArray
*
aFileOp
)
{
int32_t
code
=
0
;
int32_t
lino
=
0
;
STFileSet
*
pSet
=
NULL
;
for
(
int32_t
iop
=
0
;
iop
<
taosArrayGetSize
(
aFileOp
);
iop
++
)
{
struct
STFileOp
*
op
=
taosArrayGet
(
aFileOp
,
iop
);
if
(
pSet
==
NULL
||
pSet
->
fid
!=
op
->
fid
)
{
// STFileSet fset = {.fid = op->fid};
// int32_t idx = taosArraySearchIdx(pFS->nstate, &fset, (__compar_fn_t)tsdbFSetCmprFn, TD_GE);
// pSet = NULL;
// if (idx < 0) {
// idx = taosArrayGetSize(pFS->nstate);
// } else {
// pSet = taosArrayGet(pFS->nstate, idx);
// if (pSet->fid != op->fid) pSet = NULL;
// }
// if (!pSet) {
// pSet = taosArrayInsert(pFS->nstate, idx, &fset);
// if (!pSet) TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
// tsdbFileSetInit(pSet, op->fid);
// }
static
int32_t
edit_fs
(
TFileSetArray
*
fset_arr
,
const
TFileOpArray
*
op_arr
)
{
int32_t
code
=
0
;
int32_t
lino
=
0
;
STFileSet
*
fset
=
NULL
;
const
STFileOp
*
op
;
TARRAY2_FOREACH_PTR
(
op_arr
,
op
)
{
if
(
!
fset
||
fset
->
fid
!=
op
->
fid
)
{
STFileSet
tfset
=
{.
fid
=
op
->
fid
};
fset
=
&
tfset
;
fset
=
TARRAY2_SEARCH
(
fset_arr
,
&
fset
,
tsdbTFileSetCmprFn
,
TD_EQ
);
if
(
!
fset
)
{
code
=
tsdbTFileSetInit
(
op
->
fid
,
&
fset
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
code
=
TARRAY2_SORT_INSERT
(
fset_arr
,
fset
,
tsdbTFileSetCmprFn
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
}
}
code
=
tsdbTFileSetEdit
(
pS
et
,
op
);
code
=
tsdbTFileSetEdit
(
fs
et
,
op
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
if
(
0
)
{
// TODO check if the file set should be deleted
}
}
_exit:
return
0
;
return
code
;
}
int32_t
tsdbOpenFS
(
STsdb
*
pTsdb
,
STFileSystem
**
fs
,
int8_t
rollback
)
{
...
...
@@ -588,7 +586,7 @@ int32_t tsdbFSEditBegin(STFileSystem *fs, const SArray *aFileOp, EFEditT etype)
fs
->
etype
=
etype
;
// edit
code
=
edit_fs
(
fs
,
aFileOp
);
code
=
edit_fs
(
&
fs
->
nstate
,
NULL
/* TODO */
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
// save fs
...
...
source/dnode/vnode/src/tsdb/dev/tsdbFSet.c
浏览文件 @
de1bdf97
...
...
@@ -208,6 +208,11 @@ int32_t tsdbTFileSetEdit(STFileSet *fset, const STFileOp *op) {
return
0
;
}
int32_t
tsdbTFileSetEditEx
(
const
STFileSet
*
fset1
,
STFileSet
*
fset
)
{
// TODO
return
0
;
}
int32_t
tsdbTFileSetInit
(
int32_t
fid
,
STFileSet
**
fset
)
{
fset
[
0
]
=
taosMemoryCalloc
(
1
,
sizeof
(
STFileSet
));
if
(
fset
[
0
]
==
NULL
)
return
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -268,4 +273,10 @@ const SSttLvl *tsdbTFileSetGetLvl(const STFileSet *fset, int32_t level) {
// return node ? TCONTAINER_OF(node, SSttLvl, rbtn) : NULL;
// TODO
return
NULL
;
}
int32_t
tsdbTFileSetCmprFn
(
const
STFileSet
**
fset1
,
const
STFileSet
**
fset2
)
{
if
(
fset1
[
0
]
->
fid
<
fset2
[
0
]
->
fid
)
return
-
1
;
if
(
fset1
[
0
]
->
fid
>
fset2
[
0
]
->
fid
)
return
1
;
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录