fix: tsdb read and append _wstart for tsma

This commit is contained in:
kailixu 2023-05-22 20:33:29 +08:00
parent f18fc19d76
commit c75aa54a3d
3 changed files with 85 additions and 8 deletions

View File

@ -765,7 +765,7 @@ static int32_t tsdbReaderCreate(SVnode* pVnode, SQueryTableDataCond* pCond, STsd
}
if (VND_IS_TSMA(pVnode)) {
tsdbDebug("vgId:%d, tsma is selected to query, %s", TD_VID(pVnode), idstr);
tsdbInfo("vgId:%d, tsma is selected to query, %s", TD_VID(pVnode), idstr);
}
initReaderStatus(&pReader->status);

View File

@ -1311,8 +1311,13 @@ static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNo
}
if (!hasWStart) {
SColumnNode* pTail = (SColumnNode*)pCols->pTail->pNode;
if (pTail->colId == PRIMARYKEY_TIMESTAMP_COL_ID && pTail->colType == TSDB_DATA_TYPE_TIMESTAMP) {
if (pTail->colId == PRIMARYKEY_TIMESTAMP_COL_ID) {
if (pTail->node.resType.type == TSDB_DATA_TYPE_TIMESTAMP) {
hasWStart = true;
} else {
nodesDestroyList(pCols);
return TSDB_CODE_APP_ERROR;
}
}
}
}
@ -1324,9 +1329,10 @@ static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNo
SExprNode exprNode;
exprNode.resType = ((SExprNode*)pSmaFuncs->pHead->pNode)->resType;
sprintf(exprNode.aliasName, "#expr_%d", index + 1);
code = nodesListMakeStrictAppend(
&pCols, smaIndexOptCreateSmaCol((SNode*)&exprNode, tableId, PRIMARYKEY_TIMESTAMP_COL_ID));
SNode* pkNode = smaIndexOptCreateSmaCol((SNode*)&exprNode, tableId, PRIMARYKEY_TIMESTAMP_COL_ID);
code = nodesListPushFront(pCols, pkNode);
if (TSDB_CODE_SUCCESS != code) {
nodesDestroyNode(pkNode);
nodesDestroyList(pCols);
return code;
}

View File

@ -78,7 +78,7 @@ if $rows != 5 then
return -1
endi
print =============== select * from stb from memory in designated vgroup
print =============== select with _wstart from stb from memory in designated vgroup
sql select _wstart, _wend, min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
@ -102,6 +102,30 @@ if $data04 != 20 then
return -1
endi
print =============== select without _wstart from stb from memory in designated vgroup
sql select min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02
print $data10 $data11 $data12
if $rows != 1 then
print rows $rows != 1
return -1
endi
if $data00 != -13 then
print data00 $data00 != -13
return -1
endi
if $data01 != 20.00000 then
print data01 $data01 != 20.00000
return -1
endi
if $data02 != 20 then
print data02 $data02 != 20
return -1
endi
print =============== select * from stb from memory in common vgroups
sql select _wstart, _wend, min(c1),max(c2),max(c1),max(c3) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02 $data03 $data04 $data05
@ -148,7 +172,7 @@ if $rows != 5 then
return -1
endi
print =============== select * from stb from memory in designated vgroup after reboot
print =============== select with _wstart from stb from memory in designated vgroup after reboot
sql select _wstart, _wend, min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02 $data03 $data04
print $data10 $data11 $data12 $data13 $data14
@ -172,6 +196,30 @@ if $data04 != 20 then
return -1
endi
print =============== select without _wstart from stb from memory in designated vgroup after reboot
sql select min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02
print $data10 $data11 $data12
if $rows != 1 then
print rows $rows != 1
return -1
endi
if $data00 != -13 then
print data00 $data00 != -13
return -1
endi
if $data01 != 20.00000 then
print data01 $data01 != 20.00000
return -1
endi
if $data02 != 20 then
print data02 $data02 != 20
return -1
endi
print =============== select * from stb from memory in common vgroups after reboot
sql select _wstart, _wend, min(c1),max(c2),max(c1),max(c3) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02 $data03 $data04 $data05
@ -218,7 +266,7 @@ if $rows != 5 then
return -1
endi
print =============== select * from stb from file in designated vgroup
print =============== select with _wstart from stb from file in designated vgroup
sql select _wstart, _wend, min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02 $data03 $data04
if $rows != 1 then
@ -241,6 +289,29 @@ if $data04 != 20 then
return -1
endi
print =============== select without _wstart from stb from file in designated vgroup
sql select _wend, min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02 $data03
if $rows != 1 then
print rows $rows != 1
return -1
endi
if $data01 != -13 then
print data01 $data01 != -13
return -1
endi
if $data02 != 20.00000 then
print data02 $data02 != 20.00000
return -1
endi
if $data03 != 20 then
print data03 $data03 != 20
return -1
endi
print =============== select * from stb from file in common vgroups
sql select _wstart, _wend, min(c1),max(c2),max(c1),max(c3) from stb interval(5m,10s) sliding(5m);
print $data00 $data01 $data02 $data03 $data04 $data05