Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
52e2364d
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看板
提交
52e2364d
编写于
7月 22, 2019
作者:
S
slguan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix the issue #148, failed to find the next file when the file id of the vnode is not continuous
上级
5d429ddb
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
33 addition
and
14 deletion
+33
-14
src/system/src/vnodeQueryImpl.c
src/system/src/vnodeQueryImpl.c
+33
-14
未找到文件。
src/system/src/vnodeQueryImpl.c
浏览文件 @
52e2364d
...
...
@@ -1384,23 +1384,40 @@ int32_t vnodeGetVnodeHeaderFileIdx(int32_t *fid, SQueryRuntimeEnv *pRuntimeEnv,
}
int32_t
numOfFiles
=
pRuntimeEnv
->
numOfFiles
;
int32_t
step
=
(
order
==
TSQL_SO_ASC
)
?
1
:
-
1
;
if
(
order
==
TSQL_SO_DESC
&&
*
fid
>
pRuntimeEnv
->
pHeaderFiles
[
numOfFiles
-
1
].
fileID
)
{
*
fid
=
pRuntimeEnv
->
pHeaderFiles
[
numOfFiles
-
1
].
fileID
;
return
numOfFiles
-
1
;
}
int32_t
i
=
(
order
==
TSQL_SO_ASC
)
?
0
:
numOfFiles
-
1
;
while
((
i
<
numOfFiles
)
&&
(
i
>=
0
)
&&
(
*
fid
!=
pRuntimeEnv
->
pHeaderFiles
[
i
].
fileID
))
{
if
(
order
==
TSQL_SO_ASC
)
{
int32_t
i
=
0
;
int32_t
step
=
1
;
while
(
i
<
numOfFiles
&&
*
fid
>
pRuntimeEnv
->
pHeaderFiles
[
i
].
fileID
)
{
i
+=
step
;
}
if
(
i
==
numOfFiles
||
i
<
0
)
{
if
(
i
<
numOfFiles
&&
*
fid
<=
pRuntimeEnv
->
pHeaderFiles
[
i
].
fileID
)
{
*
fid
=
pRuntimeEnv
->
pHeaderFiles
[
i
].
fileID
;
return
i
;
}
else
{
return
-
1
;
}
}
else
{
int32_t
i
=
numOfFiles
-
1
;
int32_t
step
=
-
1
;
while
(
i
>=
0
&&
*
fid
<
pRuntimeEnv
->
pHeaderFiles
[
i
].
fileID
)
{
i
+=
step
;
}
if
(
i
>=
0
&&
*
fid
>=
pRuntimeEnv
->
pHeaderFiles
[
i
].
fileID
)
{
*
fid
=
pRuntimeEnv
->
pHeaderFiles
[
i
].
fileID
;
return
i
;
}
else
{
return
-
1
;
}
}
}
...
...
@@ -2585,7 +2602,7 @@ _clean:
return
-
1
;
}
static
void
vnode
GetFilesSnapshot
(
SQInfo
*
pQInfo
,
int32_t
vnodeId
)
{
static
void
vnode
OpenAllFiles
(
SQInfo
*
pQInfo
,
int32_t
vnodeId
)
{
char
dbFilePathPrefix
[
TSDB_FILENAME_LEN
]
=
{
0
};
sprintf
(
dbFilePathPrefix
,
"%s/vnode%d/db/"
,
tsDirectory
,
vnodeId
);
...
...
@@ -2626,8 +2643,10 @@ static void vnodeGetFilesSnapshot(SQInfo *pQInfo, int32_t vnodeId) {
continue
;
}
if
(
fid
>
pVnode
->
fileId
||
(
fid
<
pVnode
->
fileId
-
pVnode
->
numOfFiles
+
1
))
{
dError
(
"QInfo:%p error data file:%s in vid:%d, ignore"
,
pQInfo
,
pEntry
->
d_name
,
vnodeId
);
int32_t
firstFid
=
pVnode
->
fileId
-
pVnode
->
numOfFiles
+
1
;
if
(
fid
>
pVnode
->
fileId
||
fid
<
firstFid
)
{
dError
(
"QInfo:%p error data file:%s in vid:%d, fid:%d, fid range:%d-%d"
,
pQInfo
,
pEntry
->
d_name
,
vnodeId
,
firstFid
,
pVnode
->
fileId
);
continue
;
}
...
...
@@ -3145,7 +3164,7 @@ int32_t vnodeQuerySingleMeterPrepare(SQInfo *pQInfo, SMeterObj *pMeterObj, SMete
return
ret
;
}
vnode
GetFilesSnapshot
(
pQInfo
,
pMeterObj
->
vnode
);
vnode
OpenAllFiles
(
pQInfo
,
pMeterObj
->
vnode
);
// in case of last_row query, we set the query timestamp to pMeterObj->lastKey;
if
(
isFirstLastRowQuery
(
pQuery
))
{
...
...
@@ -3297,7 +3316,7 @@ int32_t vnodeMultiMeterQueryPrepare(SQInfo *pQInfo, SQuery *pQuery) {
tSidSetSort
(
pSupporter
->
pSidSet
);
vnode
GetFilesSnapshot
(
pQInfo
,
pMeter
->
vnode
);
vnode
OpenAllFiles
(
pQInfo
,
pMeter
->
vnode
);
pSupporter
->
pResult
=
calloc
(
1
,
sizeof
(
SOutputRes
)
*
pSupporter
->
pSidSet
->
numOfSubSet
);
if
(
pSupporter
->
pResult
==
NULL
)
{
return
TSDB_CODE_SERV_OUT_OF_MEMORY
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录