Merge pull request #21371 from taosdata/fix/TD-24234
fix: distinct wrong result issue
This commit is contained in:
commit
778b7b84fd
|
@ -929,7 +929,7 @@ static void mndDumpDbCfgInfo(SDbCfgRsp *cfgRsp, SDbObj *pDb) {
|
||||||
cfgRsp->walRetentionSize = pDb->cfg.walRetentionSize;
|
cfgRsp->walRetentionSize = pDb->cfg.walRetentionSize;
|
||||||
cfgRsp->walSegmentSize = pDb->cfg.walSegmentSize;
|
cfgRsp->walSegmentSize = pDb->cfg.walSegmentSize;
|
||||||
cfgRsp->numOfRetensions = pDb->cfg.numOfRetensions;
|
cfgRsp->numOfRetensions = pDb->cfg.numOfRetensions;
|
||||||
cfgRsp->pRetensions = pDb->cfg.pRetensions;
|
cfgRsp->pRetensions = taosArrayDup(pDb->cfg.pRetensions, NULL);
|
||||||
cfgRsp->schemaless = pDb->cfg.schemaless;
|
cfgRsp->schemaless = pDb->cfg.schemaless;
|
||||||
cfgRsp->sstTrigger = pDb->cfg.sstTrigger;
|
cfgRsp->sstTrigger = pDb->cfg.sstTrigger;
|
||||||
}
|
}
|
||||||
|
@ -972,6 +972,8 @@ static int32_t mndProcessGetDbCfgReq(SRpcMsg *pReq) {
|
||||||
|
|
||||||
_OVER:
|
_OVER:
|
||||||
|
|
||||||
|
tFreeSDbCfgRsp(&cfgRsp);
|
||||||
|
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
mError("db:%s, failed to get cfg since %s", cfgReq.db, terrstr());
|
mError("db:%s, failed to get cfg since %s", cfgReq.db, terrstr());
|
||||||
}
|
}
|
||||||
|
|
|
@ -551,11 +551,16 @@ static SNode* createGroupingSetNode(SNode* pExpr) {
|
||||||
return (SNode*)pGroupingSet;
|
return (SNode*)pGroupingSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
static EGroupAction getGroupAction(SLogicPlanContext* pCxt, SSelectStmt* pSelect) {
|
static EGroupAction getDistinctGroupAction(SLogicPlanContext* pCxt, SSelectStmt* pSelect) {
|
||||||
return (pCxt->pPlanCxt->streamQuery || NULL != pSelect->pLimit || NULL != pSelect->pSlimit) ? GROUP_ACTION_KEEP
|
return (pCxt->pPlanCxt->streamQuery || NULL != pSelect->pLimit || NULL != pSelect->pSlimit) ? GROUP_ACTION_KEEP
|
||||||
: GROUP_ACTION_NONE;
|
: GROUP_ACTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static EGroupAction getGroupAction(SLogicPlanContext* pCxt, SSelectStmt* pSelect) {
|
||||||
|
return ((pCxt->pPlanCxt->streamQuery || NULL != pSelect->pLimit || NULL != pSelect->pSlimit) && !pSelect->isDistinct) ? GROUP_ACTION_KEEP
|
||||||
|
: GROUP_ACTION_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
static EDataOrderLevel getRequireDataOrder(bool needTimeline, SSelectStmt* pSelect) {
|
static EDataOrderLevel getRequireDataOrder(bool needTimeline, SSelectStmt* pSelect) {
|
||||||
return needTimeline ? (NULL != pSelect->pPartitionByList ? DATA_ORDER_LEVEL_IN_GROUP : DATA_ORDER_LEVEL_GLOBAL)
|
return needTimeline ? (NULL != pSelect->pPartitionByList ? DATA_ORDER_LEVEL_IN_GROUP : DATA_ORDER_LEVEL_GLOBAL)
|
||||||
: DATA_ORDER_LEVEL_NONE;
|
: DATA_ORDER_LEVEL_NONE;
|
||||||
|
@ -1159,7 +1164,7 @@ static int32_t createDistinctLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSe
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
pAgg->node.groupAction = GROUP_ACTION_CLEAR;
|
pAgg->node.groupAction = GROUP_ACTION_CLEAR;//getDistinctGroupAction(pCxt, pSelect);
|
||||||
pAgg->node.requireDataOrder = DATA_ORDER_LEVEL_NONE;
|
pAgg->node.requireDataOrder = DATA_ORDER_LEVEL_NONE;
|
||||||
pAgg->node.resultDataOrder = DATA_ORDER_LEVEL_NONE;
|
pAgg->node.resultDataOrder = DATA_ORDER_LEVEL_NONE;
|
||||||
|
|
||||||
|
|
|
@ -900,6 +900,7 @@
|
||||||
,,y,script,./test.sh -f tsim/query/multi_order_by.sim
|
,,y,script,./test.sh -f tsim/query/multi_order_by.sim
|
||||||
,,y,script,./test.sh -f tsim/query/sys_tbname.sim
|
,,y,script,./test.sh -f tsim/query/sys_tbname.sim
|
||||||
,,y,script,./test.sh -f tsim/query/groupby.sim
|
,,y,script,./test.sh -f tsim/query/groupby.sim
|
||||||
|
,,y,script,./test.sh -f tsim/query/groupby_distinct.sim
|
||||||
,,y,script,./test.sh -f tsim/query/event.sim
|
,,y,script,./test.sh -f tsim/query/event.sim
|
||||||
,,y,script,./test.sh -f tsim/query/forceFill.sim
|
,,y,script,./test.sh -f tsim/query/forceFill.sim
|
||||||
,,y,script,./test.sh -f tsim/query/emptyTsRange.sim
|
,,y,script,./test.sh -f tsim/query/emptyTsRange.sim
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
system sh/stop_dnodes.sh
|
||||||
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
sql connect
|
||||||
|
|
||||||
|
|
||||||
|
sql drop database if exists db1;
|
||||||
|
sql create database db1;
|
||||||
|
sql use db1;
|
||||||
|
|
||||||
|
sql create stable sta (ts timestamp, f1 int, f2 binary(200)) tags(t1 int, t2 int, t3 int);
|
||||||
|
sql create table tba1 using sta tags(1, 1, 1);
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:08', 1, "a");
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:07', 1, "b");
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:06', 1, "a");
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:05', 1, "b");
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:04', 1, "c");
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:03', 1, "c");
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:02', 1, "d");
|
||||||
|
sql insert into tba1 values ('2022-04-26 15:15:01', 1, "d");
|
||||||
|
sql select distinct avg(f1) as avgv from sta group by f2;
|
||||||
|
if $rows != 1 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
sql select distinct avg(f1) as avgv from sta group by f2 limit 1,10;
|
||||||
|
if $rows != 0 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
Loading…
Reference in New Issue