From dead667adc60c3597987525b7ec75349ee734510 Mon Sep 17 00:00:00 2001 From: AlexDuan <417921451@qq.com> Date: Sun, 26 Sep 2021 16:44:48 +0800 Subject: [PATCH] fixed merge error --- src/query/src/qAggMain.c | 11 +++++------ src/query/src/tdigest.c | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/query/src/qAggMain.c b/src/query/src/qAggMain.c index 6f29f96df7..dd5ed1ea33 100644 --- a/src/query/src/qAggMain.c +++ b/src/query/src/qAggMain.c @@ -2502,18 +2502,17 @@ static void tdigest_merge(SQLFunctionCtx *pCtx) { SAPercentileInfo *pInput = (SAPercentileInfo *)GET_INPUT_DATA_LIST(pCtx); assert(pInput->pTDigest); pInput->pTDigest = (TDigest*)((char*)pInput + sizeof(SAPercentileInfo)); - pInput->pTDigest->centroids = (SCentroid*)((char*)pInput + sizeof(SAPercentileInfo) + sizeof(TDigest)); + tdigestAutoFill(pInput->pTDigest, COMPRESSION); // input merge no elements , no need merge - if(pInput->pTDigest->num_centroids == 0) { + if(pInput->pTDigest->num_centroids == 0 && pInput->pTDigest->num_buffered_pts == 0) { return ; } SAPercentileInfo *pOutput = getAPerctInfo(pCtx); - TDigest* pTDigest = pOutput->pTDigest; - if(pTDigest->num_centroids == 0) { - memcpy(pTDigest, pInput->pTDigest, (size_t)TDIGEST_SIZE(COMPRESSION)); - tdigestAutoFill(pTDigest, COMPRESSION); + if(pOutput->pTDigest->num_centroids == 0) { + memcpy(pOutput->pTDigest, pInput->pTDigest, (size_t)TDIGEST_SIZE(COMPRESSION)); + tdigestAutoFill(pOutput->pTDigest, COMPRESSION); } else { tdigestMerge(pOutput->pTDigest, pInput->pTDigest); } diff --git a/src/query/src/tdigest.c b/src/query/src/tdigest.c index 67f8b7d27d..29ff707bef 100644 --- a/src/query/src/tdigest.c +++ b/src/query/src/tdigest.c @@ -77,7 +77,7 @@ static void mergeCentroid(SMergeArgs *args, SCentroid *merge) { args->weight_so_far += merge->weight; k2 = INTEGRATED_LOCATION(args->t->size, - args->weight_so_far / (args->t->total_weight + merge->weight)); + args->weight_so_far / args->t->total_weight); //idx++ if(k2 - args->k1 > 1 && c->weight > 0) { if(args->idx + 1 < args->t->size -- GitLab