Merge remote-tracking branch 'origin/feat/TS-4243-3.0' into feat/TS-4243-3.0
This commit is contained in:
commit
2dde627237
|
@ -1238,7 +1238,8 @@ int32_t tValueCompare(const SValue *tv1, const SValue *tv2) {
|
|||
T_COMPARE_SCALAR_VALUE(uint64_t, &tv1->val, &tv2->val);
|
||||
case TSDB_DATA_TYPE_GEOMETRY:
|
||||
case TSDB_DATA_TYPE_BINARY: {
|
||||
return strcmp((const char *)tv1->pData, (const char *)tv2->pData);
|
||||
int32_t ret = strncmp((const char *)tv1->pData, (const char *)tv2->pData, TMIN(tv1->nData, tv2->nData));
|
||||
return ret ? ret : (tv1->nData < tv2->nData ? -1 : (tv1->nData > tv2->nData ? 1 : 0));
|
||||
}
|
||||
case TSDB_DATA_TYPE_NCHAR: {
|
||||
int32_t ret = tasoUcs4Compare((TdUcs4 *)tv1->pData, (TdUcs4 *)tv2->pData,
|
||||
|
@ -1286,7 +1287,7 @@ int32_t tRowKeyCompare(const void *p1, const void *p2) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int32_t tRowKeyAssign(SRowKey *pDst, SRowKey* pSrc) {
|
||||
int32_t tRowKeyAssign(SRowKey *pDst, SRowKey *pSrc) {
|
||||
pDst->ts = pSrc->ts;
|
||||
pDst->numOfPKs = pSrc->numOfPKs;
|
||||
|
||||
|
|
|
@ -387,14 +387,14 @@ SSDataBlock* doProjectOperation(SOperatorInfo* pOperator) {
|
|||
pOperator->cost.openCost = (taosGetTimestampUs() - st) / 1000.0;
|
||||
}
|
||||
|
||||
if (pTaskInfo->execModel == OPTR_EXEC_MODEL_STREAM) {
|
||||
printDataBlock(p, getStreamOpName(pOperator->operatorType), GET_TASKID(pTaskInfo));
|
||||
}
|
||||
|
||||
if (pProjectInfo->outputIgnoreGroup) {
|
||||
p->info.id.groupId = 0;
|
||||
}
|
||||
|
||||
if (pTaskInfo->execModel == OPTR_EXEC_MODEL_STREAM) {
|
||||
printDataBlock(p, getStreamOpName(pOperator->operatorType), GET_TASKID(pTaskInfo));
|
||||
}
|
||||
|
||||
return (p->info.rows > 0) ? p : NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#,,n,system-test,python3 ./test.py -f 8-stream/snode_restart.py -N 4
|
||||
,,n,system-test,python3 ./test.py -f 8-stream/snode_restart_with_checkpoint.py -N 4
|
||||
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pk_error.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pk_func.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/pk_func_group.py
|
||||
,,y,system-test,./pytest.sh python3 ./test.py -f 2-query/partition_expr.py
|
||||
|
|
|
@ -0,0 +1,267 @@
|
|||
import sys
|
||||
from util.log import *
|
||||
from util.cases import *
|
||||
from util.sql import *
|
||||
from util.dnodes import tdDnodes
|
||||
from math import inf
|
||||
|
||||
class TDTestCase:
|
||||
def caseDescription(self):
|
||||
'''
|
||||
case1<shenglian zhou>: [TD-]
|
||||
'''
|
||||
return
|
||||
|
||||
def init(self, conn, logSql, replicaVer=1):
|
||||
tdLog.debug("start to execute %s" % __file__)
|
||||
tdSql.init(conn.cursor(), True)
|
||||
self.conn = conn
|
||||
|
||||
def restartTaosd(self, index=1, dbname="db"):
|
||||
tdDnodes.stop(index)
|
||||
tdDnodes.startWithoutSleep(index)
|
||||
tdSql.execute(f"use pk_error")
|
||||
|
||||
def run(self):
|
||||
print("running {}".format(__file__))
|
||||
tdSql.execute("drop database if exists pk_error")
|
||||
tdSql.execute("create database if not exists pk_error")
|
||||
tdSql.execute('use pk_error')
|
||||
tdSql.execute('drop database IF EXISTS d1;')
|
||||
|
||||
tdSql.execute('drop database IF EXISTS d2;')
|
||||
|
||||
tdSql.execute('create database d1 vgroups 1')
|
||||
|
||||
tdSql.execute('use d1;')
|
||||
|
||||
tdSql.execute('create table st(ts timestamp, pk int primary key, f int) tags(t int);')
|
||||
|
||||
tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:00', 1, 1);")
|
||||
|
||||
tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:00', 2, 2);")
|
||||
|
||||
tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:00', 3, 3);")
|
||||
|
||||
tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:00', 4, 4);")
|
||||
|
||||
tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:01', 1, 1);")
|
||||
|
||||
tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:01', 4, 4);")
|
||||
|
||||
tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:01', 3, 3);")
|
||||
|
||||
tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:01', 2, 2);")
|
||||
|
||||
tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:02', 6, 6);")
|
||||
|
||||
tdSql.execute("insert into ct1 using st tags(1) values('2021-04-19 00:00:02', 5, 5);")
|
||||
|
||||
tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:02', 8, 8);")
|
||||
|
||||
tdSql.execute("insert into ct2 using st tags(2) values('2021-04-19 00:00:02', 7, 7);")
|
||||
|
||||
tdSql.query('select first(*) from d1.st partition by t order by t;')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(0, 1, 1)
|
||||
tdSql.checkData(0, 2, 1)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(1, 1, 3)
|
||||
tdSql.checkData(1, 2, 3)
|
||||
|
||||
tdSql.query('select last(*) from d1.st partition by t order by t;')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(0, 1, 6)
|
||||
tdSql.checkData(0, 2, 6)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(1, 1, 8)
|
||||
tdSql.checkData(1, 2, 8)
|
||||
|
||||
tdSql.query('select last_row(*) from d1.st partition by t order by t;')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(0, 1, 6)
|
||||
tdSql.checkData(0, 2, 6)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(1, 1, 8)
|
||||
tdSql.checkData(1, 2, 8)
|
||||
|
||||
tdSql.query('select ts,diff(f) from d1.st partition by t order by t;')
|
||||
tdSql.checkRows(4)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(0, 1, 0)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(1, 1, 4)
|
||||
tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(2, 1, -1)
|
||||
tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(3, 1, 5)
|
||||
|
||||
tdSql.query('select irate(f) from d1.st partition by t order by t;')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, 4.0)
|
||||
tdSql.checkData(1, 0, 5.0)
|
||||
|
||||
tdSql.query('select ts,derivative(f, 1s, 0) from d1.st partition by t order by t;')
|
||||
tdSql.checkRows(4)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(0, 1, 0.0)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(1, 1, 4.0)
|
||||
tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(2, 1, -1.0)
|
||||
tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(3, 1, 5.0)
|
||||
|
||||
tdSql.query('select twa(f) from d1.st partition by t order by t;')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, 2.0)
|
||||
tdSql.checkData(1, 0, 3.5)
|
||||
|
||||
tdSql.query('select ts,pk,unique(f) from d1.st partition by t order by t,ts,pk;')
|
||||
tdSql.checkRows(10)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(0, 1, 1)
|
||||
tdSql.checkData(0, 2, 1)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(1, 1, 2)
|
||||
tdSql.checkData(1, 2, 2)
|
||||
tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(2, 1, 4)
|
||||
tdSql.checkData(2, 2, 4)
|
||||
tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(3, 1, 5)
|
||||
tdSql.checkData(3, 2, 5)
|
||||
tdSql.checkData(4, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(4, 1, 6)
|
||||
tdSql.checkData(4, 2, 6)
|
||||
tdSql.checkData(5, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(5, 1, 3)
|
||||
tdSql.checkData(5, 2, 3)
|
||||
tdSql.checkData(6, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(6, 1, 4)
|
||||
tdSql.checkData(6, 2, 4)
|
||||
tdSql.checkData(7, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(7, 1, 2)
|
||||
tdSql.checkData(7, 2, 2)
|
||||
tdSql.checkData(8, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(8, 1, 7)
|
||||
tdSql.checkData(8, 2, 7)
|
||||
tdSql.checkData(9, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(9, 1, 8)
|
||||
tdSql.checkData(9, 2, 8)
|
||||
|
||||
tdSql.execute('create table nt(ts timestamp, pk int primary key, f int);')
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:00', 1, 1);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:00', 2, 2);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:00', 3, 3);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:00', 4, 4);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:01', 1, 1);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:01', 4, 4);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:01', 3, 3);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:01', 2, 2);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:02', 6, 6);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:02', 5, 5);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:02', 8, 8);")
|
||||
|
||||
tdSql.execute("insert into nt values('2021-04-19 00:00:02', 7, 7);")
|
||||
|
||||
tdSql.query('select first(*) from d1.nt;')
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(0, 1, 1)
|
||||
tdSql.checkData(0, 2, 1)
|
||||
|
||||
tdSql.query('select last(*) from d1.nt;')
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(0, 1, 8)
|
||||
tdSql.checkData(0, 2, 8)
|
||||
|
||||
tdSql.query('select last_row(*) from d1.nt;')
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(0, 1, 8)
|
||||
tdSql.checkData(0, 2, 8)
|
||||
|
||||
tdSql.query('select ts,diff(f) from d1.nt;')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(0, 1, 0)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(1, 1, 4)
|
||||
|
||||
tdSql.query('select irate(f) from d1.nt;')
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, 4.0)
|
||||
|
||||
tdSql.query('select ts,derivative(f, 1s, 0) from d1.nt;')
|
||||
tdSql.checkRows(2)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0, 1))
|
||||
tdSql.checkData(0, 1, 0.0)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(1, 1, 4.0)
|
||||
|
||||
tdSql.query('select twa(f) from d1.nt;')
|
||||
tdSql.checkRows(1)
|
||||
tdSql.checkData(0, 0, 2.0)
|
||||
|
||||
tdSql.query('select ts,pk,unique(f) from d1.nt order by ts,pk;')
|
||||
tdSql.checkRows(8)
|
||||
tdSql.checkData(0, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(0, 1, 1)
|
||||
tdSql.checkData(0, 2, 1)
|
||||
tdSql.checkData(1, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(1, 1, 2)
|
||||
tdSql.checkData(1, 2, 2)
|
||||
tdSql.checkData(2, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(2, 1, 3)
|
||||
tdSql.checkData(2, 2, 3)
|
||||
tdSql.checkData(3, 0, datetime.datetime(2021, 4, 19, 0, 0))
|
||||
tdSql.checkData(3, 1, 4)
|
||||
tdSql.checkData(3, 2, 4)
|
||||
tdSql.checkData(4, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(4, 1, 5)
|
||||
tdSql.checkData(4, 2, 5)
|
||||
tdSql.checkData(5, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(5, 1, 6)
|
||||
tdSql.checkData(5, 2, 6)
|
||||
tdSql.checkData(6, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(6, 1, 7)
|
||||
tdSql.checkData(6, 2, 7)
|
||||
tdSql.checkData(7, 0, datetime.datetime(2021, 4, 19, 0, 0, 2))
|
||||
tdSql.checkData(7, 1, 8)
|
||||
tdSql.checkData(7, 2, 8)
|
||||
|
||||
tdSql.execute('create table st2(ts timestamp, vcpk varchar(64) primary key, f int);')
|
||||
|
||||
tdSql.error('alter table st drop column pk;')
|
||||
|
||||
tdSql.error('alter table nt drop column pk;')
|
||||
|
||||
tdSql.error('alter table st modify column pk bigint;')
|
||||
|
||||
tdSql.error('alter table nt modify column pk bigint;')
|
||||
|
||||
tdSql.error('alter table st2 modify column vcpk varchar(32)')
|
||||
|
||||
tdSql.execute('drop database pk_error')
|
||||
def stop(self):
|
||||
tdSql.close()
|
||||
tdLog.success("%s successfully executed" % __file__)
|
||||
|
||||
tdCases.addWindows(__file__, TDTestCase())
|
||||
tdCases.addLinux(__file__, TDTestCase())
|
Loading…
Reference in New Issue