Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
529394a0
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
529394a0
编写于
7月 02, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more work
上级
62519ae4
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
53 addition
and
22 deletion
+53
-22
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+53
-22
未找到文件。
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
529394a0
...
...
@@ -14,6 +14,11 @@
*/
#include "tsdb.h"
typedef
struct
{
int64_t
suid
;
int64_t
uid
;
STSchema
*
pTSchema
;
}
SSkmInfo
;
typedef
struct
{
STsdb
*
pTsdb
;
...
...
@@ -38,9 +43,8 @@ typedef struct {
SArray
*
aBlockIdxN
;
// SArray<SBlockIdx>
SMapData
nBlockMap
;
// SMapData<SBlock>
SBlockData
nBlockData
;
int64_t
suid
;
int64_t
uid
;
STSchema
*
pTSchema
;
SSkmInfo
skmTable
;
SSkmInfo
skmRow
;
/* commit del */
SDelFReader
*
pDelFReader
;
SDelFWriter
*
pDelFWriter
;
...
...
@@ -307,24 +311,49 @@ _err:
return
code
;
}
static
int32_t
tsdbCommitterUpdateSchema
(
SCommitter
*
pCommitter
,
int64_t
suid
,
int64_t
uid
,
int32_t
sver
)
{
static
int32_t
tsdbCommitterUpdate
Table
Schema
(
SCommitter
*
pCommitter
,
int64_t
suid
,
int64_t
uid
,
int32_t
sver
)
{
int32_t
code
=
0
;
if
(
pCommitter
->
pTSchema
)
{
if
(
pCommitter
->
suid
==
suid
)
{
if
(
pCommitter
->
skmTable
.
pTSchema
)
{
if
(
pCommitter
->
s
kmTable
.
s
uid
==
suid
)
{
if
(
suid
==
0
)
{
if
(
pCommitter
->
uid
==
uid
&&
sver
==
pCommitter
->
pTSchema
->
version
)
goto
_exit
;
if
(
pCommitter
->
skmTable
.
uid
==
uid
&&
sver
==
pCommitter
->
skmTable
.
pTSchema
->
version
)
goto
_exit
;
}
else
{
if
(
sver
==
pCommitter
->
pTSchema
->
version
)
goto
_exit
;
if
(
sver
==
pCommitter
->
skmTable
.
pTSchema
->
version
)
goto
_exit
;
}
}
}
pCommitter
->
suid
=
suid
;
pCommitter
->
uid
=
uid
;
tTSchemaDestroy
(
pCommitter
->
pTSchema
);
pCommitter
->
pTSchema
=
metaGetTbTSchema
(
pCommitter
->
pTsdb
->
pVnode
->
pMeta
,
uid
,
sver
);
if
(
pCommitter
->
pTSchema
==
NULL
)
{
pCommitter
->
skmTable
.
suid
=
suid
;
pCommitter
->
skmTable
.
uid
=
uid
;
tTSchemaDestroy
(
pCommitter
->
skmTable
.
pTSchema
);
pCommitter
->
skmTable
.
pTSchema
=
metaGetTbTSchema
(
pCommitter
->
pTsdb
->
pVnode
->
pMeta
,
uid
,
sver
);
if
(
pCommitter
->
skmTable
.
pTSchema
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
}
_exit:
return
code
;
}
static
int32_t
tsdbCommitterUpdateRowSchema
(
SCommitter
*
pCommitter
,
int64_t
suid
,
int64_t
uid
,
int32_t
sver
)
{
int32_t
code
=
0
;
if
(
pCommitter
->
skmRow
.
pTSchema
)
{
if
(
pCommitter
->
skmRow
.
suid
==
suid
)
{
if
(
suid
==
0
)
{
if
(
pCommitter
->
skmRow
.
uid
==
uid
&&
sver
==
pCommitter
->
skmRow
.
pTSchema
->
version
)
goto
_exit
;
}
else
{
if
(
sver
==
pCommitter
->
skmRow
.
pTSchema
->
version
)
goto
_exit
;
}
}
}
pCommitter
->
skmRow
.
suid
=
suid
;
pCommitter
->
skmRow
.
uid
=
uid
;
tTSchemaDestroy
(
pCommitter
->
skmRow
.
pTSchema
);
pCommitter
->
skmRow
.
pTSchema
=
metaGetTbTSchema
(
pCommitter
->
pTsdb
->
pVnode
->
pMeta
,
uid
,
sver
);
if
(
pCommitter
->
skmRow
.
pTSchema
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
}
...
...
@@ -377,7 +406,7 @@ static int32_t tsdbMergeTableData(SCommitter *pCommitter, STbDataIter *pIter, SB
*
pRow2
=
tsdbRowFromBlockData
(
pBlockDataMerge
,
0
);
ASSERT
(
pRow1
&&
tsdbKeyCmprFn
(
&
TSDBROW_KEY
(
pRow1
),
&
toKey
)
<
0
);
ASSERT
(
tsdbKeyCmprFn
(
&
TSDBROW_KEY
(
pRow2
),
&
toKey
)
<
0
);
code
=
tsdbCommitterUpdateSchema
(
pCommitter
,
pBlockIdx
->
suid
,
pBlockIdx
->
uid
,
TSDBROW_SVERSION
(
pRow1
));
code
=
tsdbCommitterUpdate
Row
Schema
(
pCommitter
,
pBlockIdx
->
suid
,
pBlockIdx
->
uid
,
TSDBROW_SVERSION
(
pRow1
));
if
(
code
)
goto
_err
;
tBlockReset
(
pBlock
);
...
...
@@ -407,14 +436,14 @@ static int32_t tsdbMergeTableData(SCommitter *pCommitter, STbDataIter *pIter, SB
}
_append_mem_row:
code
=
tBlockDataAppendRow
(
pBlockData
,
pRow1
,
pCommitter
->
pTSchema
);
code
=
tBlockDataAppendRow
(
pBlockData
,
pRow1
,
pCommitter
->
skmRow
.
pTSchema
);
if
(
code
)
goto
_err
;
tsdbTbDataIterNext
(
pIter
);
pRow1
=
tsdbTbDataIterGet
(
pIter
);
if
(
pRow1
)
{
if
(
tsdbKeyCmprFn
(
&
TSDBROW_KEY
(
pRow1
),
&
toKey
)
<
0
)
{
code
=
tsdbCommitterUpdateSchema
(
pCommitter
,
pBlockIdx
->
suid
,
pBlockIdx
->
uid
,
TSDBROW_SVERSION
(
pRow1
));
code
=
tsdbCommitterUpdate
Row
Schema
(
pCommitter
,
pBlockIdx
->
suid
,
pBlockIdx
->
uid
,
TSDBROW_SVERSION
(
pRow1
));
if
(
code
)
goto
_err
;
}
else
{
pRow1
=
NULL
;
...
...
@@ -481,11 +510,11 @@ static int32_t tsdbCommitTableMemData(SCommitter *pCommitter, STbDataIter *pIter
}
// update schema
code
=
tsdbCommitterUpdateSchema
(
pCommitter
,
suid
,
uid
,
TSDBROW_SVERSION
(
pRow
));
code
=
tsdbCommitterUpdate
Row
Schema
(
pCommitter
,
suid
,
uid
,
TSDBROW_SVERSION
(
pRow
));
if
(
code
)
goto
_err
;
// append
code
=
tBlockDataAppendRow
(
pBlockData
,
pRow
,
pCommitter
->
pTSchema
);
code
=
tBlockDataAppendRow
(
pBlockData
,
pRow
,
pCommitter
->
skmRow
.
pTSchema
);
if
(
code
)
goto
_err
;
tsdbTbDataIterNext
(
pIter
);
...
...
@@ -589,11 +618,11 @@ static int32_t tsdbMergeAsSubBlock(SCommitter *pCommitter, STbDataIter *pIter, S
tBlockDataReset
(
pBlockData
);
pRow
=
tsdbTbDataIterGet
(
pIter
);
code
=
tsdbCommitterUpdateSchema
(
pCommitter
,
pBlockIdx
->
suid
,
pBlockIdx
->
uid
,
TSDBROW_SVERSION
(
pRow
));
code
=
tsdbCommitterUpdate
Row
Schema
(
pCommitter
,
pBlockIdx
->
suid
,
pBlockIdx
->
uid
,
TSDBROW_SVERSION
(
pRow
));
if
(
code
)
goto
_err
;
while
(
true
)
{
if
(
pRow
)
break
;
code
=
tBlockDataAppendRow
(
pBlockData
,
pRow
,
pCommitter
->
pTSchema
);
code
=
tBlockDataAppendRow
(
pBlockData
,
pRow
,
pCommitter
->
skmRow
.
pTSchema
);
if
(
code
)
goto
_err
;
tsdbTbDataIterNext
(
pIter
);
...
...
@@ -602,7 +631,8 @@ static int32_t tsdbMergeAsSubBlock(SCommitter *pCommitter, STbDataIter *pIter, S
int32_t
c
=
tBlockCmprFn
(
&
(
SBlock
){},
pBlock
);
if
(
c
==
0
)
{
code
=
tsdbCommitterUpdateSchema
(
pCommitter
,
pIter
->
pTbData
->
suid
,
pIter
->
pTbData
->
uid
,
TSDBROW_SVERSION
(
pRow
));
code
=
tsdbCommitterUpdateRowSchema
(
pCommitter
,
pIter
->
pTbData
->
suid
,
pIter
->
pTbData
->
uid
,
TSDBROW_SVERSION
(
pRow
));
if
(
code
)
goto
_err
;
}
else
if
(
c
>
0
)
{
pRow
=
NULL
;
...
...
@@ -955,7 +985,8 @@ static void tsdbCommitDataEnd(SCommitter *pCommitter) {
taosArrayDestroy
(
pCommitter
->
aBlockIdxN
);
tMapDataClear
(
&
pCommitter
->
nBlockMap
);
tBlockDataClear
(
&
pCommitter
->
nBlockData
);
tTSchemaDestroy
(
pCommitter
->
pTSchema
);
tTSchemaDestroy
(
pCommitter
->
skmTable
.
pTSchema
);
tTSchemaDestroy
(
pCommitter
->
skmRow
.
pTSchema
);
}
static
int32_t
tsdbCommitData
(
SCommitter
*
pCommitter
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录