From c211427e2ea2da5ebad3b906cd536ef2856f0d2b Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Wed, 27 Apr 2022 19:03:41 +0800 Subject: [PATCH] fix(query): replace nan/inf result in math functions TD-15172 --- source/libs/scalar/src/sclfunc.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/source/libs/scalar/src/sclfunc.c b/source/libs/scalar/src/sclfunc.c index 28514c3605..94b84c5861 100644 --- a/source/libs/scalar/src/sclfunc.c +++ b/source/libs/scalar/src/sclfunc.c @@ -133,7 +133,12 @@ static int32_t doScalarFunctionUnique(SScalarParam *pInput, int32_t inputNum, SS colDataAppendNULL(pOutputData, i); continue; } - out[i] = valFn(getValueFn(pInputData->pData, i)); + double result = valFn(getValueFn(pInputData->pData, i)); + if (isinf(result) || isnan(result)) { + colDataAppendNULL(pOutputData, i); + } else { + out[i] = result; + } } pOutput->numOfRows = pInput->numOfRows; @@ -162,7 +167,12 @@ static int32_t doScalarFunctionUnique2(SScalarParam *pInput, int32_t inputNum, S colDataAppendNULL(pOutputData, i); continue; } - out[i] = valFn(getValueFn[0](pInputData[0]->pData, i), getValueFn[1](pInputData[1]->pData, 0)); + double result = valFn(getValueFn[0](pInputData[0]->pData, i), getValueFn[1](pInputData[1]->pData, 0)); + if (isinf(result) || isnan(result)) { + colDataAppendNULL(pOutputData, i); + } else { + out[i] = result; + } } pOutput->numOfRows = pInput->numOfRows;