fix: rewirte to groupkey func
This commit is contained in:
parent
5c64684965
commit
a29ddccb5a
|
@ -3860,10 +3860,7 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
|
|||
SNode* pGroupNode = NULL;
|
||||
FOREACH(pGroupNode, getGroupByList(pCxt)) {
|
||||
SNode* pActualNode = getGroupByNode(pGroupNode);
|
||||
if (nodesEqualNode(pActualNode, *pNode)) {
|
||||
return DEAL_RES_IGNORE_CHILD;
|
||||
}
|
||||
if (IsEqualTbNameFuncNode(pSelect, pActualNode, *pNode)) {
|
||||
if (nodesEqualNode(pActualNode, *pNode) || IsEqualTbNameFuncNode(pSelect, pActualNode, *pNode)) {
|
||||
return rewriteExprToGroupKeyFunc(pCxt, pNode);
|
||||
}
|
||||
if (isTbnameFuction(pActualNode) && QUERY_NODE_COLUMN == nodeType(*pNode) &&
|
||||
|
@ -3893,11 +3890,22 @@ static EDealRes doCheckExprForGroupBy(SNode** pNode, void* pContext) {
|
|||
}
|
||||
}
|
||||
|
||||
if (isScanPseudoColumnFunc(*pNode) || QUERY_NODE_COLUMN == nodeType(*pNode)) {
|
||||
if (((pSelect->selectFuncNum > 1 && pCxt->stableQuery) || (isDistinctOrderBy(pCxt) && pCxt->currClause == SQL_CLAUSE_ORDER_BY)) &&
|
||||
!isRelatedToOtherExpr((SExprNode*)*pNode)) {
|
||||
if (isScanPseudoColumnFunc(*pNode)) {
|
||||
if (((pSelect->selectFuncNum > 1 && pCxt->stableQuery) ||
|
||||
(isDistinctOrderBy(pCxt) && pCxt->currClause == SQL_CLAUSE_ORDER_BY)) &&
|
||||
!isRelatedToOtherExpr((SExprNode*)*pNode)) {
|
||||
return generateDealNodeErrMsg(pCxt, getGroupByErrorCode(pCxt), ((SExprNode*)(*pNode))->userAlias);
|
||||
}
|
||||
}
|
||||
|
||||
if (QUERY_NODE_COLUMN == nodeType(*pNode)) {
|
||||
if (((pSelect->selectFuncNum > 1) || (isDistinctOrderBy(pCxt) && pCxt->currClause == SQL_CLAUSE_ORDER_BY)) &&
|
||||
!isRelatedToOtherExpr((SExprNode*)*pNode)) {
|
||||
return generateDealNodeErrMsg(pCxt, getGroupByErrorCode(pCxt), ((SExprNode*)(*pNode))->userAlias);
|
||||
}
|
||||
}
|
||||
|
||||
if (isScanPseudoColumnFunc(*pNode) || QUERY_NODE_COLUMN == nodeType(*pNode)) {
|
||||
if (isWindowJoinStmt(pSelect) &&
|
||||
(isWindowJoinProbeTableCol(pSelect, *pNode) || isWindowJoinGroupCol(pSelect, *pNode) ||
|
||||
(isWindowJoinSubTbname(pSelect, *pNode)) || isWindowJoinSubTbTag(pSelect, *pNode))) {
|
||||
|
|
|
@ -1082,22 +1082,39 @@ class TDTestCase:
|
|||
tdSql.checkData(3, 1, "2022-09-30 15:15:04")
|
||||
tdSql.checkData(3, 2, "2022-09-30 15:15:04")
|
||||
|
||||
# tdSql.query(f'select tbname, cols(last(ts), ts as ts1), cols(last(f1), ts as ts2) from {dbname}.sta group by tbname;')
|
||||
# tdSql.checkRows(5)
|
||||
# tdSql.checkCols(3)
|
||||
# tdSql.checkData(0, 1, "2022-09-30 15:15:04")
|
||||
# tdSql.checkData(0, 2, "2022-09-30 15:15:03")
|
||||
# tdSql.checkData(1, 1, "2022-09-30 15:15:04")
|
||||
# tdSql.checkData(1, 2, "2022-09-30 15:15:03")
|
||||
# tdSql.checkData(2, 1, "2022-09-30 15:15:04")
|
||||
# tdSql.checkData(2, 2, "2022-09-30 15:15:03")
|
||||
# tdSql.checkData(3, 1, "2022-09-30 15:15:04")
|
||||
# tdSql.checkData(3, 2, "2022-09-30 15:15:03")
|
||||
# tdSql.checkData(4, 1, "2022-09-30 15:15:04")
|
||||
# tdSql.checkData(4, 2, "2022-09-30 15:15:03")
|
||||
tdSql.query(f'select tbname, cols(last(ts), ts as ts1), cols(last(f1), ts as ts2) from {dbname}.sta group by tbname;')
|
||||
tdSql.checkRows(5)
|
||||
tdSql.checkCols(3)
|
||||
tdSql.query(f'select tbname, cols(last(ts), ts as ts1), cols(last(f1), ts as ts2) from {dbname}.sta group by tbname order by ts1;')
|
||||
tdSql.checkRows(5)
|
||||
tdSql.checkCols(3)
|
||||
tdSql.checkData(0, 1, "2022-09-26 15:15:04")
|
||||
tdSql.checkData(0, 2, "2022-09-26 15:15:03")
|
||||
tdSql.checkData(1, 1, "2022-09-27 15:15:04")
|
||||
tdSql.checkData(1, 2, "2022-09-27 15:15:03")
|
||||
tdSql.checkData(2, 1, "2022-09-28 15:15:04")
|
||||
tdSql.checkData(2, 2, "2022-09-28 15:15:03")
|
||||
tdSql.checkData(3, 1, "2022-09-29 15:15:04")
|
||||
tdSql.checkData(3, 2, "2022-09-29 15:15:03")
|
||||
tdSql.checkData(4, 1, "2022-09-30 15:15:04")
|
||||
tdSql.checkData(4, 2, "2022-09-30 15:15:03")
|
||||
|
||||
tdSql.query(f'select t1, cols(last(ts), ts as ts1), cols(last(f1), ts as ts2) from {dbname}.sta group by t1;')
|
||||
tdSql.checkRows(4)
|
||||
tdSql.checkCols(3)
|
||||
tdSql.query(f'select t1, cols(last(ts), ts as ts1), cols(last(f1), ts as ts2) from {dbname}.sta group by t1 order by ts1;')
|
||||
tdSql.checkRows(4)
|
||||
tdSql.checkCols(3)
|
||||
tdSql.checkData(0, 1, "2022-09-26 15:15:04")
|
||||
tdSql.checkData(0, 2, "2022-09-26 15:15:03")
|
||||
tdSql.checkData(1, 1, "2022-09-28 15:15:04")
|
||||
tdSql.checkData(1, 2, "2022-09-28 15:15:03")
|
||||
tdSql.checkData(2, 1, "2022-09-29 15:15:04")
|
||||
tdSql.checkData(2, 2, "2022-09-29 15:15:03")
|
||||
tdSql.checkData(3, 1, "2022-09-30 15:15:04")
|
||||
tdSql.checkData(3, 2, "2022-09-30 15:15:03")
|
||||
|
||||
def run(self):
|
||||
self.test1()
|
||||
self.funcNestTest()
|
||||
self.funcSupperTableTest()
|
||||
self.create_test_data()
|
||||
|
@ -1110,6 +1127,7 @@ class TDTestCase:
|
|||
self.stream_cols_test()
|
||||
self.include_null_test()
|
||||
self.long_column_name_test()
|
||||
self.test1()
|
||||
|
||||
|
||||
def stop(self):
|
||||
|
|
Loading…
Reference in New Issue