提交 72d9b078 编写于 作者: G Ganlin Zhao

fix(query): fix avg/sum function result overflown output inf/nan

TD-15923
上级 e27f8e8a
...@@ -502,6 +502,11 @@ int32_t sumFunction(SqlFunctionCtx* pCtx) { ...@@ -502,6 +502,11 @@ int32_t sumFunction(SqlFunctionCtx* pCtx) {
} }
} }
//check for overflow
if (isinf(pSumRes->dsum) || isnan(pSumRes->dsum)) {
GET_RES_INFO(pCtx)->isNullRes = 1;
}
_sum_over: _sum_over:
// data in the check operation are all null, not output // data in the check operation are all null, not output
SET_VAL(GET_RES_INFO(pCtx), numOfElem, 1); SET_VAL(GET_RES_INFO(pCtx), numOfElem, 1);
...@@ -813,6 +818,9 @@ int32_t avgFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { ...@@ -813,6 +818,9 @@ int32_t avgFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
if (IS_INTEGER_TYPE(type)) { if (IS_INTEGER_TYPE(type)) {
pAvgRes->result = pAvgRes->sum.isum / ((double)pAvgRes->count); pAvgRes->result = pAvgRes->sum.isum / ((double)pAvgRes->count);
} else { } else {
if (isinf(pAvgRes->sum.dsum) || isnan(pAvgRes->sum.dsum)) {
GET_RES_INFO(pCtx)->isNullRes = 1;
}
pAvgRes->result = pAvgRes->sum.dsum / ((double)pAvgRes->count); pAvgRes->result = pAvgRes->sum.dsum / ((double)pAvgRes->count);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册