Merge pull request #6640 from taosdata/hotfix/td-4926
[TD-4926]<fix>:fix core during operator time usage calculate
This commit is contained in:
commit
329a0af28d
|
@ -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;
|
||||||
taosArrayPush(qInfo->summary.queryProfEvents, &event);
|
if (qInfo->summary.queryProfEvents) {
|
||||||
|
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) {
|
||||||
event.eventTime = taosGetTimestampUs();
|
event.eventTime = taosGetTimestampUs();
|
||||||
event.abortCode = code;
|
event.abortCode = code;
|
||||||
|
|
||||||
taosArrayPush(pQInfo->summary.queryProfEvents, &event);
|
if (pQInfo->summary.queryProfEvents) {
|
||||||
|
taosArrayPush(pQInfo->summary.queryProfEvents, &event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -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,11 +3912,13 @@ 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);
|
||||||
|
|
||||||
SOperatorProfResult* opRes = taosHashIterate(pSummary->operatorProfResults, NULL);
|
if (pSummary->operatorProfResults) {
|
||||||
while (opRes != NULL) {
|
SOperatorProfResult* opRes = taosHashIterate(pSummary->operatorProfResults, NULL);
|
||||||
qDebug("QInfo:0x%"PRIx64" :cost summary: operator : %d, exec times: %"PRId64", self time: %"PRId64, pQInfo->qId,
|
while (opRes != NULL) {
|
||||||
opRes->operatorType, opRes->sumRunTimes, opRes->sumSelfTime );
|
qDebug("QInfo:0x%" PRIx64 " :cost summary: operator : %d, exec times: %" PRId64 ", self time: %" PRId64,
|
||||||
opRes = taosHashIterate(pSummary->operatorProfResults, opRes);
|
pQInfo->qId, opRes->operatorType, opRes->sumRunTimes, opRes->sumSelfTime);
|
||||||
|
opRes = taosHashIterate(pSummary->operatorProfResults, opRes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue