From 82dc04780ff52add23ff3eba46c26008dc32db39 Mon Sep 17 00:00:00 2001 From: shenglian zhou Date: Sun, 19 Sep 2021 12:51:21 +0800 Subject: [PATCH] add group by tagname support before fixing coredump --- src/client/src/tscSQLParser.c | 1 + src/client/src/tscUtil.c | 4 +++- src/query/src/qAggMain.c | 1 + src/query/src/qUtil.c | 4 +++- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/client/src/tscSQLParser.c b/src/client/src/tscSQLParser.c index 548a280d9e..24b59d205f 100644 --- a/src/client/src/tscSQLParser.c +++ b/src/client/src/tscSQLParser.c @@ -7201,6 +7201,7 @@ int32_t doFunctionsCompatibleCheck(SSqlCmd* pCmd, SQueryInfo* pQueryInfo, char* } if (IS_MULTIOUTPUT(aAggs[f].status) && f != TSDB_FUNC_TOP && f != TSDB_FUNC_BOTTOM && f != TSDB_FUNC_DIFF && + f != TSDB_FUNC_MAVG && f != TSDB_FUNC_CSUM && f != TSDB_FUNC_SAMPLE && f != TSDB_FUNC_DERIVATIVE && f != TSDB_FUNC_TAGPRJ && f != TSDB_FUNC_PRJ) { return invalidOperationMsg(msg, msg1); } diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index 60a6e241cc..24080662fa 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -612,7 +612,9 @@ bool isSimpleAggregateRv(SQueryInfo* pQueryInfo) { } if ((!IS_MULTIOUTPUT(aAggs[functionId].status)) || - (functionId == TSDB_FUNC_TOP || functionId == TSDB_FUNC_BOTTOM || functionId == TSDB_FUNC_TS_COMP)) { + (functionId == TSDB_FUNC_TOP || functionId == TSDB_FUNC_BOTTOM || + functionId == TSDB_FUNC_TS_COMP || + functionId == TSDB_FUNC_SAMPLE)) { return true; } } diff --git a/src/query/src/qAggMain.c b/src/query/src/qAggMain.c index 3e01f7ed5a..32c8630ff2 100644 --- a/src/query/src/qAggMain.c +++ b/src/query/src/qAggMain.c @@ -4771,6 +4771,7 @@ static void sample_func_finalizer(SQLFunctionCtx *pCtx) { assert(pResInfo->hasResult != DATA_SET_FLAG); } + pResInfo->numOfRes = pRes->numSampled; GET_TRUE_DATA_TYPE(); copySampleFuncRes(pCtx, type); diff --git a/src/query/src/qUtil.c b/src/query/src/qUtil.c index bc27e094db..8babdbf1c3 100644 --- a/src/query/src/qUtil.c +++ b/src/query/src/qUtil.c @@ -33,7 +33,9 @@ typedef struct SCompSupporter { int32_t getRowNumForMultioutput(SQueryAttr* pQueryAttr, bool topBottomQuery, bool stable) { if (pQueryAttr && (!stable)) { for (int16_t i = 0; i < pQueryAttr->numOfOutput; ++i) { - if (pQueryAttr->pExpr1[i].base.functionId == TSDB_FUNC_TOP || pQueryAttr->pExpr1[i].base.functionId == TSDB_FUNC_BOTTOM) { + if (pQueryAttr->pExpr1[i].base.functionId == TSDB_FUNC_TOP || + pQueryAttr->pExpr1[i].base.functionId == TSDB_FUNC_BOTTOM || + pQueryAttr->pExpr1[i].base.functionId == TSDB_FUNC_SAMPLE) { return (int32_t)pQueryAttr->pExpr1[i].base.param[0].i64; } } -- GitLab