Merge branch '3.0' into feature/TD-11274-3.0
This commit is contained in:
commit
bb82cb0ef4
|
@ -52,7 +52,7 @@ TDengine的主要功能如下:
|
|||
采用 TDengine,可将典型的物联网、车联网、工业互联网大数据平台的总拥有成本大幅降低。表现在几个方面:
|
||||
|
||||
1. 由于其超强性能,它能将系统需要的计算资源和存储资源大幅降低
|
||||
2. 因为采用 SQL 接口,能与众多第三放软件无缝集成,学习迁移成本大幅下降
|
||||
2. 因为采用 SQL 接口,能与众多第三方软件无缝集成,学习迁移成本大幅下降
|
||||
3. 因为其 All In One 的特性,系统复杂度降低,能降研发成本
|
||||
4. 因为运维维护简单,运营维护成本能大幅降低
|
||||
|
||||
|
|
|
@ -884,9 +884,17 @@ static int32_t createDistinctLogicNode(SLogicPlanContext* pCxt, SSelectStmt* pSe
|
|||
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
// set grouyp keys, agg funcs and having conditions
|
||||
pAgg->pGroupKeys = nodesCloneList(pSelect->pProjectionList);
|
||||
if (NULL == pAgg->pGroupKeys) {
|
||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
SNodeList* pGroupKeys = NULL;
|
||||
SNode* pProjection = NULL;
|
||||
FOREACH(pProjection, pSelect->pProjectionList) {
|
||||
code = nodesListMakeStrictAppend(&pGroupKeys, createGroupingSetNode(pProjection));
|
||||
if (TSDB_CODE_SUCCESS != code) {
|
||||
nodesDestroyList(pGroupKeys);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (TSDB_CODE_SUCCESS == code) {
|
||||
pAgg->pGroupKeys = pGroupKeys;
|
||||
}
|
||||
|
||||
// rewrite the expression in subsequent clauses
|
||||
|
|
|
@ -2149,7 +2149,16 @@ static bool tagScanMayBeOptimized(SLogicNode* pNode) {
|
|||
planOptNodeListHasCol(pAgg->pGroupKeys) || !planOptNodeListHasTbname(pAgg->pGroupKeys)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
SNode* pGroupKey = NULL;
|
||||
FOREACH(pGroupKey, pAgg->pGroupKeys) {
|
||||
SNode* pGroup = NULL;
|
||||
FOREACH(pGroup, ((SGroupingSetNode*)pGroupKey)->pParameterList) {
|
||||
if (QUERY_NODE_COLUMN != nodeType(pGroup)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
import random
|
||||
import string
|
||||
from datetime import datetime
|
||||
from util import constant
|
||||
from util.log import *
|
||||
from util.cases import *
|
||||
|
@ -55,7 +56,7 @@ class TDTestCase:
|
|||
else:
|
||||
tdLog.exit(f'{col_name} data check failure')
|
||||
elif col_type.lower() == 'timestamp':
|
||||
tdSql.checkEqual(str(tdSql.queryResult[0][0]),str(datetime.datetime.fromtimestamp(value/1000).strftime("%Y-%m-%d %H:%M:%S.%f")))
|
||||
tdSql.checkEqual(str(tdSql.queryResult[0][0]),str(datetime.fromtimestamp(value/1000).strftime("%Y-%m-%d %H:%M:%S.%f")))
|
||||
else:
|
||||
tdSql.checkEqual(tdSql.queryResult[0][0],value)
|
||||
def update_and_check_data(self,tbname,col_name,col_type,value,dbname):
|
||||
|
@ -242,8 +243,11 @@ class TDTestCase:
|
|||
self.error_check(self.ctbname,self.column_dict,'ctb',self.stbname)
|
||||
|
||||
def run(self):
|
||||
self.update_check()
|
||||
self.update_check_error()
|
||||
#!bug TD-17708 and TD-17709
|
||||
# for i in range(10):
|
||||
self.update_check()
|
||||
self.update_check_error()
|
||||
# i+=1
|
||||
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
|
|
|
@ -222,9 +222,9 @@ class TDTestCase:
|
|||
if vgroups_num >= 2:
|
||||
tdLog.info(f'This scene with {vgroups_num} vgroups is ok!')
|
||||
continue
|
||||
else:
|
||||
tdLog.exit(
|
||||
'This scene does not meet the requirements with {vgroups_num} vgroup!\n')
|
||||
# else:
|
||||
# tdLog.exit(
|
||||
# f'This scene does not meet the requirements with {vgroups_num} vgroup!\n')
|
||||
|
||||
for i in range(self.tbnum):
|
||||
for j in range(self.rowNum):
|
||||
|
|
|
@ -62,8 +62,7 @@ python3 ./test.py -f 2-query/char_length.py -R
|
|||
python3 ./test.py -f 2-query/check_tsdb.py
|
||||
python3 ./test.py -f 2-query/check_tsdb.py -R
|
||||
|
||||
|
||||
python3 ./test.py -f 1-insert/update_data.py
|
||||
# python3 ./test.py -f 1-insert/update_data.py
|
||||
|
||||
python3 ./test.py -f 1-insert/delete_data.py
|
||||
python3 ./test.py -f 2-query/db.py
|
||||
|
|
Loading…
Reference in New Issue