diff --git a/include/libs/function/taosudf.h b/include/libs/function/taosudf.h index 3abefd6979df6e269a015b49d33ca2e488809fb1..b4daa895fd1a66ae01db72704c37c7a8707a8ace 100644 --- a/include/libs/function/taosudf.h +++ b/include/libs/function/taosudf.h @@ -196,6 +196,7 @@ static FORCE_INLINE void udfColDataSetNull(SUdfColumn *pColumn, int32_t row) { udfColDataSetNull_f(pColumn, row); } pColumn->hasNull = true; + pColumn->colData.numOfRows = ((int32_t)(row + 1) > pColumn->colData.numOfRows) ? (int32_t)(row + 1) : pColumn->colData.numOfRows; } static FORCE_INLINE int32_t udfColDataSet(SUdfColumn *pColumn, uint32_t currentRow, const char *pData, bool isNull) { diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index 1593f97105818a996de1fdb6db8d950c76ad78fe..4bfa5ceb3b6f168d03cb64110199384b7aeb41d7 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -621,11 +621,7 @@ void udfdProcessSetupRequest(SUvUdfWork *uvUdf, SUdfRequest *request) { rsp.code = code; rsp.setupRsp.udfHandle = (int64_t)(handle); rsp.setupRsp.outputType = udf->outputType; - if (!IS_VAR_DATA_TYPE(udf->outputType)) { - rsp.setupRsp.bytes = udf->outputLen; - } else { - rsp.setupRsp.bytes = udf->outputLen + VARSTR_HEADER_SIZE; - } + rsp.setupRsp.bytes = udf->outputLen; rsp.setupRsp.bufSize = udf->bufSize; int32_t len = encodeUdfResponse(NULL, &rsp); @@ -654,11 +650,7 @@ void udfdProcessCallRequest(SUvUdfWork *uvUdf, SUdfRequest *request) { switch (call->callType) { case TSDB_UDF_CALL_SCALA_PROC: { SUdfColumn output = {0}; - if (IS_VAR_DATA_TYPE(udf->outputType)) { - output.colMeta.bytes = udf->outputLen + VARSTR_HEADER_SIZE; - } else { - output.colMeta.bytes = udf->outputLen; - } + output.colMeta.bytes = udf->outputLen; output.colMeta.type = udf->outputType; output.colMeta.precision = 0; output.colMeta.scale = 0; diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index fdc0a08371ee31f1e6a7d53dd3ed550b1a042d20..da9c1b91856b98c4cad7967ec05e85a632b001ee 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -6395,6 +6395,7 @@ static int32_t translateCreateFunction(STranslateContext* pCxt, SCreateFunctionS req.funcType = pStmt->isAgg ? TSDB_FUNC_TYPE_AGGREGATE : TSDB_FUNC_TYPE_SCALAR; req.scriptType = pStmt->language; req.outputType = pStmt->outputDt.type; + pStmt->outputDt.bytes = calcTypeBytes(pStmt->outputDt); req.outputLen = pStmt->outputDt.bytes; req.bufSize = pStmt->bufSize; int32_t code = readFromFile(pStmt->libraryPath, &req.codeLen, &req.pCode);