Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
adminstrot
TDengine
提交
50865d28
TDengine
项目概览
adminstrot
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
50865d28
编写于
12月 19, 2019
作者:
H
haojun Liao
提交者:
GitHub
12月 19, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update vnodeQueryImpl.c
fix a bug referred in issue #946
上级
c5e5f4c6
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
8 addition
and
2 deletion
+8
-2
src/system/detail/src/vnodeQueryImpl.c
src/system/detail/src/vnodeQueryImpl.c
+8
-2
未找到文件。
src/system/detail/src/vnodeQueryImpl.c
浏览文件 @
50865d28
...
@@ -1349,11 +1349,12 @@ static int32_t blockwiseApplyAllFunctions(SQueryRuntimeEnv *pRuntimeEnv, int32_t
...
@@ -1349,11 +1349,12 @@ static int32_t blockwiseApplyAllFunctions(SQueryRuntimeEnv *pRuntimeEnv, int32_t
*
*
* first filter the data block according to the value filter condition, then, if the top/bottom query applied,
* first filter the data block according to the value filter condition, then, if the top/bottom query applied,
* invoke the filter function to decide if the data block need to be accessed or not.
* invoke the filter function to decide if the data block need to be accessed or not.
* TODO handle the whole data block is NULL situation
* @param pQuery
* @param pQuery
* @param pField
* @param pField
* @return
* @return
*/
*/
static
bool
needToLoadDataBlock
(
SQuery
*
pQuery
,
SField
*
pField
,
SQLFunctionCtx
*
pCtx
)
{
static
bool
needToLoadDataBlock
(
SQuery
*
pQuery
,
SField
*
pField
,
SQLFunctionCtx
*
pCtx
,
int32_t
numOfTotalPoints
)
{
if
(
pField
==
NULL
)
{
if
(
pField
==
NULL
)
{
return
false
;
// no need to load data
return
false
;
// no need to load data
}
}
...
@@ -1371,6 +1372,11 @@ static bool needToLoadDataBlock(SQuery *pQuery, SField *pField, SQLFunctionCtx *
...
@@ -1371,6 +1372,11 @@ static bool needToLoadDataBlock(SQuery *pQuery, SField *pField, SQLFunctionCtx *
if
(
!
vnodeSupportPrefilter
(
pFilterInfo
->
info
.
data
.
type
))
{
if
(
!
vnodeSupportPrefilter
(
pFilterInfo
->
info
.
data
.
type
))
{
continue
;
continue
;
}
}
// all points in current column are NULL, no need to check its boundary value
if
(
pField
[
colIndex
].
numOfNullPoints
==
numOfTotalPoints
)
{
continue
;
}
if
(
pFilterInfo
->
info
.
data
.
type
==
TSDB_DATA_TYPE_FLOAT
)
{
if
(
pFilterInfo
->
info
.
data
.
type
==
TSDB_DATA_TYPE_FLOAT
)
{
float
minval
=
*
(
double
*
)(
&
pField
[
colIndex
].
min
);
float
minval
=
*
(
double
*
)(
&
pField
[
colIndex
].
min
);
...
@@ -6595,7 +6601,7 @@ int32_t LoadDatablockOnDemand(SCompBlock *pBlock, SField **pFields, uint8_t *blk
...
@@ -6595,7 +6601,7 @@ int32_t LoadDatablockOnDemand(SCompBlock *pBlock, SField **pFields, uint8_t *blk
* filter the data block according to the value filter condition.
* filter the data block according to the value filter condition.
* no need to load the data block, continue for next block
* no need to load the data block, continue for next block
*/
*/
if
(
!
needToLoadDataBlock
(
pQuery
,
*
pFields
,
pRuntimeEnv
->
pCtx
))
{
if
(
!
needToLoadDataBlock
(
pQuery
,
*
pFields
,
pRuntimeEnv
->
pCtx
,
pBlock
->
numOfPoints
))
{
#if defined(_DEBUG_VIEW)
#if defined(_DEBUG_VIEW)
dTrace
(
"QInfo:%p fileId:%d, slot:%d, block discarded by per-filter, "
,
GET_QINFO_ADDR
(
pQuery
),
pQuery
->
fileId
,
dTrace
(
"QInfo:%p fileId:%d, slot:%d, block discarded by per-filter, "
,
GET_QINFO_ADDR
(
pQuery
),
pQuery
->
fileId
,
pQuery
->
slot
);
pQuery
->
slot
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录