[td-3141] <fix>: fix the crash of taosd caused by a percentile query on the unsigned numeric data type.
This commit is contained in:
parent
d18770ffa1
commit
f3555e5f03
|
@ -2733,15 +2733,19 @@ static void percentile_function(SQLFunctionCtx *pCtx) {
|
||||||
if (pInfo->stage == 0) {
|
if (pInfo->stage == 0) {
|
||||||
if (pCtx->preAggVals.isSet) {
|
if (pCtx->preAggVals.isSet) {
|
||||||
double tmin = 0.0, tmax = 0.0;
|
double tmin = 0.0, tmax = 0.0;
|
||||||
if (pCtx->inputType >= TSDB_DATA_TYPE_TINYINT && pCtx->inputType <= TSDB_DATA_TYPE_BIGINT) {
|
if (IS_SIGNED_NUMERIC_TYPE(pCtx->inputType)) {
|
||||||
tmin = (double)GET_INT64_VAL(&pCtx->preAggVals.statis.min);
|
tmin = (double)GET_INT64_VAL(&pCtx->preAggVals.statis.min);
|
||||||
tmax = (double)GET_INT64_VAL(&pCtx->preAggVals.statis.max);
|
tmax = (double)GET_INT64_VAL(&pCtx->preAggVals.statis.max);
|
||||||
} else if (pCtx->inputType == TSDB_DATA_TYPE_DOUBLE || pCtx->inputType == TSDB_DATA_TYPE_FLOAT) {
|
} else if (IS_FLOAT_TYPE(pCtx->inputType)) {
|
||||||
tmin = GET_DOUBLE_VAL(&pCtx->preAggVals.statis.min);
|
tmin = GET_DOUBLE_VAL(&pCtx->preAggVals.statis.min);
|
||||||
tmax = GET_DOUBLE_VAL(&pCtx->preAggVals.statis.max);
|
tmax = GET_DOUBLE_VAL(&pCtx->preAggVals.statis.max);
|
||||||
|
} else if (IS_UNSIGNED_NUMERIC_TYPE(pCtx->inputType)) {
|
||||||
|
tmin = (double)GET_UINT64_VAL(&pCtx->preAggVals.statis.min);
|
||||||
|
tmax = (double)GET_UINT64_VAL(&pCtx->preAggVals.statis.max);
|
||||||
} else {
|
} else {
|
||||||
assert(true);
|
assert(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GET_DOUBLE_VAL(&pInfo->minval) > tmin) {
|
if (GET_DOUBLE_VAL(&pInfo->minval) > tmin) {
|
||||||
SET_DOUBLE_VAL(&pInfo->minval, tmin);
|
SET_DOUBLE_VAL(&pInfo->minval, tmin);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue