Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
9b338ae0
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
9b338ae0
编写于
2月 07, 2023
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more code
上级
c7267c7c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
52 addition
and
37 deletion
+52
-37
source/dnode/vnode/src/tsdb/tsdbCompact.c
source/dnode/vnode/src/tsdb/tsdbCompact.c
+52
-37
未找到文件。
source/dnode/vnode/src/tsdb/tsdbCompact.c
浏览文件 @
9b338ae0
...
@@ -725,7 +725,8 @@ typedef struct {
...
@@ -725,7 +725,8 @@ typedef struct {
SArray
*
aSkyLine
;
// SArray<TSDBKEY>
SArray
*
aSkyLine
;
// SArray<TSDBKEY>
int32_t
iDelIdx
;
int32_t
iDelIdx
;
int32_t
iSkyLine
;
int32_t
iSkyLine
;
int8_t
onGoing
;
TSDBKEY
*
pDKey
;
TSDBKEY
dKey
;
// Reader
// Reader
SDataFReader
*
pReader
;
SDataFReader
*
pReader
;
...
@@ -751,8 +752,7 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI
...
@@ -751,8 +752,7 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI
// tombstone
// tombstone
for
(;;)
{
for
(;;)
{
if
(
pCompactor
->
iDelIdx
>=
taosArrayGetSize
(
pCompactor
->
aDelIdx
))
{
if
(
pCompactor
->
iDelIdx
>=
taosArrayGetSize
(
pCompactor
->
aDelIdx
))
{
if
(
pCompactor
->
aSkyLine
)
taosArrayClear
(
pCompactor
->
aSkyLine
);
pCompactor
->
pDKey
=
NULL
;
pCompactor
->
iSkyLine
=
0
;
break
;
break
;
}
}
...
@@ -771,10 +771,18 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI
...
@@ -771,10 +771,18 @@ static int32_t tsdbCompactWriteTableDataStart(STsdbCompactor *pCompactor, TABLEI
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
pCompactor
->
iSkyLine
=
0
;
pCompactor
->
iSkyLine
=
0
;
if
(
pCompactor
->
iSkyLine
<
taosArrayGetSize
(
pCompactor
->
aSkyLine
))
{
TSDBKEY
*
pKey
=
(
TSDBKEY
*
)
taosArrayGet
(
pCompactor
->
aSkyLine
,
pCompactor
->
iSkyLine
);
pCompactor
->
dKey
.
version
=
0
;
pCompactor
->
dKey
.
ts
=
pKey
->
ts
;
pCompactor
->
pDKey
=
&
pCompactor
->
dKey
;
}
else
{
pCompactor
->
pDKey
=
NULL
;
}
break
;
break
;
}
else
{
}
else
{
if
(
pCompactor
->
aSkyLine
)
taosArrayClear
(
pCompactor
->
aSkyLine
);
pCompactor
->
pDKey
=
NULL
;
pCompactor
->
iSkyLine
=
0
;
break
;
break
;
}
}
}
}
...
@@ -859,38 +867,45 @@ _exit:
...
@@ -859,38 +867,45 @@ _exit:
}
}
static
bool
tsdbCompactRowIsDeleted
(
STsdbCompactor
*
pCompactor
,
TSDBROW
*
pRow
)
{
static
bool
tsdbCompactRowIsDeleted
(
STsdbCompactor
*
pCompactor
,
TSDBROW
*
pRow
)
{
// TSDBKEY tKey = TSDBROW_KEY(pRow);
TSDBKEY
tKey
=
TSDBROW_KEY
(
pRow
);
// while (tKey.ts > pCompactor->sKey.ts) {
// pCompactor->sKey.version = pCompactor->aTSDBKEY[pCompactor->iKey].version;
// pCompactor->iKey++;
// if (pCompactor->iKey < taosArrayGetSize(pCompactor->aSkyLine)) {
// pCompactor->sKey.ts = pCompactor->aTSDBKEY[pCompactor->iKey].ts;
// } else {
// pCompactor->sKey.ts = TSKEY_MAX;
// }
// }
// if (tKey.ts < pCompactor->sKey.ts) {
if
(
tKey
.
ts
>
pCompactor
->
pDKey
->
ts
)
{
// if (tKey.version > pCompactor->sKey.version) {
while
(
tKey
.
ts
>
pCompactor
->
pDKey
->
ts
)
{
// return false;
TSDBKEY
*
pKey
=
(
TSDBKEY
*
)
taosArrayGet
(
pCompactor
->
aSkyLine
,
pCompactor
->
iSkyLine
);
// } else {
// return true;
pCompactor
->
pDKey
->
version
=
pKey
->
version
;
// }
pCompactor
->
iSkyLine
++
;
// } else if (tKey.ts == pCompactor->sKey.ts) {
if
(
pCompactor
->
iSkyLine
<
taosArrayGetSize
(
pCompactor
->
aSkyLine
))
{
// int64_t version;
TSDBKEY
*
pKey
=
(
TSDBKEY
*
)
taosArrayGet
(
pCompactor
->
aSkyLine
,
pCompactor
->
iSkyLine
);
// if (pCompactor->iKey < taosArrayGetSize(pCompactor->aSkyLine)) {
// version = TMAX(pCompactor->sKey.version, pCompactor->aTSDBKEY[pCompactor->iKey].version);
pCompactor
->
dKey
.
ts
=
pKey
->
ts
;
// } else {
}
else
{
// version = pCompactor->sKey.version;
pCompactor
->
pDKey
=
NULL
;
// }
return
false
;
}
// if (tKey.version > version) {
}
// return false;
}
// } else {
// return true;
if
(
tKey
.
ts
<
pCompactor
->
pDKey
->
ts
)
{
// }
if
(
tKey
.
version
>
pCompactor
->
pDKey
->
version
)
{
// }
return
false
;
}
else
{
return
true
;
}
}
else
if
(
tKey
.
ts
==
pCompactor
->
pDKey
->
ts
)
{
int64_t
version
;
if
(
pCompactor
->
iSkyLine
<
taosArrayGetSize
(
pCompactor
->
aSkyLine
))
{
version
=
TMAX
(
pCompactor
->
pDKey
->
version
,
pCompactor
->
aTSDBKEY
[
pCompactor
->
iKey
].
version
);
}
else
{
version
=
pCompactor
->
pDKey
->
version
;
}
if
(
tKey
.
version
>
version
)
{
return
false
;
}
else
{
return
true
;
}
}
return
false
;
return
false
;
}
}
...
@@ -919,7 +934,7 @@ static int32_t tsdbCompactWriteTableData(STsdbCompactor *pCompactor, SRowInfo *p
...
@@ -919,7 +934,7 @@ static int32_t tsdbCompactWriteTableData(STsdbCompactor *pCompactor, SRowInfo *p
}
}
// check if row is deleted
// check if row is deleted
if
(
pCompactor
->
onGoing
&&
tsdbCompactRowIsDeleted
(
pCompactor
,
&
pRowInfo
->
row
))
goto
_exit
;
if
(
pCompactor
->
pDKey
&&
tsdbCompactRowIsDeleted
(
pCompactor
,
&
pRowInfo
->
row
))
goto
_exit
;
code
=
tBlockDataUpsertRow
(
&
pCompactor
->
bData
,
&
pRowInfo
->
row
,
NULL
,
pRowInfo
->
uid
);
code
=
tBlockDataUpsertRow
(
&
pCompactor
->
bData
,
&
pRowInfo
->
row
,
NULL
,
pRowInfo
->
uid
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
TSDB_CHECK_CODE
(
code
,
lino
,
_exit
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录