Merge branch '3.0' of https://github.com/taosdata/TDengine into enh/tsdb_optimize
This commit is contained in:
commit
5d5add3f4b
|
@ -810,7 +810,7 @@ static int32_t tsdbReaderCreate(SVnode* pVnode, SQueryTableDataCond* pCond, STsd
|
||||||
|
|
||||||
if (pReader->suppInfo.colId[0] != PRIMARYKEY_TIMESTAMP_COL_ID) {
|
if (pReader->suppInfo.colId[0] != PRIMARYKEY_TIMESTAMP_COL_ID) {
|
||||||
tsdbError("the first column isn't primary timestamp, %d, %s", pReader->suppInfo.colId[0], pReader->idStr);
|
tsdbError("the first column isn't primary timestamp, %d, %s", pReader->suppInfo.colId[0], pReader->idStr);
|
||||||
terrno = TSDB_CODE_INVALID_PARA;
|
code = TSDB_CODE_INVALID_PARA;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -819,7 +819,7 @@ static int32_t tsdbReaderCreate(SVnode* pVnode, SQueryTableDataCond* pCond, STsd
|
||||||
if (type != TSDB_DATA_TYPE_TIMESTAMP) {
|
if (type != TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
tsdbError("the first column isn't primary timestamp in result block, actual: %s, %s", tDataTypes[type].name,
|
tsdbError("the first column isn't primary timestamp in result block, actual: %s, %s", tDataTypes[type].name,
|
||||||
pReader->idStr);
|
pReader->idStr);
|
||||||
terrno = TSDB_CODE_INVALID_PARA;
|
code = TSDB_CODE_INVALID_PARA;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4510,7 +4510,7 @@ int32_t tsdbReaderOpen(SVnode* pVnode, SQueryTableDataCond* pCond, void* pTableL
|
||||||
|
|
||||||
_err:
|
_err:
|
||||||
tsdbError("failed to create data reader, code:%s %s", tstrerror(code), idstr);
|
tsdbError("failed to create data reader, code:%s %s", tstrerror(code), idstr);
|
||||||
tsdbReaderClose(pReader);
|
tsdbReaderClose(*ppReader);
|
||||||
*ppReader = NULL; // reset the pointer value.
|
*ppReader = NULL; // reset the pointer value.
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1292,6 +1292,16 @@ static int32_t smaIndexOptFindSmaFunc(SNode* pQueryFunc, SNodeList* pSmaFuncs) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static SNode* smaIndexOptFindWStartFunc(SNodeList* pSmaFuncs) {
|
||||||
|
SNode* pSmaFunc = NULL;
|
||||||
|
FOREACH(pSmaFunc, pSmaFuncs) {
|
||||||
|
if (QUERY_NODE_FUNCTION == nodeType(pSmaFunc) && FUNCTION_TYPE_WSTART == ((SFunctionNode*)pSmaFunc)->funcType) {
|
||||||
|
return pSmaFunc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNodeList* pSmaFuncs,
|
static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNodeList* pSmaFuncs,
|
||||||
SNodeList** pOutput) {
|
SNodeList** pOutput) {
|
||||||
SNodeList* pCols = NULL;
|
SNodeList* pCols = NULL;
|
||||||
|
@ -1299,6 +1309,7 @@ static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNo
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
int32_t index = 0;
|
int32_t index = 0;
|
||||||
int32_t smaFuncIndex = -1;
|
int32_t smaFuncIndex = -1;
|
||||||
|
bool hasWStart = false;
|
||||||
FOREACH(pFunc, pFuncs) {
|
FOREACH(pFunc, pFuncs) {
|
||||||
smaFuncIndex = smaIndexOptFindSmaFunc(pFunc, pSmaFuncs);
|
smaFuncIndex = smaIndexOptFindSmaFunc(pFunc, pSmaFuncs);
|
||||||
if (smaFuncIndex < 0) {
|
if (smaFuncIndex < 0) {
|
||||||
|
@ -1308,11 +1319,35 @@ static int32_t smaIndexOptCreateSmaCols(SNodeList* pFuncs, uint64_t tableId, SNo
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (!hasWStart) {
|
||||||
|
if (PRIMARYKEY_TIMESTAMP_COL_ID == ((SColumnNode*)pCols->pTail->pNode)->colId) {
|
||||||
|
hasWStart = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
++index;
|
++index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS == code && smaFuncIndex >= 0) {
|
if (TSDB_CODE_SUCCESS == code && smaFuncIndex >= 0) {
|
||||||
|
if (!hasWStart) {
|
||||||
|
SNode* pWsNode = smaIndexOptFindWStartFunc(pSmaFuncs);
|
||||||
|
if (!pWsNode) {
|
||||||
|
nodesDestroyList(pCols);
|
||||||
|
code = TSDB_CODE_APP_ERROR;
|
||||||
|
qError("create sma cols failed since %s(_wstart not exist)", tstrerror(code));
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
SExprNode exprNode;
|
||||||
|
exprNode.resType = ((SExprNode*)pWsNode)->resType;
|
||||||
|
sprintf(exprNode.aliasName, "#expr_%d", index + 1);
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
*pOutput = pCols;
|
*pOutput = pCols;
|
||||||
} else {
|
} else {
|
||||||
nodesDestroyList(pCols);
|
nodesDestroyList(pCols);
|
||||||
|
|
|
@ -78,7 +78,7 @@ if $rows != 5 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
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);
|
sql select _wstart, _wend, min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
|
||||||
print $data00 $data01 $data02 $data03 $data04
|
print $data00 $data01 $data02 $data03 $data04
|
||||||
print $data10 $data11 $data12 $data13 $data14
|
print $data10 $data11 $data12 $data13 $data14
|
||||||
|
@ -102,6 +102,30 @@ if $data04 != 20 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
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
|
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);
|
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
|
print $data00 $data01 $data02 $data03 $data04 $data05
|
||||||
|
@ -148,7 +172,7 @@ if $rows != 5 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
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);
|
sql select _wstart, _wend, min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
|
||||||
print $data00 $data01 $data02 $data03 $data04
|
print $data00 $data01 $data02 $data03 $data04
|
||||||
print $data10 $data11 $data12 $data13 $data14
|
print $data10 $data11 $data12 $data13 $data14
|
||||||
|
@ -172,6 +196,30 @@ if $data04 != 20 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
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
|
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);
|
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
|
print $data00 $data01 $data02 $data03 $data04 $data05
|
||||||
|
@ -218,7 +266,7 @@ if $rows != 5 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
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);
|
sql select _wstart, _wend, min(c1),max(c2),max(c1) from stb interval(5m,10s) sliding(5m);
|
||||||
print $data00 $data01 $data02 $data03 $data04
|
print $data00 $data01 $data02 $data03 $data04
|
||||||
if $rows != 1 then
|
if $rows != 1 then
|
||||||
|
@ -241,6 +289,29 @@ if $data04 != 20 then
|
||||||
return -1
|
return -1
|
||||||
endi
|
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
|
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);
|
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
|
print $data00 $data01 $data02 $data03 $data04 $data05
|
||||||
|
|
Loading…
Reference in New Issue