From a601081e6d930e338b07ec98986847406bae6ddc Mon Sep 17 00:00:00 2001 From: Ganlin Zhao Date: Fri, 22 Apr 2022 15:56:52 +0800 Subject: [PATCH] refactor(query): limit cast var type length to 1000 --- source/libs/function/src/builtins.c | 2 +- source/libs/scalar/src/sclfunc.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/libs/function/src/builtins.c b/source/libs/function/src/builtins.c index ce7384cbbe..909cf9d7ef 100644 --- a/source/libs/function/src/builtins.c +++ b/source/libs/function/src/builtins.c @@ -332,7 +332,7 @@ static int32_t translateCast(SFunctionNode* pFunc, char* pErrBuf, int32_t len) { return invaildFuncParaTypeErrMsg(pErrBuf, len, pFunc->functionName); } int32_t para2Bytes = pFunc->node.resType.bytes; - if (para2Bytes <= 0) { //non-positive value or overflow + if (para2Bytes <= 0 || para2Bytes > 1000) { //cast dst var type length limits to 1000 return invaildFuncParaValueErrMsg(pErrBuf, len, pFunc->functionName); } return TSDB_CODE_SUCCESS; diff --git a/source/libs/scalar/src/sclfunc.c b/source/libs/scalar/src/sclfunc.c index 938f9d1f2d..c8e8780552 100644 --- a/source/libs/scalar/src/sclfunc.c +++ b/source/libs/scalar/src/sclfunc.c @@ -644,9 +644,9 @@ int32_t substrFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu } int32_t castFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) { - int16_t inputType = pInput[0].columnData->info.type; - int16_t outputType = pOutput[0].columnData->info.type; - int64_t outputLen = pOutput[0].columnData->info.bytes; + int16_t inputType = GET_PARAM_TYPE(&pInput[0]); + int16_t outputType = GET_PARAM_TYPE(&pOutput[0]); + int64_t outputLen = GET_PARAM_BYTES(&pOutput[0]); if (IS_VAR_DATA_TYPE(outputType)) { int32_t factor = (TSDB_DATA_TYPE_NCHAR == outputType) ? TSDB_NCHAR_SIZE : 1;