Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
02009561
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
02009561
编写于
10月 16, 2020
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[td-225]fix query crash.
上级
570d7951
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
8 deletion
+19
-8
src/system/detail/src/vnodeQueryImpl.c
src/system/detail/src/vnodeQueryImpl.c
+19
-8
未找到文件。
src/system/detail/src/vnodeQueryImpl.c
浏览文件 @
02009561
...
@@ -1166,7 +1166,13 @@ SCacheBlock *getCacheDataBlock(SMeterObj *pMeterObj, SQueryRuntimeEnv *pRuntimeE
...
@@ -1166,7 +1166,13 @@ SCacheBlock *getCacheDataBlock(SMeterObj *pMeterObj, SQueryRuntimeEnv *pRuntimeE
// the commit data points will be ignored
// the commit data points will be ignored
if
(
slot
==
pQuery
->
commitSlot
)
{
if
(
slot
==
pQuery
->
commitSlot
)
{
assert
(
pQuery
->
commitPoint
>=
0
&&
pQuery
->
commitPoint
<=
pNewBlock
->
numOfPoints
);
assert
(
pQuery
->
commitPoint
>=
0
);
//assert(pQuery->commitPoint < pNewBlock->numOfPoints);// this conditon may not be fullfiled due to import/insert error.
// commit point is not valid, reset value and ignore it
if
(
pQuery
->
commitPoint
>
pNewBlock
->
numOfPoints
)
{
pQuery
->
commitPoint
=
0
;
}
offset
=
pQuery
->
commitPoint
;
offset
=
pQuery
->
commitPoint
;
numOfPoints
=
pNewBlock
->
numOfPoints
-
offset
;
numOfPoints
=
pNewBlock
->
numOfPoints
-
offset
;
...
@@ -5677,12 +5683,17 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
...
@@ -5677,12 +5683,17 @@ static int64_t doScanAllDataBlocks(SQueryRuntimeEnv *pRuntimeEnv) {
int32_t
forwardStep
=
0
;
int32_t
forwardStep
=
0
;
SBlockInfo
blockInfo
=
getBlockInfo
(
pRuntimeEnv
);
SBlockInfo
blockInfo
=
getBlockInfo
(
pRuntimeEnv
);
/*int32_t numOfRes = */
doHandleDataBlockImpl
(
pRuntimeEnv
,
&
blockInfo
,
searchFn
,
blockLoadStatus
,
&
forwardStep
);
dTrace
(
"QInfo:%p check data block, brange:%"
PRId64
"-%"
PRId64
// ignore empty block
", fileId:%d, slot:%d, pos:%d, bstatus:%d, rows:%d, checked:%d"
,
if
(
blockInfo
.
size
>
0
)
{
GET_QINFO_ADDR
(
pQuery
),
blockInfo
.
keyFirst
,
blockInfo
.
keyLast
,
pQuery
->
fileId
,
pQuery
->
slot
,
pQuery
->
pos
,
/*int32_t numOfRes = */
doHandleDataBlockImpl
(
pRuntimeEnv
,
&
blockInfo
,
searchFn
,
blockLoadStatus
,
pRuntimeEnv
->
blockStatus
,
blockInfo
.
size
,
forwardStep
);
&
forwardStep
);
dTrace
(
"QInfo:%p check data block, brange:%"
PRId64
"-%"
PRId64
", fileId:%d, slot:%d, pos:%d, bstatus:%d, rows:%d, checked:%d"
,
GET_QINFO_ADDR
(
pQuery
),
blockInfo
.
keyFirst
,
blockInfo
.
keyLast
,
pQuery
->
fileId
,
pQuery
->
slot
,
pQuery
->
pos
,
pRuntimeEnv
->
blockStatus
,
blockInfo
.
size
,
forwardStep
);
}
// save last access position
// save last access position
int32_t
accessPos
=
pQuery
->
pos
+
(
forwardStep
-
1
)
*
step
;
int32_t
accessPos
=
pQuery
->
pos
+
(
forwardStep
-
1
)
*
step
;
...
@@ -7157,7 +7168,7 @@ int32_t getDataBlocksForMeters(STableQuerySupportObj *pSupporter, SQuery *pQuery
...
@@ -7157,7 +7168,7 @@ int32_t getDataBlocksForMeters(STableQuerySupportObj *pSupporter, SQuery *pQuery
}
}
if
(
compInfo
.
numOfBlocks
<=
0
||
compInfo
.
uid
!=
pMeterDataInfo
[
j
]
->
pMeterObj
->
uid
)
{
if
(
compInfo
.
numOfBlocks
<=
0
||
compInfo
.
uid
!=
pMeterDataInfo
[
j
]
->
pMeterObj
->
uid
)
{
clearAllMeterDataBlockInfo
(
pMeterDataInfo
,
j
,
j
+
1
);
clearAllMeterDataBlockInfo
(
pMeterDataInfo
,
0
,
numOfMeters
);
continue
;
continue
;
}
}
...
@@ -7346,7 +7357,7 @@ int32_t createDataBlocksInfoEx(SMeterDataInfo **pMeterDataInfo, int32_t numOfMet
...
@@ -7346,7 +7357,7 @@ int32_t createDataBlocksInfoEx(SMeterDataInfo **pMeterDataInfo, int32_t numOfMet
dTrace
(
"QInfo %p create data blocks info struct completed"
,
addr
);
dTrace
(
"QInfo %p create data blocks info struct completed"
,
addr
);
assert
(
cnt
=
=
numOfCompBlocks
&&
numOfQualMeters
<=
numOfMeters
);
// the pMeterDataInfo[j]->numOfBlocks may be 0
assert
(
cnt
<
=
numOfCompBlocks
&&
numOfQualMeters
<=
numOfMeters
);
// the pMeterDataInfo[j]->numOfBlocks may be 0
supporter
.
numOfMeters
=
numOfQualMeters
;
supporter
.
numOfMeters
=
numOfQualMeters
;
SLoserTreeInfo
*
pTree
=
NULL
;
SLoserTreeInfo
*
pTree
=
NULL
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录