Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2c357f19
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看板
提交
2c357f19
编写于
8月 02, 2023
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(stream): enable filter table based on table statistics.
上级
53aefa53
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
46 addition
and
23 deletion
+46
-23
source/dnode/vnode/src/tsdb/tsdbMergeTree.c
source/dnode/vnode/src/tsdb/tsdbMergeTree.c
+46
-23
未找到文件。
source/dnode/vnode/src/tsdb/tsdbMergeTree.c
浏览文件 @
2c357f19
...
...
@@ -15,6 +15,7 @@
#include "tsdb.h"
#include "tsdbFSet2.h"
#include "tsdbMerge.h"
#include "tsdbReadUtil.h"
#include "tsdbSttFileRW.h"
...
...
@@ -352,10 +353,14 @@ static int32_t extractSttBlockInfo(SLDataIter *pIter, const TSttBlkArray *pArray
return
TSDB_CODE_SUCCESS
;
}
static
int32_t
uidComparFn
(
const
void
*
p1
,
const
void
*
p2
)
{
const
uint64_t
*
uid1
=
p1
;
static
int32_t
suidComparFn
(
const
void
*
target
,
const
void
*
p2
)
{
const
uint64_t
*
targetUid
=
target
;
const
uint64_t
*
uid2
=
p2
;
return
(
*
uid1
)
-
(
*
uid2
);
if
(
*
uid2
==
(
*
targetUid
))
{
return
0
;
}
else
{
return
(
*
targetUid
)
<
(
*
uid2
)
?
-
1
:
1
;
}
}
static
bool
existsFromSttBlkStatis
(
const
TStatisBlkArray
*
pStatisBlkArray
,
uint64_t
suid
,
uint64_t
uid
,
...
...
@@ -372,17 +377,6 @@ static bool existsFromSttBlkStatis(const TStatisBlkArray *pStatisBlkArray, uint6
}
}
// for (; i < TARRAY2_SIZE(pStatisBlkArray); ++i) {
// SStatisBlk *p = &pStatisBlkArray->data[i];
// if (p->minTbid.uid <= uid && p->maxTbid.uid >= uid) {
// break;
// }
//
// if (p->maxTbid.uid < uid) {
// break;
// }
// }
if
(
i
>=
TARRAY2_SIZE
(
pStatisBlkArray
))
{
return
false
;
}
...
...
@@ -391,10 +385,39 @@ static bool existsFromSttBlkStatis(const TStatisBlkArray *pStatisBlkArray, uint6
STbStatisBlock
block
=
{
0
};
tsdbSttFileReadStatisBlock
(
pReader
,
p
,
&
block
);
int32_t
index
=
tarray2SearchIdx
(
block
.
uid
,
&
uid
,
sizeof
(
int64_t
),
uidComparFn
,
TD_EQ
);
tStatisBlockDestroy
(
&
block
);
int32_t
index
=
tarray2SearchIdx
(
block
.
suid
,
&
suid
,
sizeof
(
int64_t
),
suidComparFn
,
TD_EQ
);
if
(
index
==
-
1
)
{
tStatisBlockDestroy
(
&
block
);
return
false
;
}
int32_t
j
=
index
;
if
(
block
.
uid
->
data
[
j
]
==
uid
)
{
tStatisBlockDestroy
(
&
block
);
return
true
;
}
else
if
(
block
.
uid
->
data
[
j
]
>
uid
)
{
while
(
j
>=
0
&&
block
.
suid
->
data
[
j
]
==
suid
)
{
if
(
block
.
uid
->
data
[
j
]
==
uid
)
{
tStatisBlockDestroy
(
&
block
);
return
true
;
}
else
{
j
-=
1
;
}
}
}
else
{
j
=
index
+
1
;
while
(
j
<
block
.
suid
->
size
&&
block
.
suid
->
data
[
j
]
==
suid
)
{
if
(
block
.
uid
->
data
[
j
]
==
uid
)
{
tStatisBlockDestroy
(
&
block
);
return
true
;
}
else
{
j
+=
1
;
}
}
}
return
(
index
!=
-
1
);
tStatisBlockDestroy
(
&
block
);
return
false
;
}
int32_t
tLDataIterOpen2
(
struct
SLDataIter
*
pIter
,
SSttFileReader
*
pSttFileReader
,
int32_t
iStt
,
int8_t
backward
,
...
...
@@ -445,12 +468,12 @@ int32_t tLDataIterOpen2(struct SLDataIter *pIter, SSttFileReader *pSttFileReader
tsdbDebug
(
"load the stt file info completed, elapsed time:%.2fms, %s"
,
el
,
idStr
);
}
//
bool exists = existsFromSttBlkStatis(pBlockLoadInfo->pSttStatisBlkArray, suid, uid, pIter->pReader);
//
if (!exists) {
//
pIter->iSttBlk = -1;
//
pIter->pSttBlk = NULL;
//
return TSDB_CODE_SUCCESS;
//
}
bool
exists
=
existsFromSttBlkStatis
(
pBlockLoadInfo
->
pSttStatisBlkArray
,
suid
,
uid
,
pIter
->
pReader
);
if
(
!
exists
)
{
pIter
->
iSttBlk
=
-
1
;
pIter
->
pSttBlk
=
NULL
;
return
TSDB_CODE_SUCCESS
;
}
// find the start block, actually we could load the position to avoid repeatly searching for the start position when
// the skey is updated.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录