fix: group by value
This commit is contained in:
parent
fe5af47bf7
commit
2077c9e561
|
@ -359,6 +359,7 @@ static int32_t doSetInputDataBlock(SExprSupp* pExprSup, SSDataBlock* pBlock, int
|
||||||
SFunctParam* pFuncParam = &pOneExpr->base.pParam[j];
|
SFunctParam* pFuncParam = &pOneExpr->base.pParam[j];
|
||||||
if (pFuncParam->type == FUNC_PARAM_TYPE_COLUMN) {
|
if (pFuncParam->type == FUNC_PARAM_TYPE_COLUMN) {
|
||||||
int32_t slotId = pFuncParam->pCol->slotId;
|
int32_t slotId = pFuncParam->pCol->slotId;
|
||||||
|
QUERY_CHECK_CONDITION((slotId < pBlock->pDataBlock->size), code, lino, _end, TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR);
|
||||||
pInput->pData[j] = taosArrayGet(pBlock->pDataBlock, slotId);
|
pInput->pData[j] = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
pInput->totalRows = pBlock->info.rows;
|
pInput->totalRows = pBlock->info.rows;
|
||||||
pInput->numOfRows = pBlock->info.rows;
|
pInput->numOfRows = pBlock->info.rows;
|
||||||
|
|
|
@ -329,16 +329,22 @@ static int32_t calcConstGroupBy(SCalcConstContext* pCxt, SSelectStmt* pSelect) {
|
||||||
if (TSDB_CODE_SUCCESS == code) {
|
if (TSDB_CODE_SUCCESS == code) {
|
||||||
SNode* pNode = NULL;
|
SNode* pNode = NULL;
|
||||||
FOREACH(pNode, pSelect->pGroupByList) {
|
FOREACH(pNode, pSelect->pGroupByList) {
|
||||||
|
bool hasNotValue = false;
|
||||||
SNode* pGroupPara = NULL;
|
SNode* pGroupPara = NULL;
|
||||||
FOREACH(pGroupPara, ((SGroupingSetNode*)pNode)->pParameterList) {
|
FOREACH(pGroupPara, ((SGroupingSetNode*)pNode)->pParameterList) {
|
||||||
if (QUERY_NODE_VALUE != nodeType(pGroupPara)) {
|
if (QUERY_NODE_VALUE != nodeType(pGroupPara)) {
|
||||||
return code;
|
hasNotValue = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!hasNotValue) {
|
||||||
|
if (pSelect->hasAggFuncs) {
|
||||||
|
ERASE_NODE(pSelect->pGroupByList);
|
||||||
|
} else {
|
||||||
|
if (!cell->pPrev && !cell->pNext) continue;
|
||||||
|
ERASE_NODE(pSelect->pGroupByList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
FOREACH(pNode, pSelect->pGroupByList) {
|
|
||||||
if (!cell->pPrev) continue;
|
|
||||||
ERASE_NODE(pSelect->pGroupByList);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -15,6 +15,30 @@ class TDTestCase:
|
||||||
self.batchNum = 5
|
self.batchNum = 5
|
||||||
self.ts = 1537146000000
|
self.ts = 1537146000000
|
||||||
|
|
||||||
|
def groupby_value(self):
|
||||||
|
tdSql.query('select 1 from stb group by now')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 1)
|
||||||
|
tdSql.query('select 1 from stb group by "1"')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 1)
|
||||||
|
tdSql.query('select count(*) from stb group by now')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 12)
|
||||||
|
tdSql.query('select count(*) from stb group by now+1')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 12)
|
||||||
|
tdSql.query('select 1, count(*) from stb group by now, "1"')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 1)
|
||||||
|
tdSql.checkData(0, 1, 12)
|
||||||
|
tdSql.query('select count(*) as cc from sta1 as a join sta2 as b on a.ts = b.ts group by now')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 0, 3)
|
||||||
|
tdSql.query('select a.tbname, count(*) as cc from sta1 as a join sta2 as b on a.ts = b.ts group by a.tbname, "1"')
|
||||||
|
tdSql.checkRows(1)
|
||||||
|
tdSql.checkData(0, 1, 3)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
dbname = "db"
|
dbname = "db"
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
@ -59,6 +83,9 @@ class TDTestCase:
|
||||||
tdSql.checkRows(2)
|
tdSql.checkRows(2)
|
||||||
tdSql.query('select col1 > 0 and col2 > 0 from stb')
|
tdSql.query('select col1 > 0 and col2 > 0 from stb')
|
||||||
tdSql.checkRows(12)
|
tdSql.checkRows(12)
|
||||||
|
|
||||||
|
self.groupby_value()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
tdLog.success("%s successfully executed" % __file__)
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
Loading…
Reference in New Issue