fix: some columns sma are not set issue
This commit is contained in:
parent
a732ec7b3c
commit
4167e4c00c
|
@ -4507,6 +4507,7 @@ static void doFillNullColSMA(SBlockLoadSuppInfo* pSup, int32_t numOfRows, int32_
|
|||
int32_t i = 0, j = 0;
|
||||
int32_t size = (int32_t)taosArrayGetSize(pSup->pColAgg);
|
||||
taosArrayInsert(pSup->pColAgg, 0, pTsAgg);
|
||||
size++;
|
||||
|
||||
while (j < numOfCols && i < size) {
|
||||
SColumnDataAgg* pAgg = taosArrayGet(pSup->pColAgg, i);
|
||||
|
@ -4519,10 +4520,20 @@ static void doFillNullColSMA(SBlockLoadSuppInfo* pSup, int32_t numOfRows, int32_
|
|||
if (pSup->colId[j] != PRIMARYKEY_TIMESTAMP_COL_ID) {
|
||||
SColumnDataAgg nullColAgg = {.colId = pSup->colId[j], .numOfNull = numOfRows};
|
||||
taosArrayInsert(pSup->pColAgg, i, &nullColAgg);
|
||||
i += 1;
|
||||
}
|
||||
j += 1;
|
||||
}
|
||||
}
|
||||
|
||||
while (j < numOfCols) {
|
||||
if (pSup->colId[j] != PRIMARYKEY_TIMESTAMP_COL_ID) {
|
||||
SColumnDataAgg nullColAgg = {.colId = pSup->colId[j], .numOfNull = numOfRows};
|
||||
taosArrayInsert(pSup->pColAgg, i, &nullColAgg);
|
||||
i += 1;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t tsdbRetrieveDatablockSMA(STsdbReader* pReader, SSDataBlock* pDataBlock, bool* allHave) {
|
||||
|
@ -4602,8 +4613,8 @@ int32_t tsdbRetrieveDatablockSMA(STsdbReader* pReader, SSDataBlock* pDataBlock,
|
|||
} else if (pAgg->colId < pSup->colId[j]) {
|
||||
i += 1;
|
||||
} else if (pSup->colId[j] < pAgg->colId) {
|
||||
// ASSERT(pSup->colId[j] == PRIMARYKEY_TIMESTAMP_COL_ID);
|
||||
pResBlock->pBlockAgg[pSup->slotId[j]] = &pSup->tsColAgg;
|
||||
pResBlock->pBlockAgg[pSup->slotId[j]] = NULL;
|
||||
*allHave = false;
|
||||
j += 1;
|
||||
}
|
||||
}
|
||||
|
@ -4996,4 +5007,4 @@ void tsdbUntakeReadSnap(STsdbReader* pReader, STsdbReadSnap* pSnap, bool proacti
|
|||
void tsdbReaderSetId(STsdbReader* pReader, const char* idstr) {
|
||||
taosMemoryFreeClear(pReader->idStr);
|
||||
pReader->idStr = taosStrdup(idstr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -871,6 +871,7 @@
|
|||
,,y,script,./test.sh -f tsim/query/emptyTsRange.sim
|
||||
,,y,script,./test.sh -f tsim/query/partitionby.sim
|
||||
,,y,script,./test.sh -f tsim/query/tableCount.sim
|
||||
,,y,script,./test.sh -f tsim/query/nullColSma.sim
|
||||
,,y,script,./test.sh -f tsim/qnode/basic1.sim
|
||||
,,y,script,./test.sh -f tsim/snode/basic1.sim
|
||||
,,y,script,./test.sh -f tsim/mnode/basic1.sim
|
||||
|
|
|
@ -0,0 +1,139 @@
|
|||
system sh/stop_dnodes.sh
|
||||
system sh/deploy.sh -n dnode1 -i 1
|
||||
system sh/exec.sh -n dnode1 -s start
|
||||
sql connect
|
||||
|
||||
$dbPrefix = m_in_db
|
||||
$tbPrefix = m_in_tb
|
||||
$mtPrefix = m_in_mt
|
||||
$tbNum = 1
|
||||
$rowNum = 200
|
||||
$totalNum = 400
|
||||
|
||||
print =============== step1
|
||||
$i = 0
|
||||
$db = $dbPrefix . $i
|
||||
$mt = $mtPrefix . $i
|
||||
|
||||
sql drop database if exists $db
|
||||
sql create database $db vgroups 1 maxrows 200 minrows 10;
|
||||
sql use $db
|
||||
sql create table $mt (ts timestamp, f1 int, f2 float) TAGS(tgcol int)
|
||||
|
||||
print ====== start create child tables and insert data
|
||||
$i = 0
|
||||
while $i < $tbNum
|
||||
$tb = $tbPrefix . $i
|
||||
sql create table $tb using $mt tags( $i )
|
||||
|
||||
$x = 0
|
||||
while $x < $rowNum
|
||||
$cc = $x * 1
|
||||
$ms = 1601481600000 + $cc
|
||||
|
||||
sql insert into $tb values ($ms , NULL , $x )
|
||||
$x = $x + 1
|
||||
endw
|
||||
|
||||
$i = $i + 1
|
||||
endw
|
||||
|
||||
$i = 1
|
||||
$tb = $tbPrefix . $i
|
||||
sql create table $tb using $mt tags( $i )
|
||||
|
||||
$x = 0
|
||||
while $x < $rowNum
|
||||
$cc = $x * 1
|
||||
$ms = 1601481600000 + $cc
|
||||
|
||||
sql insert into $tb values ($ms , $x , NULL )
|
||||
$x = $x + 1
|
||||
endw
|
||||
|
||||
sql flush database $db
|
||||
|
||||
print =============== step2
|
||||
$i = 0
|
||||
$tb = $tbPrefix . $i
|
||||
sql select max(f1) from $tb
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
if $data00 != NULL then
|
||||
return -1
|
||||
endi
|
||||
|
||||
$i = 1
|
||||
$tb = $tbPrefix . $i
|
||||
sql select max(f2) from $tb
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
if $data00 != NULL then
|
||||
return -1
|
||||
endi
|
||||
|
||||
$rowNum = 10
|
||||
|
||||
print ====== insert more data
|
||||
$i = 0
|
||||
while $i < $tbNum
|
||||
$tb = $tbPrefix . $i
|
||||
|
||||
$x = 0
|
||||
while $x < $rowNum
|
||||
$cc = $x * 1
|
||||
$ms = 1601481700000 + $cc
|
||||
|
||||
sql insert into $tb values ($ms , $x , $x )
|
||||
$x = $x + 1
|
||||
endw
|
||||
|
||||
$i = $i + 1
|
||||
endw
|
||||
|
||||
$i = 1
|
||||
$tb = $tbPrefix . $i
|
||||
$x = 0
|
||||
while $x < $rowNum
|
||||
$cc = $x * 1
|
||||
$ms = 1601481700000 + $cc
|
||||
|
||||
sql insert into $tb values ($ms , $x , $x )
|
||||
$x = $x + 1
|
||||
endw
|
||||
|
||||
sql flush database $db
|
||||
|
||||
print =============== step3
|
||||
$i = 0
|
||||
$tb = $tbPrefix . $i
|
||||
sql select max(f1) from $tb
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
if $data00 != 9 then
|
||||
return -1
|
||||
endi
|
||||
|
||||
$i = 1
|
||||
$tb = $tbPrefix . $i
|
||||
sql select max(f2) from $tb
|
||||
if $rows != 1 then
|
||||
return -1
|
||||
endi
|
||||
if $data00 != 9.00000 then
|
||||
print $data00
|
||||
return -1
|
||||
endi
|
||||
|
||||
|
||||
print =============== clear
|
||||
#sql drop database $db
|
||||
#sql select * from information_schema.ins_databases
|
||||
#if $rows != 0 then
|
||||
# return -1
|
||||
#endi
|
||||
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
Loading…
Reference in New Issue