Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
f4f68de6
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1185
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,发现更多精彩内容 >>
未验证
提交
f4f68de6
编写于
2月 29, 2020
作者:
S
slguan
提交者:
GitHub
2月 29, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1277 from taosdata/feature/liaohj
Feature/liaohj
上级
c02772b3
84c1eb3c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
9 deletion
+25
-9
src/system/detail/src/vnodeQueryImpl.c
src/system/detail/src/vnodeQueryImpl.c
+25
-9
未找到文件。
src/system/detail/src/vnodeQueryImpl.c
浏览文件 @
f4f68de6
...
...
@@ -399,7 +399,6 @@ static void doCloseQueryFiles(SQueryFilesInfo *pVnodeFileInfo) {
assert
(
pVnodeFileInfo
->
current
<
pVnodeFileInfo
->
numOfFiles
&&
pVnodeFileInfo
->
current
>=
0
);
pVnodeFileInfo
->
headerFileSize
=
-
1
;
doCloseQueryFileInfoFD
(
pVnodeFileInfo
);
}
...
...
@@ -458,11 +457,12 @@ static int vnodeGetCompBlockInfo(SMeterObj *pMeterObj, SQueryRuntimeEnv *pRuntim
SHeaderFileInfo
*
pHeadeFileInfo
=
&
pRuntimeEnv
->
vnodeFileInfo
.
pFileInfo
[
fileIndex
];
int64_t
st
=
taosGetTimestampUs
();
if
(
vnodeIsCompBlockInfoLoaded
(
pRuntimeEnv
,
pMeterObj
,
fileIndex
))
{
// if the corresponding data/header files are already closed, re-open them here
if
(
vnodeIsCompBlockInfoLoaded
(
pRuntimeEnv
,
pMeterObj
,
fileIndex
)
&&
pRuntimeEnv
->
vnodeFileInfo
.
current
==
fileIndex
)
{
dTrace
(
"QInfo:%p vid:%d sid:%d id:%s, fileId:%d compBlock info is loaded, not reload"
,
GET_QINFO_ADDR
(
pQuery
),
pMeterObj
->
vnode
,
pMeterObj
->
sid
,
pMeterObj
->
meterId
,
pHeadeFileInfo
->
fileID
);
return
pQuery
->
numOfBlocks
;
}
...
...
@@ -1057,7 +1057,7 @@ void savePointPosition(SPositionInfo *position, int32_t fileId, int32_t slot, in
position
->
pos
=
pos
;
}
bool
isCacheBlockValid
(
SQuery
*
pQuery
,
SCacheBlock
*
pBlock
,
SMeterObj
*
pMeterObj
)
{
bool
isCacheBlockValid
(
SQuery
*
pQuery
,
SCacheBlock
*
pBlock
,
SMeterObj
*
pMeterObj
,
int32_t
slot
)
{
if
(
pMeterObj
!=
pBlock
->
pMeterObj
||
pBlock
->
blockId
>
pQuery
->
blockId
)
{
SMeterObj
*
pNewMeterObj
=
pBlock
->
pMeterObj
;
char
*
id
=
(
pNewMeterObj
!=
NULL
)
?
pNewMeterObj
->
meterId
:
NULL
;
...
...
@@ -1081,11 +1081,19 @@ bool isCacheBlockValid(SQuery *pQuery, SCacheBlock *pBlock, SMeterObj *pMeterObj
dWarn
(
"QInfo:%p vid:%d sid:%d id:%s, cache block is empty. slot:%d first:%d, last:%d, numOfBlocks:%d,"
"allocated but not write data yet."
,
GET_QINFO_ADDR
(
pQuery
),
pMeterObj
->
vnode
,
pMeterObj
->
sid
,
pMeterObj
->
meterId
,
pQuery
->
slot
,
pQuery
->
firstSlot
,
GET_QINFO_ADDR
(
pQuery
),
pMeterObj
->
vnode
,
pMeterObj
->
sid
,
pMeterObj
->
meterId
,
slot
,
pQuery
->
firstSlot
,
pQuery
->
currentSlot
,
pQuery
->
numOfBlocks
);
return
false
;
}
SCacheInfo
*
pCacheInfo
=
(
SCacheInfo
*
)
pMeterObj
->
pCache
;
if
(
pCacheInfo
->
commitPoint
==
pMeterObj
->
pointsPerBlock
&&
pQuery
->
slot
==
pCacheInfo
->
currentSlot
)
{
dWarn
(
"QInfo:%p vid:%d sid:%d id:%s, cache block is committed, ignore. slot:%d first:%d, last:%d, numOfBlocks:%d"
,
GET_QINFO_ADDR
(
pQuery
),
pMeterObj
->
vnode
,
pMeterObj
->
sid
,
pMeterObj
->
meterId
,
slot
,
pQuery
->
firstSlot
,
pQuery
->
currentSlot
,
pQuery
->
numOfBlocks
);
return
false
;
}
return
true
;
}
...
...
@@ -1117,7 +1125,7 @@ SCacheBlock *getCacheDataBlock(SMeterObj *pMeterObj, SQueryRuntimeEnv *pRuntimeE
}
// block is empty or block does not belongs to current table, return NULL value
if
(
!
isCacheBlockValid
(
pQuery
,
pBlock
,
pMeterObj
))
{
if
(
!
isCacheBlockValid
(
pQuery
,
pBlock
,
pMeterObj
,
slot
))
{
return
NULL
;
}
...
...
@@ -1203,7 +1211,7 @@ SCacheBlock *getCacheDataBlock(SMeterObj *pMeterObj, SQueryRuntimeEnv *pRuntimeE
pQuery
->
fileId
=
-
1
;
pQuery
->
slot
=
slot
;
if
(
!
isCacheBlockValid
(
pQuery
,
pNewBlock
,
pMeterObj
))
{
if
(
!
isCacheBlockValid
(
pQuery
,
pNewBlock
,
pMeterObj
,
slot
))
{
return
NULL
;
}
...
...
@@ -1621,6 +1629,11 @@ static void doCheckQueryCompleted(SQueryRuntimeEnv *pRuntimeEnv, TSKEY lastKey,
if
(
pRuntimeEnv
->
scanFlag
!=
MASTER_SCAN
||
(
!
isIntervalQuery
(
pQuery
)))
{
return
;
}
// no qualified results exist, abort check
if
(
pWindowResInfo
->
size
==
0
)
{
return
;
}
// query completed
if
((
lastKey
>=
pQuery
->
ekey
&&
QUERY_IS_ASC_QUERY
(
pQuery
))
||
...
...
@@ -4134,13 +4147,14 @@ static bool forwardQueryStartPosIfNeeded(SQInfo *pQInfo, STableQuerySupportObj *
tw
=
win
;
int32_t
startPos
=
getNextQualifiedWindow
(
pRuntimeEnv
,
&
tw
,
pWindowResInfo
,
&
blockInfo
,
primaryKey
,
searchFn
);
assert
(
startPos
>
0
);
assert
(
startPos
>
=
0
);
pQuery
->
limit
.
offset
-=
1
;
// set the abort info
pQuery
->
pos
=
startPos
;
pQuery
->
lastKey
=
primaryKey
[
startPos
];
pWindowResInfo
->
prevSKey
=
tw
.
skey
;
win
=
tw
;
continue
;
}
else
{
...
...
@@ -4176,6 +4190,8 @@ static bool forwardQueryStartPosIfNeeded(SQInfo *pQInfo, STableQuerySupportObj *
// set the abort info
pQuery
->
pos
=
QUERY_IS_ASC_QUERY
(
pQuery
)
?
0
:
blockInfo
.
size
-
1
;
pQuery
->
lastKey
=
QUERY_IS_ASC_QUERY
(
pQuery
)
?
blockInfo
.
keyFirst
:
blockInfo
.
keyLast
;
pWindowResInfo
->
prevSKey
=
n
.
skey
;
win
=
n
;
if
(
pQuery
->
limit
.
offset
==
0
&&
IS_DISK_DATA_BLOCK
(
pQuery
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录