Merge pull request #25293 from taosdata/fix/TS-4632
set winkey for selectivity function
This commit is contained in:
commit
5c9dd6dd72
|
@ -3201,15 +3201,15 @@ static int32_t doSaveTupleData(SSerializeDataHandle* pHandle, const void* pBuf,
|
|||
int32_t saveTupleData(SqlFunctionCtx* pCtx, int32_t rowIndex, const SSDataBlock* pSrcBlock, STuplePos* pPos) {
|
||||
prepareBuf(pCtx);
|
||||
|
||||
SWinKey key;
|
||||
SWinKey key = {0};
|
||||
if (pCtx->saveHandle.pBuf == NULL) {
|
||||
SColumnInfoData* pColInfo = taosArrayGet(pSrcBlock->pDataBlock, 0);
|
||||
if (pColInfo->info.type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||
int64_t skey = *(int64_t*)colDataGetData(pColInfo, rowIndex);
|
||||
|
||||
key.groupId = pSrcBlock->info.id.groupId;
|
||||
key.ts = skey;
|
||||
SColumnInfoData* pColInfo = pCtx->input.pPTS;
|
||||
if (!pColInfo || pColInfo->info.type != TSDB_DATA_TYPE_TIMESTAMP) {
|
||||
pColInfo = taosArrayGet(pSrcBlock->pDataBlock, 0);
|
||||
}
|
||||
ASSERT(pColInfo->info.type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||
key.groupId = pSrcBlock->info.id.groupId;
|
||||
key.ts = *(int64_t*)colDataGetData(pColInfo, rowIndex);;
|
||||
}
|
||||
|
||||
char* buf = serializeTupleData(pSrcBlock, rowIndex, &pCtx->subsidiaries, pCtx->subsidiaries.buf);
|
||||
|
|
|
@ -15,6 +15,8 @@ sql use test3;
|
|||
sql create table t1(ts timestamp, a int, b int , c int, d double);
|
||||
sql create stream streams3 trigger at_once ignore expired 0 ignore update 0 into streamt3 as select _wstart, count(*) c1 from t1 state_window(a);
|
||||
|
||||
sleep 1000
|
||||
|
||||
sql insert into t1 values(1648791211000,1,2,3,1.0);
|
||||
sql insert into t1 values(1648791213000,2,2,3,1.1);
|
||||
sql insert into t1 values(1648791215000,3,2,3,1.1);
|
||||
|
@ -214,4 +216,232 @@ if $data[29][1] != 2 then
|
|||
goto loop11
|
||||
endi
|
||||
|
||||
print step2=============
|
||||
|
||||
sql create database test4 vgroups 4;
|
||||
sql use test4;
|
||||
sql create stable st(ts timestamp,a int,b int,c int,d double) tags(ta int,tb int,tc int);
|
||||
sql create table t1 using st tags(1,1,1);
|
||||
sql create table t2 using st tags(2,2,2);
|
||||
sql create stream streams4 trigger at_once ignore expired 0 ignore update 0 into streamt4 as select _wstart, first(a), b, c, ta, tb from st interval(1s);
|
||||
|
||||
sleep 1000
|
||||
|
||||
sql insert into t1 values(1648791211000,1,2,3,1.0);
|
||||
sql insert into t1 values(1648791213000,2,3,4,1.1);
|
||||
sql insert into t2 values(1648791215000,3,4,5,1.1);
|
||||
sql insert into t2 values(1648791217000,4,5,6,1.1);
|
||||
|
||||
$loop_count = 0
|
||||
|
||||
loop12:
|
||||
|
||||
sleep 200
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print 1 select * from streamt4 order by 1;
|
||||
sql select * from streamt4 order by 1;
|
||||
|
||||
if $rows != 4 then
|
||||
print ======rows=$rows
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
if $data02 != 2 then
|
||||
print ======data02=$data02
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
if $data03 != 3 then
|
||||
print ======data03=$data03
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
if $data04 != 1 then
|
||||
print ======data04=$data04
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
if $data05 != 1 then
|
||||
print ======data05=$data05
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
|
||||
if $data22 != 4 then
|
||||
print ======data22=$data22
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
if $data23 != 5 then
|
||||
print ======data23=$data23
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
if $data24 != 2 then
|
||||
print ======data24=$data24
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
if $data25 != 2 then
|
||||
print ======data25=$data25
|
||||
goto loop12
|
||||
endi
|
||||
|
||||
print step3=============
|
||||
|
||||
sql create database test5 vgroups 4;
|
||||
sql use test5;
|
||||
sql create stable st(ts timestamp,a int,b int,c int,d double) tags(ta int,tb int,tc int);
|
||||
sql create table t1 using st tags(1,1,1);
|
||||
sql create table t2 using st tags(2,2,2);
|
||||
sql create stream streams5 trigger at_once ignore expired 0 ignore update 0 into streamt5 as select _wstart, b, c, ta, tb, max(b) from t1 interval(1s);
|
||||
|
||||
sleep 1000
|
||||
|
||||
sql insert into t1 values(1648791211000,1,2,3,1.0);
|
||||
sql insert into t1 values(1648791213000,2,3,4,1.1);
|
||||
sql insert into t1 values(1648791215000,3,4,5,1.1);
|
||||
sql insert into t1 values(1648791217000,4,5,6,1.1);
|
||||
|
||||
$loop_count = 0
|
||||
|
||||
loop13:
|
||||
|
||||
sleep 200
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print 1 select * from streamt5 order by 1;
|
||||
sql select * from streamt5 order by 1;
|
||||
|
||||
if $rows != 4 then
|
||||
print ======rows=$rows
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
if $data01 != 2 then
|
||||
print ======data02=$data02
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
if $data02 != 3 then
|
||||
print ======data03=$data03
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
if $data03 != 1 then
|
||||
print ======data04=$data04
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
if $data04 != 1 then
|
||||
print ======data05=$data05
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
|
||||
if $data21 != 4 then
|
||||
print ======data22=$data22
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
if $data22 != 5 then
|
||||
print ======data23=$data23
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
if $data23 != 1 then
|
||||
print ======data24=$data24
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
if $data24 != 1 then
|
||||
print ======data25=$data25
|
||||
goto loop13
|
||||
endi
|
||||
|
||||
print step4=============
|
||||
|
||||
sql create database test6 vgroups 4;
|
||||
sql use test6;
|
||||
sql create stable st(ts timestamp,a int,b int,c int,d double) tags(ta int,tb int,tc int);
|
||||
sql create table t1 using st tags(1,1,1);
|
||||
sql create table t2 using st tags(2,2,2);
|
||||
sql create stream streams6 trigger at_once ignore expired 0 ignore update 0 into streamt6 as select _wstart, b, c,min(c), ta, tb from st interval(1s);
|
||||
|
||||
sleep 1000
|
||||
|
||||
sql insert into t1 values(1648791211000,1,2,3,1.0);
|
||||
sql insert into t1 values(1648791213000,2,3,4,1.1);
|
||||
sql insert into t2 values(1648791215000,3,4,5,1.1);
|
||||
sql insert into t2 values(1648791217000,4,5,6,1.1);
|
||||
|
||||
$loop_count = 0
|
||||
|
||||
loop14:
|
||||
|
||||
sleep 200
|
||||
|
||||
$loop_count = $loop_count + 1
|
||||
if $loop_count == 10 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
print 1 select * from streamt6 order by 1;
|
||||
sql select * from streamt6 order by 1;
|
||||
|
||||
if $rows != 4 then
|
||||
print ======rows=$rows
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
if $data01 != 2 then
|
||||
print ======data02=$data02
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
if $data02 != 3 then
|
||||
print ======data03=$data03
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
if $data04 != 1 then
|
||||
print ======data04=$data04
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
if $data05 != 1 then
|
||||
print ======data05=$data05
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
|
||||
if $data21 != 4 then
|
||||
print ======data22=$data22
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
if $data22 != 5 then
|
||||
print ======data23=$data23
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
if $data24 != 2 then
|
||||
print ======data24=$data24
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
if $data25 != 2 then
|
||||
print ======data25=$data25
|
||||
goto loop14
|
||||
endi
|
||||
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
Loading…
Reference in New Issue