Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
329a0af2
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看板
未验证
提交
329a0af2
编写于
6月 27, 2021
作者:
S
Shengliang Guan
提交者:
GitHub
6月 27, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #6640 from taosdata/hotfix/td-4926
[TD-4926]<fix>:fix core during operator time usage calculate
上级
09ae4a83
ae972e2f
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
30 addition
and
7 deletion
+30
-7
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+30
-7
未找到文件。
src/query/src/qExecutor.c
浏览文件 @
329a0af2
...
@@ -3792,7 +3792,9 @@ void publishOperatorProfEvent(SOperatorInfo* operatorInfo, EQueryProfEventType e
...
@@ -3792,7 +3792,9 @@ void publishOperatorProfEvent(SOperatorInfo* operatorInfo, EQueryProfEventType e
event
.
operatorType
=
operatorInfo
->
operatorType
;
event
.
operatorType
=
operatorInfo
->
operatorType
;
SQInfo
*
qInfo
=
operatorInfo
->
pRuntimeEnv
->
qinfo
;
SQInfo
*
qInfo
=
operatorInfo
->
pRuntimeEnv
->
qinfo
;
if
(
qInfo
->
summary
.
queryProfEvents
)
{
taosArrayPush
(
qInfo
->
summary
.
queryProfEvents
,
&
event
);
taosArrayPush
(
qInfo
->
summary
.
queryProfEvents
,
&
event
);
}
}
}
void
publishQueryAbortEvent
(
SQInfo
*
pQInfo
,
int32_t
code
)
{
void
publishQueryAbortEvent
(
SQInfo
*
pQInfo
,
int32_t
code
)
{
...
@@ -3801,7 +3803,9 @@ void publishQueryAbortEvent(SQInfo* pQInfo, int32_t code) {
...
@@ -3801,7 +3803,9 @@ void publishQueryAbortEvent(SQInfo* pQInfo, int32_t code) {
event
.
eventTime
=
taosGetTimestampUs
();
event
.
eventTime
=
taosGetTimestampUs
();
event
.
abortCode
=
code
;
event
.
abortCode
=
code
;
if
(
pQInfo
->
summary
.
queryProfEvents
)
{
taosArrayPush
(
pQInfo
->
summary
.
queryProfEvents
,
&
event
);
taosArrayPush
(
pQInfo
->
summary
.
queryProfEvents
,
&
event
);
}
}
}
typedef
struct
{
typedef
struct
{
...
@@ -3837,10 +3841,21 @@ static void doOperatorExecProfOnce(SOperatorStackItem* item, SQueryProfEvent* ev
...
@@ -3837,10 +3841,21 @@ static void doOperatorExecProfOnce(SOperatorStackItem* item, SQueryProfEvent* ev
}
}
void
calculateOperatorProfResults
(
SQInfo
*
pQInfo
)
{
void
calculateOperatorProfResults
(
SQInfo
*
pQInfo
)
{
if
(
pQInfo
->
summary
.
queryProfEvents
==
NULL
)
{
qDebug
(
"query prof events array is null"
);
return
;
}
if
(
pQInfo
->
summary
.
operatorProfResults
==
NULL
)
{
qDebug
(
"operator prof results hash is null"
);
return
;
}
SArray
*
opStack
=
taosArrayInit
(
32
,
sizeof
(
SOperatorStackItem
));
SArray
*
opStack
=
taosArrayInit
(
32
,
sizeof
(
SOperatorStackItem
));
if
(
opStack
==
NULL
)
{
if
(
opStack
==
NULL
)
{
return
;
return
;
}
}
size_t
size
=
taosArrayGetSize
(
pQInfo
->
summary
.
queryProfEvents
);
size_t
size
=
taosArrayGetSize
(
pQInfo
->
summary
.
queryProfEvents
);
SHashObj
*
profResults
=
pQInfo
->
summary
.
operatorProfResults
;
SHashObj
*
profResults
=
pQInfo
->
summary
.
operatorProfResults
;
...
@@ -3897,12 +3912,14 @@ void queryCostStatis(SQInfo *pQInfo) {
...
@@ -3897,12 +3912,14 @@ void queryCostStatis(SQInfo *pQInfo) {
qDebug
(
"QInfo:0x%"
PRIx64
" :cost summary: winResPool size:%.2f Kb, numOfWin:%"
PRId64
", tableInfoSize:%.2f Kb, hashTable:%.2f Kb"
,
pQInfo
->
qId
,
pSummary
->
winInfoSize
/
1024
.
0
,
qDebug
(
"QInfo:0x%"
PRIx64
" :cost summary: winResPool size:%.2f Kb, numOfWin:%"
PRId64
", tableInfoSize:%.2f Kb, hashTable:%.2f Kb"
,
pQInfo
->
qId
,
pSummary
->
winInfoSize
/
1024
.
0
,
pSummary
->
numOfTimeWindows
,
pSummary
->
tableInfoSize
/
1024
.
0
,
pSummary
->
hashSize
/
1024
.
0
);
pSummary
->
numOfTimeWindows
,
pSummary
->
tableInfoSize
/
1024
.
0
,
pSummary
->
hashSize
/
1024
.
0
);
if
(
pSummary
->
operatorProfResults
)
{
SOperatorProfResult
*
opRes
=
taosHashIterate
(
pSummary
->
operatorProfResults
,
NULL
);
SOperatorProfResult
*
opRes
=
taosHashIterate
(
pSummary
->
operatorProfResults
,
NULL
);
while
(
opRes
!=
NULL
)
{
while
(
opRes
!=
NULL
)
{
qDebug
(
"QInfo:0x%"
PRIx64
" :cost summary: operator : %d, exec times: %"
PRId64
", self time: %"
PRId64
,
pQInfo
->
qId
,
qDebug
(
"QInfo:0x%"
PRIx64
" :cost summary: operator : %d, exec times: %"
PRId64
", self time: %"
PRId64
,
opRes
->
operatorType
,
opRes
->
sumRunTimes
,
opRes
->
sumSelfTime
);
pQInfo
->
qId
,
opRes
->
operatorType
,
opRes
->
sumRunTimes
,
opRes
->
sumSelfTime
);
opRes
=
taosHashIterate
(
pSummary
->
operatorProfResults
,
opRes
);
opRes
=
taosHashIterate
(
pSummary
->
operatorProfResults
,
opRes
);
}
}
}
}
}
//static void updateOffsetVal(SQueryRuntimeEnv *pRuntimeEnv, SDataBlockInfo *pBlockInfo) {
//static void updateOffsetVal(SQueryRuntimeEnv *pRuntimeEnv, SDataBlockInfo *pBlockInfo) {
...
@@ -4305,8 +4322,14 @@ int32_t doInitQInfo(SQInfo* pQInfo, STSBuf* pTsBuf, void* tsdb, void* sourceOptr
...
@@ -4305,8 +4322,14 @@ int32_t doInitQInfo(SQInfo* pQInfo, STSBuf* pTsBuf, void* tsdb, void* sourceOptr
int32_t
numOfTables
=
(
int32_t
)
pQueryAttr
->
tableGroupInfo
.
numOfTables
;
int32_t
numOfTables
=
(
int32_t
)
pQueryAttr
->
tableGroupInfo
.
numOfTables
;
pQInfo
->
summary
.
tableInfoSize
+=
(
numOfTables
*
sizeof
(
STableQueryInfo
));
pQInfo
->
summary
.
tableInfoSize
+=
(
numOfTables
*
sizeof
(
STableQueryInfo
));
pQInfo
->
summary
.
queryProfEvents
=
taosArrayInit
(
512
,
sizeof
(
SQueryProfEvent
));
pQInfo
->
summary
.
queryProfEvents
=
taosArrayInit
(
512
,
sizeof
(
SQueryProfEvent
));
if
(
pQInfo
->
summary
.
queryProfEvents
==
NULL
)
{
qDebug
(
"failed to allocate query prof events array"
);
}
pQInfo
->
summary
.
operatorProfResults
=
pQInfo
->
summary
.
operatorProfResults
=
taosHashInit
(
8
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_TINYINT
),
true
,
HASH_NO_LOCK
);
taosHashInit
(
8
,
taosGetDefaultHashFunction
(
TSDB_DATA_TYPE_TINYINT
),
true
,
HASH_NO_LOCK
);
if
(
pQInfo
->
summary
.
operatorProfResults
==
NULL
)
{
qDebug
(
"failed to allocate operator prof results hash"
);
}
code
=
setupQueryRuntimeEnv
(
pRuntimeEnv
,
(
int32_t
)
pQueryAttr
->
tableGroupInfo
.
numOfTables
,
pOperator
,
param
);
code
=
setupQueryRuntimeEnv
(
pRuntimeEnv
,
(
int32_t
)
pQueryAttr
->
tableGroupInfo
.
numOfTables
,
pOperator
,
param
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录