Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
f43bae0d
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,发现更多精彩内容 >>
提交
f43bae0d
编写于
8月 23, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more code
上级
cc109000
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
71 addition
and
71 deletion
+71
-71
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+71
-71
未找到文件。
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
f43bae0d
...
...
@@ -327,53 +327,53 @@ _exit:
return
code
;
}
static
int32_t
tsdbCommitterNextLastRow
(
SCommitter
*
pCommitter
)
{
int32_t
code
=
0
;
ASSERT
(
pCommitter
->
dReader
.
pReader
);
ASSERT
(
pCommitter
->
dReader
.
pRowInfo
);
SBlockData
*
pBlockDatal
=
&
pCommitter
->
dReader
.
bDatal
;
pCommitter
->
dReader
.
iRow
++
;
if
(
pCommitter
->
dReader
.
iRow
<
pBlockDatal
->
nRow
)
{
if
(
pBlockDatal
->
uid
)
{
pCommitter
->
dReader
.
pRowInfo
->
uid
=
pBlockDatal
->
uid
;
}
else
{
pCommitter
->
dReader
.
pRowInfo
->
uid
=
pBlockDatal
->
aUid
[
pCommitter
->
dReader
.
iRow
];
}
pCommitter
->
dReader
.
pRowInfo
->
row
=
tsdbRowFromBlockData
(
pBlockDatal
,
pCommitter
->
dReader
.
iRow
);
}
else
{
pCommitter
->
dReader
.
iBlockL
++
;
if
(
pCommitter
->
dReader
.
iBlockL
<
taosArrayGetSize
(
pCommitter
->
dReader
.
aBlockL
))
{
SBlockL
*
pBlockL
=
(
SBlockL
*
)
taosArrayGet
(
pCommitter
->
dReader
.
aBlockL
,
pCommitter
->
dReader
.
iBlockL
);
int64_t
suid
=
pBlockL
->
suid
;
int64_t
uid
=
pBlockL
->
maxUid
;
code
=
tsdbCommitterUpdateTableSchema
(
pCommitter
,
suid
,
uid
);
if
(
code
)
goto
_exit
;
code
=
tBlockDataInit
(
pBlockDatal
,
suid
,
suid
?
0
:
uid
,
pCommitter
->
skmTable
.
pTSchema
);
if
(
code
)
goto
_exit
;
code
=
tsdbReadLastBlock
(
pCommitter
->
dReader
.
pReader
,
pBlockL
,
pBlockDatal
);
if
(
code
)
goto
_exit
;
pCommitter
->
dReader
.
iRow
=
0
;
pCommitter
->
dReader
.
pRowInfo
->
suid
=
pBlockDatal
->
suid
;
if
(
pBlockDatal
->
uid
)
{
pCommitter
->
dReader
.
pRowInfo
->
uid
=
pBlockDatal
->
uid
;
}
else
{
pCommitter
->
dReader
.
pRowInfo
->
uid
=
pBlockDatal
->
aUid
[
0
];
}
pCommitter
->
dReader
.
pRowInfo
->
row
=
tsdbRowFromBlockData
(
pBlockDatal
,
pCommitter
->
dReader
.
iRow
);
}
else
{
pCommitter
->
dReader
.
pRowInfo
=
NULL
;
}
}
_exit:
return
code
;
}
//
static int32_t tsdbCommitterNextLastRow(SCommitter *pCommitter) {
//
int32_t code = 0;
//
ASSERT(pCommitter->dReader.pReader);
//
ASSERT(pCommitter->dReader.pRowInfo);
//
SBlockData *pBlockDatal = &pCommitter->dReader.bDatal;
//
pCommitter->dReader.iRow++;
//
if (pCommitter->dReader.iRow < pBlockDatal->nRow) {
//
if (pBlockDatal->uid) {
//
pCommitter->dReader.pRowInfo->uid = pBlockDatal->uid;
//
} else {
//
pCommitter->dReader.pRowInfo->uid = pBlockDatal->aUid[pCommitter->dReader.iRow];
//
}
//
pCommitter->dReader.pRowInfo->row = tsdbRowFromBlockData(pBlockDatal, pCommitter->dReader.iRow);
//
} else {
//
pCommitter->dReader.iBlockL++;
//
if (pCommitter->dReader.iBlockL < taosArrayGetSize(pCommitter->dReader.aBlockL)) {
//
SBlockL *pBlockL = (SBlockL *)taosArrayGet(pCommitter->dReader.aBlockL, pCommitter->dReader.iBlockL);
//
int64_t suid = pBlockL->suid;
//
int64_t uid = pBlockL->maxUid;
//
code = tsdbCommitterUpdateTableSchema(pCommitter, suid, uid);
//
if (code) goto _exit;
//
code = tBlockDataInit(pBlockDatal, suid, suid ? 0 : uid, pCommitter->skmTable.pTSchema);
//
if (code) goto _exit;
//
code = tsdbReadLastBlock(pCommitter->dReader.pReader, pBlockL, pBlockDatal);
//
if (code) goto _exit;
//
pCommitter->dReader.iRow = 0;
//
pCommitter->dReader.pRowInfo->suid = pBlockDatal->suid;
//
if (pBlockDatal->uid) {
//
pCommitter->dReader.pRowInfo->uid = pBlockDatal->uid;
//
} else {
//
pCommitter->dReader.pRowInfo->uid = pBlockDatal->aUid[0];
//
}
//
pCommitter->dReader.pRowInfo->row = tsdbRowFromBlockData(pBlockDatal, pCommitter->dReader.iRow);
//
} else {
//
pCommitter->dReader.pRowInfo = NULL;
//
}
//
}
//
_exit:
//
return code;
//
}
static
int32_t
tsdbCommitterNextTableData
(
SCommitter
*
pCommitter
)
{
int32_t
code
=
0
;
...
...
@@ -779,7 +779,8 @@ _err:
}
static
int32_t
tsdbMergeCommitLast
(
SCommitter
*
pCommitter
,
STbDataIter
*
pIter
)
{
int32_t
code
=
0
;
int32_t
code
=
0
;
#if 0
STbData *pTbData = pIter->pTbData;
int32_t nRow = tsdbGetNumOfRowsLessThan(pIter, (TSDBKEY){.ts = pCommitter->maxKey + 1, .version = VERSION_MIN});
...
...
@@ -938,54 +939,47 @@ _exit:
_err:
tsdbError("vgId:%d tsdb merge commit last failed since %s", TD_VID(pCommitter->pTsdb->pVnode), tstrerror(code));
#endif
return
code
;
}
static
int32_t
tsdbMergeCommitData
(
SCommitter
*
pCommitter
,
STbDataIter
*
pIter
)
{
int32_t
code
=
0
;
int32_t
code
=
0
;
STbData
*
pTbData
=
pIter
->
pTbData
;
int32_t
iBlock
=
0
;
SBlock
block
;
SBlock
*
pBlock
=
&
block
;
TSDBROW
*
pRow
=
tsdbTbDataIterGet
(
pIter
);
int32_t
iBlock
=
0
;
SBlock
block
;
SBlock
*
pBlock
=
&
block
;
if
(
pCommitter
->
dReader
.
pBlockIdx
&&
tTABLEIDCmprFn
(
pTbData
,
pCommitter
->
dReader
.
pBlockIdx
)
==
0
)
{
tMapDataGetItemByIdx
(
&
pCommitter
->
dReader
.
mBlock
,
iBlock
,
pBlock
,
tGetBlock
);
}
else
{
pBlock
=
NULL
;
}
code
=
tsdbCommitterUpdateTableSchema
(
pCommitter
,
pTbData
->
suid
,
pTbData
->
uid
);
if
(
code
)
goto
_err
;
tMapDataReset
(
&
pCommitter
->
dWriter
.
mBlock
);
code
=
tBlockDataInit
(
&
pCommitter
->
dReader
.
bData
,
pTbData
->
suid
,
pTbData
->
uid
,
pCommitter
->
skmTable
.
pTSchema
);
if
(
code
)
goto
_err
;
code
=
tBlockDataInit
(
&
pCommitter
->
dWriter
.
bData
,
pTbData
->
suid
,
pTbData
->
uid
,
pCommitter
->
skmTable
.
pTSchema
);
if
(
code
)
goto
_err
;
// .data merge
while
(
pBlock
&&
pRow
)
{
int32_t
c
=
tBlockCmprFn
(
pBlock
,
&
(
SBlock
){.
minKey
=
TSDBROW_KEY
(
pRow
),
.
maxKey
=
TSDBROW_KEY
(
pRow
)});
if
(
c
<
0
)
{
// disk
SBlock
tBlock
=
{.
minKey
=
TSDBROW_KEY
(
pRow
),
.
maxKey
=
TSDBROW_KEY
(
pRow
)};
int32_t
c
=
tBlockCmprFn
(
pBlock
,
&
tBlock
);
if
(
c
<
0
)
{
code
=
tMapDataPutItem
(
&
pCommitter
->
dWriter
.
mBlock
,
pBlock
,
tPutBlock
);
if
(
code
)
goto
_err
;
// next
iBlock
++
;
if
(
iBlock
<
pCommitter
->
dReader
.
mBlock
.
nItem
)
{
tMapDataGetItemByIdx
(
&
pCommitter
->
dReader
.
mBlock
,
iBlock
,
pBlock
,
tGetBlock
);
}
else
{
pBlock
=
NULL
;
}
}
else
if
(
c
>
0
)
{
// memory
}
else
if
(
c
>
0
)
{
code
=
tsdbCommitTableMemData
(
pCommitter
,
pIter
,
pBlock
->
minKey
);
if
(
code
)
goto
_err
;
// next
pRow
=
tsdbTbDataIterGet
(
pIter
);
if
(
pRow
&&
TSDBROW_TS
(
pRow
)
>
pCommitter
->
maxKey
)
{
pRow
=
NULL
;
}
}
else
{
// merge
}
else
{
int32_t
nOvlp
=
tsdbGetNumOfRowsLessThan
(
pIter
,
pBlock
->
maxKey
);
ASSERT
(
nOvlp
>
0
);
...
...
@@ -1016,7 +1010,6 @@ static int32_t tsdbMergeCommitData(SCommitter *pCommitter, STbDataIter *pIter) {
code
=
tMapDataPutItem
(
&
pCommitter
->
dWriter
.
mBlock
,
pBlock
,
tPutBlock
);
if
(
code
)
goto
_err
;
// next
iBlock
++
;
if
(
iBlock
<
pCommitter
->
dReader
.
mBlock
.
nItem
)
{
tMapDataGetItemByIdx
(
&
pCommitter
->
dReader
.
mBlock
,
iBlock
,
pBlock
,
tGetBlock
);
...
...
@@ -1041,21 +1034,28 @@ static int32_t tsdbCommitTableData(SCommitter *pCommitter, STbData *pTbData) {
STbDataIter
iter
=
{
0
};
TSDBROW
*
pRow
;
tMapDataReset
(
&
pCommitter
->
dWriter
.
mBlock
);
tsdbTbDataIterOpen
(
pTbData
,
&
(
TSDBKEY
){.
ts
=
pCommitter
->
minKey
,
.
version
=
VERSION_MIN
},
0
,
&
iter
);
pRow
=
tsdbTbDataIterGet
(
&
iter
);
if
(
pRow
&&
TSDBROW_TS
(
pRow
)
>
pCommitter
->
maxKey
)
{
pRow
=
NULL
;
}
if
(
pRow
==
NULL
)
{
if
(
pCommitter
->
dReader
.
pBlockIdx
&&
tTABLEIDCmprFn
(
pCommitter
->
dReader
.
pBlockIdx
,
pTbData
)
==
0
)
{
code
=
tMapDataCopy
(
&
pCommitter
->
dReader
.
mBlock
,
&
pCommitter
->
dWriter
.
mBlock
);
if
(
code
)
goto
_err
;
}
goto
_exit
;
}
code
=
tsdbCommitterUpdateTableSchema
(
pCommitter
,
pTbData
->
suid
,
pTbData
->
uid
);
if
(
code
)
goto
_err
;
code
=
tBlockDataInit
(
&
pCommitter
->
dReader
.
bData
,
pTbData
->
suid
,
pTbData
->
uid
,
pCommitter
->
skmTable
.
pTSchema
);
if
(
code
)
goto
_err
;
code
=
tBlockDataInit
(
&
pCommitter
->
dWriter
.
bData
,
pTbData
->
suid
,
pTbData
->
uid
,
pCommitter
->
skmTable
.
pTSchema
);
if
(
code
)
goto
_err
;
// commit data
code
=
tsdbMergeCommitData
(
pCommitter
,
&
iter
);
if
(
code
)
goto
_err
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录