未验证 提交 f9188351 编写于 作者: D dapan1121 提交者: GitHub

Merge pull request #20127 from taosdata/fix/TD-22733

fix: percentile finalize wrong error code issue
...@@ -1689,53 +1689,50 @@ int32_t percentileFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) { ...@@ -1689,53 +1689,50 @@ int32_t percentileFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
double v = 0; double v = 0;
tMemBucket* pMemBucket = ppInfo->pMemBucket; tMemBucket* pMemBucket = ppInfo->pMemBucket;
if (pMemBucket == NULL || pMemBucket->total == 0) { // check for null if (pMemBucket != NULL && pMemBucket->total > 0) { // check for null
code = TSDB_CODE_FAILED; if (pCtx->numOfParams > 2) {
goto _fin_error; char buf[512] = {0};
} size_t len = 1;
if (pCtx->numOfParams > 2) { varDataVal(buf)[0] = '[';
char buf[512] = {0}; for (int32_t i = 1; i < pCtx->numOfParams; ++i) {
size_t len = 1; SVariant* pVal = &pCtx->param[i].param;
varDataVal(buf)[0] = '['; GET_TYPED_DATA(v, double, pVal->nType, &pVal->i);
for (int32_t i = 1; i < pCtx->numOfParams; ++i) {
SVariant* pVal = &pCtx->param[i].param;
GET_TYPED_DATA(v, double, pVal->nType, &pVal->i); int32_t code = getPercentile(pMemBucket, v, &ppInfo->result);
if (code != TSDB_CODE_SUCCESS) {
goto _fin_error;
}
int32_t code = getPercentile(pMemBucket, v, &ppInfo->result); if (i == pCtx->numOfParams - 1) {
if (code != TSDB_CODE_SUCCESS) { len += snprintf(varDataVal(buf) + len, sizeof(buf) - VARSTR_HEADER_SIZE - len, "%.6lf]", ppInfo->result);
goto _fin_error; } else {
len += snprintf(varDataVal(buf) + len, sizeof(buf) - VARSTR_HEADER_SIZE - len, "%.6lf, ", ppInfo->result);
}
} }
if (i == pCtx->numOfParams - 1) { int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
len += snprintf(varDataVal(buf) + len, sizeof(buf) - VARSTR_HEADER_SIZE - len, "%.6lf]", ppInfo->result); SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
} else {
len += snprintf(varDataVal(buf) + len, sizeof(buf) - VARSTR_HEADER_SIZE - len, "%.6lf, ", ppInfo->result);
}
}
int32_t slotId = pCtx->pExpr->base.resSchema.slotId; varDataSetLen(buf, len);
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId); colDataAppend(pCol, pBlock->info.rows, buf, false);
varDataSetLen(buf, len); tMemBucketDestroy(pMemBucket);
colDataAppend(pCol, pBlock->info.rows, buf, false); return pResInfo->numOfRes;
} else {
SVariant* pVal = &pCtx->param[1].param;
tMemBucketDestroy(pMemBucket); GET_TYPED_DATA(v, double, pVal->nType, &pVal->i);
return pResInfo->numOfRes;
} else {
SVariant* pVal = &pCtx->param[1].param;
GET_TYPED_DATA(v, double, pVal->nType, &pVal->i); code = getPercentile(pMemBucket, v, &ppInfo->result);
if (code != TSDB_CODE_SUCCESS) {
goto _fin_error;
}
code = getPercentile(pMemBucket, v, &ppInfo->result); tMemBucketDestroy(pMemBucket);
if (code != TSDB_CODE_SUCCESS) { return functionFinalize(pCtx, pBlock);
goto _fin_error;
} }
tMemBucketDestroy(pMemBucket);
return functionFinalize(pCtx, pBlock);
} }
_fin_error: _fin_error:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册