Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
779cce77
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
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看板
提交
779cce77
编写于
9月 07, 2020
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[td-225] fix the taosd crashed by too many empty table with group by tbname query.
上级
1254aa77
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
12 addition
and
12 deletion
+12
-12
src/system/detail/inc/vnodeQueryImpl.h
src/system/detail/inc/vnodeQueryImpl.h
+1
-1
src/system/detail/src/vnodeQueryImpl.c
src/system/detail/src/vnodeQueryImpl.c
+4
-4
src/system/detail/src/vnodeQueryProcess.c
src/system/detail/src/vnodeQueryProcess.c
+7
-7
未找到文件。
src/system/detail/inc/vnodeQueryImpl.h
浏览文件 @
779cce77
...
...
@@ -162,7 +162,7 @@ void disableFunctForSuppleScan(STableQuerySupportObj* pSupporter, int32_t ord
void
enableFunctForMasterScan
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
int32_t
order
);
int32_t
mergeMetersResultToOneGroups
(
STableQuerySupportObj
*
pSupporter
);
void
copyFromWindowResToSData
(
SQInfo
*
pQInfo
,
SWindowResult
*
result
);
void
copyFromWindowResToSData
(
SQInfo
*
pQInfo
,
SWindowResult
*
result
,
int32_t
numOfWindowRes
);
SBlockInfo
getBlockInfo
(
SQueryRuntimeEnv
*
pRuntimeEnv
);
SBlockInfo
getBlockBasicInfo
(
SQueryRuntimeEnv
*
pRuntimeEnv
,
void
*
pBlock
,
int32_t
type
);
...
...
src/system/detail/src/vnodeQueryImpl.c
浏览文件 @
779cce77
...
...
@@ -7698,7 +7698,7 @@ static int32_t getNumOfSubset(STableQuerySupportObj *pSupporter) {
return
totalSubset
;
}
static
int32_t
doCopyToSData
(
STableQuerySupportObj
*
pSupporter
,
SWindowResult
*
result
,
int32_t
orderType
)
{
static
int32_t
doCopyToSData
(
STableQuerySupportObj
*
pSupporter
,
SWindowResult
*
result
,
int32_t
numOfWindowRes
,
int32_t
orderType
)
{
SQueryRuntimeEnv
*
pRuntimeEnv
=
&
pSupporter
->
runtimeEnv
;
SQuery
*
pQuery
=
pRuntimeEnv
->
pQuery
;
...
...
@@ -7717,7 +7717,7 @@ static int32_t doCopyToSData(STableQuerySupportObj *pSupporter, SWindowResult *r
step
=
-
1
;
}
for
(
int32_t
i
=
startIdx
;
(
i
<
totalSubset
)
&&
(
i
>=
0
);
i
+=
step
)
{
for
(
int32_t
i
=
startIdx
;
(
i
<
totalSubset
&&
i
<
numOfWindowRes
)
&&
(
i
>=
0
);
i
+=
step
)
{
if
(
result
[
i
].
numOfRows
==
0
)
{
pSupporter
->
offset
=
0
;
pSupporter
->
subgroupIdx
+=
1
;
...
...
@@ -7772,12 +7772,12 @@ static int32_t doCopyToSData(STableQuerySupportObj *pSupporter, SWindowResult *r
* @param pQInfo
* @param result
*/
void
copyFromWindowResToSData
(
SQInfo
*
pQInfo
,
SWindowResult
*
result
)
{
void
copyFromWindowResToSData
(
SQInfo
*
pQInfo
,
SWindowResult
*
result
,
int32_t
numOfWindowRes
)
{
SQuery
*
pQuery
=
&
pQInfo
->
query
;
STableQuerySupportObj
*
pSupporter
=
pQInfo
->
pTableQuerySupporter
;
int32_t
orderType
=
(
pQuery
->
pGroupbyExpr
!=
NULL
)
?
pQuery
->
pGroupbyExpr
->
orderType
:
TSQL_SO_ASC
;
int32_t
numOfResult
=
doCopyToSData
(
pSupporter
,
result
,
orderType
);
int32_t
numOfResult
=
doCopyToSData
(
pSupporter
,
result
,
numOfWindowRes
,
orderType
);
pQuery
->
pointsRead
+=
numOfResult
;
assert
(
pQuery
->
pointsRead
<=
pQuery
->
pointsToRead
);
...
...
src/system/detail/src/vnodeQueryProcess.c
浏览文件 @
779cce77
...
...
@@ -664,7 +664,7 @@ static void vnodeSTableSeqProcessor(SQInfo *pQInfo) {
* we need to return it to client in the first place.
*/
if
(
pSupporter
->
subgroupIdx
>
0
)
{
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
);
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
,
pRuntimeEnv
->
windowResInfo
.
size
);
pQInfo
->
pointsRead
+=
pQuery
->
pointsRead
;
if
(
pQuery
->
pointsRead
>
0
)
{
...
...
@@ -815,7 +815,7 @@ static void vnodeSTableSeqProcessor(SQInfo *pQInfo) {
pQInfo
->
pTableQuerySupporter
->
subgroupIdx
=
0
;
pQuery
->
pointsRead
=
0
;
copyFromWindowResToSData
(
pQInfo
,
pWindowResInfo
->
pResult
);
copyFromWindowResToSData
(
pQInfo
,
pWindowResInfo
->
pResult
,
pWindowResInfo
->
size
);
}
pQInfo
->
pointsRead
+=
pQuery
->
pointsRead
;
...
...
@@ -917,7 +917,7 @@ static void vnodeMultiMeterQueryProcessor(SQInfo *pQInfo) {
displayInterResult
(
pQuery
->
sdata
,
pQuery
,
pQuery
->
sdata
[
0
]
->
len
);
#endif
}
else
{
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
);
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
,
pRuntimeEnv
->
windowResInfo
.
size
);
}
pQInfo
->
pointsRead
+=
pQuery
->
pointsRead
;
...
...
@@ -975,7 +975,7 @@ static void vnodeMultiMeterQueryProcessor(SQInfo *pQInfo) {
#endif
}
}
else
{
// not a interval query
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
);
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
,
pRuntimeEnv
->
windowResInfo
.
size
);
}
// handle the limitation of output buffer
...
...
@@ -1136,7 +1136,7 @@ static void vnodeSingleTableIntervalProcessor(SQInfo *pQInfo) {
if
(
pQuery
->
intervalTime
>
0
)
{
pSupporter
->
subgroupIdx
=
0
;
// always start from 0
pQuery
->
pointsRead
=
0
;
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
);
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
,
pRuntimeEnv
->
windowResInfo
.
size
);
clearFirstNTimeWindow
(
pRuntimeEnv
,
pSupporter
->
subgroupIdx
);
}
...
...
@@ -1172,7 +1172,7 @@ static void vnodeSingleTableIntervalProcessor(SQInfo *pQInfo) {
if
(
isGroupbyNormalCol
(
pQuery
->
pGroupbyExpr
))
{
//todo refactor with merge interval time result
pSupporter
->
subgroupIdx
=
0
;
pQuery
->
pointsRead
=
0
;
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
);
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
,
pRuntimeEnv
->
windowResInfo
.
size
);
clearFirstNTimeWindow
(
pRuntimeEnv
,
pSupporter
->
subgroupIdx
);
}
...
...
@@ -1249,7 +1249,7 @@ void vnodeSingleTableQuery(SSchedMsg *pMsg) {
pSupporter
->
subgroupIdx
=
0
;
// always start from 0
if
(
pRuntimeEnv
->
windowResInfo
.
size
>
0
)
{
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
);
copyFromWindowResToSData
(
pQInfo
,
pRuntimeEnv
->
windowResInfo
.
pResult
,
pRuntimeEnv
->
windowResInfo
.
size
);
pQInfo
->
pointsRead
+=
pQuery
->
pointsRead
;
clearFirstNTimeWindow
(
pRuntimeEnv
,
pSupporter
->
subgroupIdx
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录