diff --git a/tests/army/community/query/query_basic.py b/tests/army/community/query/query_basic.py index 07bf6093c0..f43d96636c 100644 --- a/tests/army/community/query/query_basic.py +++ b/tests/army/community/query/query_basic.py @@ -50,9 +50,24 @@ class TDTestCase(TBase): def doQuery(self): tdLog.info(f"do query.") - # top bottom - sql = f"select top(uti, 5) from {self.stb} " + # __group_key + sql = f"select count(*),_group_key(uti),uti from {self.stb} partition by uti;" tdSql.execute(sql) + tdSql.checkRows(251) + + sql = f"select count(*),_group_key(usi) from {self.stb} group by usi;" + tdSql.execute(sql) + tdSql.checkRows(997) + + # tail + sql1 = "select ts,ui from d0 order by ts desc limit 5 offset 2;" + sql2 = "select ts,tail(ui,5,2) from d0;" + self.checkSameResult(sql1, sql2) + + # uninqe + sql1 = "select distinct uti from d0 order by uti;" + sql2 = "select UNIQUE(uti) from d0 order by uti asc;" + self.checkSameResult(sql1, sql2) # run diff --git a/tests/army/frame/caseBase.py b/tests/army/frame/caseBase.py index 82295d8fdb..fcfcb7d066 100644 --- a/tests/army/frame/caseBase.py +++ b/tests/army/frame/caseBase.py @@ -16,6 +16,7 @@ import os import time import datetime import random +import copy from frame.log import * from frame.sql import * @@ -183,6 +184,46 @@ class TBase: sql = f"select {col} from {self.stb} order by _c0 asc limit 1" tdSql.checkFirstValue(sql, expect) + + # check sql1 is same result with sql2 + def checkSameResult(self, sql1, sql2): + tdLog.info(f"sql1={sql1}") + tdLog.info(f"sql2={sql2}") + tdLog.info("compare sql1 same with sql2 ...") + + # sql + rows1 = tdSql.query(sql1,queryTimes=2) + res1 = copy.deepcopy(tdSql.queryResult) + + tdSql.query(sql2,queryTimes=2) + res2 = tdSql.queryResult + + rowlen1 = len(res1) + rowlen2 = len(res2) + errCnt = 0 + + if rowlen1 != rowlen2: + tdLog.exit(f"both row count not equal. rowlen1={rowlen1} rowlen2={rowlen2} ") + return False + + for i in range(rowlen1): + row1 = res1[i] + row2 = res2[i] + collen1 = len(row1) + collen2 = len(row2) + if collen1 != collen2: + tdLog.exit(f"both col count not equal. collen1={collen1} collen2={collen2}") + return False + for j in range(collen1): + if row1[j] != row2[j]: + tdLog.info(f"error both column value not equal. row={i} col={j} col1={row1[j]} col2={row2[j]} .") + errCnt += 1 + + if errCnt > 0: + tdLog.exit(f"sql2 column value different with sql1. different count ={errCnt} ") + + tdLog.info("sql1 same result with sql2.") + # # get db information #